کیت توسعه نرمافزاری جستجوی ابری گوگل (Google Cloud Search SDK) شامل چندین پارامتر پیکربندی ارائه شده توسط گوگل است که توسط همه رابطها استفاده میشود. دانستن نحوه تنظیم این تنظیمات میتواند نمایهسازی دادهها را تا حد زیادی ساده کند. این راهنما چندین مشکل را که ممکن است در طول نمایهسازی رخ دهد و تنظیمات مورد استفاده برای حل آنها را فهرست میکند.
توان عملیاتی ایندکسگذاری برای FullTraversalConnector پایین است.
جدول زیر تنظیمات پیکربندی برای بهبود توان عملیاتی برای FullTraversalConnector را فهرست میکند:
| تنظیم | توضیحات | پیشفرض | تغییر پیکربندی برای امتحان کردن |
|---|---|---|---|
traverse.partitionSize | تعداد ApiOperation() که باید قبل از دریافت APIOperation() اضافی، به صورت دستهای پردازش شوند. SDK قبل از دریافت موارد اضافی، منتظر پردازش پارتیشن فعلی میماند. این تنظیم به میزان حافظه موجود بستگی دارد. اندازههای پارتیشن کوچکتر، مانند ۵۰ یا ۱۰۰، به حافظه کمتری نیاز دارند اما از طرف SDK به زمان انتظار بیشتری نیاز دارند. | ۵۰ | اگر حافظه زیادی در دسترس دارید، سعی کنید partitionSize به ۱۰۰۰ یا بیشتر افزایش دهید. |
batch.batchSize | تعداد درخواستهای دستهبندیشده با هم. در پایان پارتیشنبندی، SDK منتظر میماند تا تمام درخواستهای دستهبندیشده از پارتیشن پردازش شوند. دستههای بزرگتر نیاز به زمان انتظار بیشتری دارند. | ۱۰ | سعی کنید اندازه دسته را کاهش دهید. |
batch.maxActiveBatches | تعداد دستههای مجاز اجرای همزمان. | ۲۰ | اگر batchSize کاهش دهید، باید maxActiveBatches طبق این فرمول افزایش دهید: maxActiveBatches = (partitionSize / batchSize ) + 50. برای مثال، اگر partititionSize شما 1000 و batchSize شما 5 باشد، maxActiveBatches شما باید 250 باشد. 50 عدد اضافی، بافری برای درخواستهای تلاش مجدد است. این افزایش به کانکتور اجازه میدهد تا تمام درخواستها را بدون مسدود شدن، دسته بندی کند. |
traverse.threadPoolSize | تعداد نخهایی که کانکتور برای پردازش موازی ایجاد میکند. یک تکرارکننده واحد، عملیات (معمولاً اشیاء RepositoryDoc ) را به صورت سریالی واکشی میکند، اما API با استفاده از threadPoolSize تعداد نخها را به صورت موازی فراخوانی میکند. هر نخ در هر زمان یک مورد را پردازش میکند. مقدار پیشفرض ۵۰، حداکثر ۵۰ مورد را به طور همزمان پردازش میکند و پردازش یک مورد واحد (شامل درخواست اندیسگذاری) تقریباً ۴ ثانیه طول میکشد. | ۵۰ | سعی کنید threadPoolSize با مضربی از 10 افزایش دهید. |
در نهایت، استفاده از متد setRequestMode() را برای تغییر حالت درخواست API ( ASYNCHRONOUS یا SYNCHRONOUS ) در نظر بگیرید.
برای اطلاعات بیشتر در مورد پارامترهای فایل پیکربندی، به پارامترهای پیکربندی ارائه شده توسط گوگل مراجعه کنید.
توان عملیاتی ایندکسگذاری برای ListTraversalConnector پایین است.
به طور پیشفرض، کانکتوری که ListTraversalConnnector را پیادهسازی میکند، از یک پیمایشگر واحد برای فهرستبندی اقلام شما استفاده میکند. برای افزایش توان عملیاتی فهرستبندی، میتوانید چندین پیمایشگر ایجاد کنید که هر کدام پیکربندی خاص خود را داشته باشند و بر وضعیتهای خاص اقلام ( NEW_ITEM ، MODIFIED و غیره) تمرکز کنند. جدول زیر تنظیمات پیکربندی را برای بهبود توان عملیاتی فهرست میکند:
| تنظیم | توضیحات | پیشفرض | تغییر پیکربندی برای امتحان کردن |
|---|---|---|---|
repository.traversers = t1, t2, t3, ... | یک یا چند پیمایشگر مجزا ایجاد میکند که در آن t1, t2, t3, ... نام منحصر به فرد هر یک است. هر پیمایشگر نامگذاری شده مجموعه تنظیمات خاص خود را دارد که با استفاده از نام منحصر به فرد پیمایشگر شناسایی میشوند، مانند traversers. t1 .hostload و traversers. t2 .hostload | یک مسافر | از این تنظیم برای اضافه کردن تراورسهای اضافی استفاده کنید |
traversers. t1 .hostload = n | تعداد رشتهها، n ، را که برای فهرستبندی همزمان آیتمها استفاده میشوند، مشخص میکند. | ۵ | بسته به میزان باری که میخواهید روی مخزن خود قرار دهید، n را تنظیم کنید. با مقادیر ۱۰ یا بالاتر شروع کنید. |
schedule.pollQueueIntervalSecs = s | تعداد ثانیهها، s ، را برای انتظار قبل از رایگیری مجدد مشخص میکند. رابط محتوا تا زمانی که API موارد را در پاسخ رایگیری برگرداند، به رایگیری از موارد ادامه میدهد. وقتی پاسخ رایگیری خالی باشد، رابط قبل از تلاش مجدد، به مدت s ثانیه منتظر میماند. این تنظیم فقط توسط ListingConnector استفاده میشود. | ۱۰ | سعی کنید به ۱ کاهش دهید. |
traverser. t1 .pollRequest.statuses = status1 , status2 , … | وضعیتهای status1 ، status2 ، … اقلامی را که باید ایندکس شوند، مشخص میکند. برای مثال، تنظیم status1 روی NEW_ITEM و status2 روی MODIFIED به پیمایشگر t1 دستور میدهد که فقط اقلامی را که این وضعیتها را دارند، ایندکس کند. | یک پیمایشگر همه وضعیتها را بررسی میکند | با نظرسنجی از مسافران مختلف برای وضعیتهای مختلف، آزمایش کنید. |
برای اطلاعات بیشتر در مورد پارامترهای فایل پیکربندی، به پارامترهای پیکربندی ارائه شده توسط گوگل مراجعه کنید.
وقفهها یا وقفههای SDK هنگام آپلود فایلهای بزرگ
اگر هنگام آپلود فایلهای بزرگ با وقفه یا تایم اوت SDK مواجه شدید، با استفاده از دستور زیر، تایم اوت بزرگتری را مشخص کنید. traverser.timeout= s (که در آن s = تعداد ثانیهها). این مقدار مشخص میکند که نخهای کارگر چه مدت زمانی باید یک مورد را پردازش کنند. زمان انتظار پیشفرض در SDK برای نخهای پیمایشگر 60 ثانیه است. علاوه بر این، اگر با زمان انتظار درخواستهای API جداگانه مواجه شدید، از روشهای زیر برای افزایش مقادیر زمان انتظار درخواست استفاده کنید:
| پارامتر زمان درخواست | توضیحات | پیشفرض |
|---|---|---|
indexingService.connectTimeoutSeconds | برای ایندکس کردن درخواستهای API، زمان انقضا را وصل کنید. | ۱۲۰ ثانیه. |
indexingService.readTimeoutSeconds | زمان انقضای مربوط به ایندکس کردن درخواستهای API را بخوانید. | ۱۲۰ ثانیه. |