تحتوي حزمة تطوير البرامج (SDK) لخدمة Google Cloud Search على العديد من مَعلمات الإعداد التي توفّرها 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 هي 1000 وقيمة batchSize هي 5، يجب أن تكون قيمة maxActiveBatches 250. وتمثل القيمة الخمسين الإضافية مخزنًا مؤقتًا لطلبات إعادة المحاولة. تتيح هذه الزيادة للموصل تجميع كل الطلبات بدون حظر. |
traverse.threadPoolSize |
عدد السلاسل التي ينشئها الموصل للسماح بالمعالجة المتوازية. يجلب مكرر واحد العمليات (كائنات RepositoryDoc عادةً) بشكل تسلسلي، ولكن تتم معالجة طلبات البيانات من واجهة برمجة التطبيقات بالتوازي باستخدام عدد threadPoolSize من سلاسل المحادثات. تعالج كل سلسلة محادثات عنصرًا واحدًا في كل مرة. أما القيمة التلقائية التي تبلغ 50، فتعمل على 50 عنصرًا كحد أقصى في وقت واحد، وتستغرق معالجة عنصر فردي 4 ثوانٍ تقريبًا (بما في ذلك طلب الفهرسة). |
50 | حاوِل زيادة قيمة threadPoolSize بضرب 10. |
أخيرًا، ننصحك باستخدام الطريقة setRequestMode()
لتغيير وضع طلب البيانات من واجهة برمجة التطبيقات (إما 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، المطلوب الانتظار قبل إعادة الاقتراع . يستمر موصِّل المحتوى في استطلاع العناصر طالما تعرض واجهة برمجة التطبيقات العناصر في الردّ على الاستطلاع. عندما يكون الردّ على الاستطلاع فارغًا، ينتظر الموصِّل لمدة s ثانية قبل إعادة المحاولة. يقتصر استخدام هذا الإعداد على ListingConnector فقط. | 10 | جرِّب خفضها إلى 1. |
traverser.t1.pollRequest.statuses = status1, status2, … | تحدّد الحالات، status1 وstatus2 و…، من العناصر المطلوب فهرستها. على سبيل المثال، يؤدي ضبط status1 على NEW_ITEM وstatus2 على MODIFIED إلى توجيه أداة التمرير t1 لفهرسة العناصر التي تحمل هذه الحالات فقط. | يتحقق عاصف واحد من جميع الحالات | يمكنك تجربة استخدام استطلاع مختلف لاجتيازات الاختبار حسب الحالات المختلفة. |
للحصول على معلومات إضافية عن مَعلمات ملف الإعداد، راجِع مَعلمات الإعداد التي توفّرها Google.
انتهاء مهلة حزمة تطوير البرامج (SDK) أو مقاطعتها أثناء تحميل الملفات الكبيرة
إذا حدثت مشكلة في انتهاء مهلة حزمة تطوير البرامج (SDK) أو حدثت انقطاعات أثناء تحميل ملفات كبيرة،
حدِّد مهلة أكبر باستخدام
traverser.timeout=s
(حيث يكون s = عدد الثواني). تحدد هذه القيمة المدة التي يجب أن
تستغرقها خيوط العمال لمعالجة عنصر ما. إنّ المهلة التلقائية في حزمة تطوير البرامج (SDK) هي 60 ثانية لسلاسل محادثات أداة الاجتياز. بالإضافة إلى ذلك، إذا واجهت طلبات فردية من واجهة برمجة التطبيقات،
يمكنك استخدام الطرق التالية لزيادة قيم مهلة الطلب:
مَعلمة انتهاء مهلة الطلب | الوصف | تلقائي |
---|---|---|
indexingService.connectTimeoutSeconds |
مهلة الاتصال لفهرسة طلبات البيانات من واجهة برمجة التطبيقات | 120 ثانية. |
indexingService.readTimeoutSeconds |
مهلة قراءة طلبات البيانات من واجهة برمجة التطبيقات | 120 ثانية. |