כוונון הגדרות המחבר

‏Google Cloud Search SDK מכיל כמה פרמטרים של הגדרות שסופקו על ידי Google, שבהם משתמשים כל המחברים. אם תדעו איך לשנות את ההגדרות האלה, תוכלו לשפר משמעותית את הוספת הנתונים לאינדקס. במדריך הזה מפורטות כמה בעיות שעשויות להתרחש במהלך ההוספה לאינדקס, וההגדרות שאפשר להשתמש בהן כדי לפתור אותן.

קצב העברת הנתונים להוספה לאינדקס נמוך ב-FullTraversalConnector

בטבלה הבאה מפורטות הגדרות אישיות לשיפור הקצב של FullTraversalConnector:

הגדרה תיאור ברירת מחדל שינוי ההגדרה שאפשר לנסות
traverse.partitionSize מספר ה-ApiOperation() שיעבדו באצווה לפני אחזור APIOperation() נוספים. ה-SDK ממתין לעיבוד של המחיצה הנוכחית לפני שהוא מאחזר פריטים נוספים. ההגדרה הזו תלויה בכמות הזיכרון שזמינה. מחיצות בגודל קטן יותר, כמו 50 או 100, דורשות פחות זיכרון אבל זמן המתנה ארוך יותר מצד ה-SDK. 50 אם יש לכם הרבה זיכרון פנוי, נסו להגדיל את הערך של partitionSize ל-1,000 או יותר.
batch.batchSize מספר הבקשות שנשלחו בקבוצה. בסיום חלוקת המחיצות, ה-SDK ממתין לעיבוד של כל הבקשות בקבוצה מהמחיצה. קבוצות גדולות יותר של קבצים דורשות זמן המתנה ארוך יותר. 10 כדאי לנסות להקטין את גודל האצווה.
batch.maxActiveBatches מספר האשכולות המותרים לביצוע בו-זמנית. 20 אם מורידים את הערך של batchSize, צריך להגדיל את הערך של maxActiveBatches לפי הנוסחה הבאה:

maxActiveBatches = (partitionSize / batchSize) + 50. לדוגמה, אם הערך של partititionSize הוא 1,000 והערך של batchSize הוא 5, הערך של maxActiveBatches צריך להיות 250. 50 הבקשות הנוספות הן מאגר לניסיון חוזר של בקשות. הגדלת המכסה הזו מאפשרת למחבר לאסוף את כל הבקשות בקבוצה אחת ללא חסימה.
traverse.threadPoolSize מספר השרשוריים שהמחבר יוצר כדי לאפשר עיבוד מקביל. איטרטור יחיד מאחזר פעולות (בדרך כלל אובייקטים מסוג RepositoryDoc) באופן טורי, אבל הקריאות ל-API מעובדות במקביל באמצעות מספר חוטים של threadPoolSize. כל שרשור מעבד פריט אחד בכל פעם. אם תגדירו את הערך 50 כברירת מחדל, המערכת תעבד בו-זמנית עד 50 פריטים בלבד, ותהליך העיבוד של פריט בודד (כולל הבקשה להוספה לאינדקס) נמשך כ-4 שניות. 50 כדאי לנסות להגדיל את threadPoolSize בכפולה של 10.

לבסוף, כדאי להשתמש ב-method‏ setRequestMode() כדי לשנות את מצב הבקשה ל-API (ASYNCHRONOUS או SYNCHRONOUS).

מידע נוסף על פרמטרים של קובץ תצורה זמין במאמר פרמטרים של תצורה שסופקו על ידי Google.

קצב העברת הנתונים להוספה לאינדקס נמוך ב-ListTraversalConnector

כברירת מחדל, מחבר שמטמיע את ListTraversalConnnector משתמש ב-traverser יחיד כדי להוסיף את הפריטים לאינדקס. כדי להגדיל את תפוקת ההוספה לאינדקס, אפשר ליצור כמה מודלים של סריקה, לכל אחד מהם הגדרה משלו שמתמקדת בסטטוסים ספציפיים של פריטים (NEW_ITEM, ‏ MODIFIED וכו'). בטבלה הבאה מפורטות הגדרות אישיות לשיפור הקצב של העברת הנתונים:

.
הגדרהתיאורברירת מחדלשינוי ההגדרה שאפשר לנסות
repository.traversers = t1, t2, t3, ...יצירת טרנסור בודד או יותר, כאשר t1, t2, t3, ... הוא השם הייחודי של כל אחד מהם. לכל כלי סריקה בעל שם יש קבוצה משלו של הגדרות, שזוהו באמצעות השם הייחודי של כלי הסריקה, כמו traversers.t1.hostload ו-traversers.t2.hostload.טרנסור אחדמשתמשים בהגדרה הזו כדי להוסיף עוד כלי סריקה
traversers.t1.hostload = nמזהה את מספר השרשור, n, שישמש להוספת פריטים לאינדקס בו-זמנית.5אפשר להתנסות בהתאמה של n בהתאם לעומס שרוצים להפעיל על המאגר. כדאי להתחיל עם ערכים של 10 ומעלה.
schedule.pollQueueIntervalSecs = sמספר השניות, s, להמתנה לפני ביצוע סבב נוסף של סקרים . מחבר התוכן ממשיך לבצע סקרים של פריטים כל עוד ה-API מחזיר פריטים בתשובה לסקרים. אם התשובה לאיסוף הנתונים ריקה, המחבר ממתין s שניות לפני שהוא מנסה שוב. ההגדרה הזו משמשת רק את ListingConnector10כדאי לנסות להקטין את הערך ל-1.
traverser.t1.pollRequest.statuses = status1, status2, …מציין את הסטטוסים status1,‏ status2,‏ של הפריטים שרוצים להוסיף לאינדקס. לדוגמה, הגדרת status1 ל-NEW_ITEM ו-status2 ל-MODIFIED מורה לכלי הניווט t1 להוסיף לאינדקס רק פריטים עם הסטטוסים האלה.בודק אחד בודק את כל הסטטוסיםכדאי לנסות להשתמש במודלים שונים של סריקה כדי לבדוק סטטוסים שונים.

מידע נוסף על פרמטרים של קובץ תצורה זמין במאמר פרמטרים של תצורה שסופקו על ידי Google.

ערכות SDK שנגמרות או מופסקות במהלך העלאת קבצים גדולים

אם חל תוקף זמן קצוב או הפסקה ב-SDK במהלך העלאת קבצים גדולים, צריך לציין זמן קצוב ארוך יותר באמצעות traverser.timeout=s (כאשר s = מספר השניות). הערך הזה מציין כמה זמן לוקח לשרשראות העבודה לעבד פריט. הזמן הקצוב לתפוגה שמוגדר כברירת מחדל ב-SDK הוא 60 שניות לשרשראות של כלי הניווט. בנוסף, אם חל זמן קצוב לתפוגה של בקשות API מסוימות, תוכלו להשתמש בשיטות הבאות כדי להגדיל את ערכי הזמן הקצוב לתפוגה של הבקשות:

פרמטר של זמן קצוב לבקשה תיאור ברירת מחדל
indexingService.connectTimeoutSeconds זמן קצוב לתפוגה של חיבור לבקשות API להוספה לאינדקס. 120 שניות.
indexingService.readTimeoutSeconds זמן קצוב לתפוגה לקריאה של בקשות API להוספה לאינדקס. 120 שניות.