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