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