গুগল ক্লাউড সার্চ এসডিকেতে গুগল-সরবরাহকৃত বেশ কিছু কনফিগারেশন প্যারামিটার রয়েছে যা সমস্ত সংযোগকারী ব্যবহার করে। এই সেটিংস কীভাবে টিউন করতে হয় তা জানা থাকলে ডেটার ইন্ডেক্সিং ব্যাপকভাবে সহজতর হতে পারে। এই নির্দেশিকাটিতে ইন্ডেক্সিংয়ের সময় উদ্ভূত হতে পারে এমন বেশ কয়েকটি সমস্যা এবং সেগুলি সমাধানের জন্য ব্যবহৃত সেটিংস তালিকাভুক্ত করা হয়েছে।
FullTraversalConnector-এর জন্য ইনডেক্সিং থ্রুপুট কম
নিম্নলিখিত টেবিলে একটি FullTraversalConnector- এর থ্রুপুট উন্নত করার জন্য কনফিগারেশন সেটিংস তালিকাভুক্ত করা হয়েছে:
| বিন্যাস | বিবরণ | ডিফল্ট | কনফিগারেশন পরিবর্তন করে দেখুন |
|---|---|---|---|
traverse.partitionSize | অতিরিক্ত APIOperation() আনার আগে ব্যাচে কতগুলি ApiOperation() প্রক্রিয়া করতে হবে। অতিরিক্ত আইটেম আনার আগে SDK বর্তমান পার্টিশন প্রক্রিয়া করার জন্য অপেক্ষা করে। এই সেটিংটি উপলব্ধ মেমোরির পরিমাণের উপর নির্ভর করে। 50 বা 100 এর মতো ছোট পার্টিশনের আকারের জন্য কম মেমোরি প্রয়োজন কিন্তু SDK এর পক্ষে বেশি অপেক্ষা করতে হয়। | ৫০ | যদি আপনার প্রচুর মেমোরি থাকে, তাহলে partitionSize ১০০০ বা তার বেশি করার চেষ্টা করুন। |
batch.batchSize | একসাথে ব্যাচ করা অনুরোধের সংখ্যা। পার্টিশন করার শেষে SDK পার্টিশন থেকে সমস্ত ব্যাচ করা অনুরোধ প্রক্রিয়া করার জন্য অপেক্ষা করে। বড় ব্যাচগুলির জন্য আরও দীর্ঘ অপেক্ষা করতে হয়। | ১০ | ব্যাচের আকার কমানোর চেষ্টা করুন। |
batch.maxActiveBatches | একযোগে কার্যকর করা অনুমোদিত ব্যাচের সংখ্যা। | ২০ | যদি আপনি batchSize কম করেন, তাহলে আপনাকে এই সূত্র অনুসারে maxActiveBatches বাম্প করতে হবে: maxActiveBatches = (partitionSize / batchSize ) + 50। উদাহরণস্বরূপ, যদি আপনার partititionSize 1000 হয় এবং আপনার batchSize 5 হয়, তাহলে আপনার maxActiveBatches 250 হওয়া উচিত। অতিরিক্ত 50 হল পুনরায় চেষ্টা করার অনুরোধের জন্য একটি বাফার। এই বৃদ্ধি সংযোগকারীকে ব্লক না করেই সমস্ত অনুরোধ ব্যাচ করতে দেয়। |
traverse.threadPoolSize | সমান্তরাল প্রক্রিয়াকরণের জন্য সংযোগকারী কতগুলি থ্রেড তৈরি করে। একটি একক ইটারেটর ধারাবাহিকভাবে অপারেশন (সাধারণত RepositoryDoc অবজেক্ট) আনে, কিন্তু API threadPoolSize ব্যবহার করে সমান্তরালভাবে প্রক্রিয়াকরণ কল করে। প্রতিটি থ্রেড একবারে একটি আইটেম প্রক্রিয়া করে। 50 এর ডিফল্ট মান একই সাথে সর্বাধিক 50 টি আইটেম প্রক্রিয়া করবে এবং একটি পৃথক আইটেম (ইনডেক্সিং অনুরোধ সহ) প্রক্রিয়া করতে প্রায় 4 সেকেন্ড সময় লাগে। | ৫০ | threadPoolSize ১০ এর গুণিতক দিয়ে বাড়ানোর চেষ্টা করুন। |
অবশেষে, API অনুরোধ মোড ( ASYNCHRONOUS অথবা SYNCHRONOUS ) পরিবর্তন করার জন্য setRequestMode() পদ্ধতি ব্যবহার করার কথা বিবেচনা করুন।
কনফিগারেশন ফাইল প্যারামিটার সম্পর্কে অতিরিক্ত তথ্যের জন্য, 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 , সনাক্ত করে। | ৫ | আপনার রিপোজিটরিতে কতটা লোড রাখতে চান তার উপর ভিত্তি করে n টিউনিং করে পরীক্ষা করুন। 10 বা তার বেশি মান দিয়ে শুরু করুন। |
schedule.pollQueueIntervalSecs = s | পুনঃভোট দেওয়ার আগে অপেক্ষা করার জন্য সেকেন্ডের সংখ্যা, s , চিহ্নিত করে। যতক্ষণ API পোল প্রতিক্রিয়ায় আইটেমগুলি ফেরত দেয় ততক্ষণ কন্টেন্ট সংযোগকারী আইটেমগুলি পোল করতে থাকে। যখন পোল প্রতিক্রিয়া খালি থাকে, তখন সংযোগকারী আবার চেষ্টা করার আগে s সেকেন্ড অপেক্ষা করে। এই সেটিংটি শুধুমাত্র ListingConnector দ্বারা ব্যবহৃত হয়। | ১০ | ১ এ নামিয়ে চেষ্টা করুন। |
traverser. t1 .pollRequest.statuses = status1 , status2 , … | ইনডেক্স করার জন্য আইটেমগুলির স্ট্যাটাস, status1 , status2 , … , নির্দিষ্ট করে। উদাহরণস্বরূপ, status1 কে NEW_ITEM এবং status2 কে MODIFIED এ সেট করলে ট্র্যাভারসার t1 শুধুমাত্র সেই স্ট্যাটাসগুলির সাথে আইটেমগুলিকে ইনডেক্স করার নির্দেশ দেওয়া হয়। | একজন ট্র্যাভারসার সকল স্ট্যাটাস পরীক্ষা করে। | বিভিন্ন স্ট্যাটাসের জন্য বিভিন্ন ট্র্যাভার্সার পোল ব্যবহার করে পরীক্ষা করুন। |
কনফিগারেশন ফাইল প্যারামিটার সম্পর্কে অতিরিক্ত তথ্যের জন্য, Google-এর সরবরাহকৃত কনফিগারেশন প্যারামিটার দেখুন।
বড় ফাইল আপলোড করার সময় SDK টাইমআউট বা বাধাপ্রাপ্ত হয়
যদি আপনি বড় ফাইল আপলোড করার সময় SDK টাইমআউট অনুভব করেন বা বাধা পান, তাহলে ব্যবহার করে একটি বৃহত্তর টাইমআউট নির্দিষ্ট করুন traverser.timeout= s (যেখানে s = সেকেন্ডের সংখ্যা)। এই মানটি নির্ধারণ করে যে কর্মী থ্রেডগুলিকে একটি আইটেম প্রক্রিয়া করতে কত সময় লাগে। SDK-তে ডিফল্ট টাইমআউট হল ট্র্যাভার্সার থ্রেডের জন্য 60 সেকেন্ড। অতিরিক্তভাবে, যদি আপনি পৃথক API অনুরোধের টাইমআউট অনুভব করেন, তাহলে অনুরোধের টাইমআউট মান বাড়ানোর জন্য নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করুন:
| অনুরোধের সময়সীমা শেষ হওয়ার প্যারামিটার | বিবরণ | ডিফল্ট |
|---|---|---|
indexingService.connectTimeoutSeconds | ইন্ডেক্সিং API অনুরোধের জন্য সংযোগের সময়সীমা শেষ। | ১২০ সেকেন্ড। |
indexingService.readTimeoutSeconds | ইন্ডেক্সিং API অনুরোধের জন্য পড়ার সময়সীমা। | ১২০ সেকেন্ড। |