توليف الإعدادات

تحتوي حزمة تطوير البرامج (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 ثانية.