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

تحتوي حزمة تطوير البرامج (SDK) لخدمة Google Cloud Search على العديد من معلَمات الإعداد المتوفّرة من 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 من العناصر) بشكل تسلسلي، ولكن تتم معالجة طلبات البيانات من واجهة برمجة التطبيقات بالتوازي باستخدام عدد 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 ثانية.