Google Cloud Search SDK حاوی چندین پارامتر پیکربندی ارائه شده توسط Google است که توسط همه رابطها استفاده میشود. دانستن نحوه تنظیم این تنظیمات می تواند نمایه سازی داده ها را بسیار ساده کند. این راهنما چندین مشکل را که می تواند در طول نمایه سازی ظاهر شود و تنظیمات مورد استفاده برای حل آنها فهرست می کند.
توان نمایه سازی برای FullTraversalConnector کم است
جدول زیر تنظیمات پیکربندی را برای بهبود توان عملیاتی FullTraversalConnector فهرست میکند:
تنظیم | توضیحات | پیش فرض | تغییر پیکربندی برای امتحان |
---|---|---|---|
traverse.partitionSize | تعداد ApiOperation() که باید قبل از واکشی APIOperation() اضافی به صورت دسته ای پردازش شوند. SDK قبل از واکشی موارد اضافی منتظر می ماند تا پارتیشن فعلی پردازش شود. این تنظیم به مقدار حافظه موجود بستگی دارد. اندازههای پارتیشن کوچکتر، مانند 50 یا 100، به حافظه کمتری نیاز دارند اما انتظار بیشتری از طرف SDK دارند. | 50 | اگر حافظه زیادی در دسترس دارید، سعی کنید partitionSize به 1000 یا بیشتر افزایش دهید. |
batch.batchSize | تعداد درخواست ها با هم. در پایان پارتیشن بندی، SDK منتظر می ماند تا تمام درخواست های دسته ای از پارتیشن پردازش شوند. دسته های بزرگتر نیاز به صبر طولانی تری دارند. | 10 | سعی کنید اندازه دسته را کاهش دهید. |
batch.maxActiveBatches | تعداد دسته های مجاز در حال اجرای همزمان. | 20 | اگر batchSize کاهش دهید، باید maxActiveBatches طبق فرمول زیر افزایش دهید: maxActiveBatches = (partitionSize / batchSize ) + 50. برای مثال اگر partititionSize شما 1000 و batchSize شما 5 است، maxActiveBatches شما باید 250 باشد. 50 اضافی یک بافر برای درخواست های مجدد است. این افزایش به کانکتور اجازه می دهد تا همه درخواست ها را بدون مسدود کردن دسته بندی کند. |
traverse.threadPoolSize | تعداد رشته هایی که رابط ایجاد می کند تا امکان پردازش موازی را فراهم کند. یک تکرار کننده واحد عملیات (معمولاً اشیاء RepositoryDoc ) را به صورت سریال واکشی می کند، اما API فرآیند را به صورت موازی با استفاده از تعداد رشته های threadPoolSize فراخوانی می کند. هر رشته یک مورد را در یک زمان پردازش می کند. پیشفرض 50 حداکثر تنها 50 مورد را به طور همزمان پردازش میکند و پردازش یک مورد جداگانه (از جمله درخواست نمایهسازی) تقریباً 4 ثانیه طول میکشد. | 50 | سعی کنید threadPoolSize مضربی از 10 افزایش دهید. |
در نهایت، استفاده از متد setRequestMode()
را برای تغییر حالت درخواست API (اعم از ASYNCHRONOUS
یا SYNCHRONOUS
) در نظر بگیرید.
برای اطلاعات بیشتر در مورد پارامترهای فایل پیکربندی، به پارامترهای پیکربندی ارائه شده توسط Google مراجعه کنید.
توان نمایه سازی برای ListTraversalConnector کم است
بهطور پیشفرض، کانکتوری که ListTraversalConnnector را پیادهسازی میکند، از یک تراورسر واحد برای فهرستبندی موارد شما استفاده میکند. برای افزایش توان نمایه سازی، می توانید چندین تراورس ایجاد کنید که هر کدام با پیکربندی خاص خود روی وضعیت های مورد خاص تمرکز دارند ( 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 ثانیه منتظر می ماند. این تنظیم فقط توسط ListingConnector استفاده می شود | 10 | سعی کنید به 1 کاهش دهید. |
traverser. t1 .pollRequest.statuses = status1 , status2 , … | وضعیت ها، status1 ، status2 ، … مواردی که باید فهرست شوند را مشخص می کند. برای مثال، تنظیم status1 روی NEW_ITEM و status2 روی MODIFIED به traverser t1 دستور میدهد که فقط موارد با آن وضعیتها را فهرست کند. | یک تراورس تمام وضعیت ها را بررسی می کند | با داشتن نظرسنجی تراورس های مختلف برای وضعیت های مختلف آزمایش کنید. |
برای اطلاعات بیشتر در مورد پارامترهای فایل پیکربندی، به پارامترهای پیکربندی ارائه شده توسط Google مراجعه کنید.
SDK در حین آپلود فایل های حجیم وقفه یا وقفه ایجاد می کند
اگر در حین آپلود فایلهای بزرگ با وقفهای در SDK مواجه شدید، با استفاده از وقفه زمانی بزرگتری تعیین کنید. traverser.timeout= s
(که در آن s = تعداد ثانیه ها). این مقدار مشخص می کند که نخ های کارگر چه مدت باید یک آیتم را پردازش کنند. مدت زمان پیشفرض در SDK 60 ثانیه برای رشتههای تراورسر است. بهعلاوه، اگر با اتمام زمان درخواستهای API منفرد مواجه شدید، از روشهای زیر برای افزایش مقادیر مهلت درخواست استفاده کنید:
درخواست پارامتر مهلت زمانی | توضیحات | پیش فرض |
---|---|---|
indexingService.connectTimeoutSeconds | برای نمایه سازی درخواست های API، وقفه اتصال. | 120 ثانیه. |
indexingService.readTimeoutSeconds | خواندن مهلت زمانی برای نمایه سازی درخواست های API. | 120 ثانیه. |