कनेक्टर की सेटिंग को ट्यून करें

Google Cloud Search SDK में, Google के कई कॉन्फ़िगरेशन पैरामीटर होते हैं. इनका इस्तेमाल सभी कनेक्टर करते हैं. इन सेटिंग को ट्यून करने का तरीका जानने से, डेटा को इंडेक्स करने की प्रोसेस को बेहतर बनाया जा सकता है. इस गाइड में, इंडेक्स करने के दौरान आ सकने वाली कई समस्याओं और उन्हें ठीक करने के लिए इस्तेमाल की जाने वाली सेटिंग के बारे में बताया गया है.

FullTraversalConnector के लिए, इंडेक्स करने की दर कम है

नीचे दी गई टेबल में, FullTraversalConnector के लिए, थ्रूपुट को बेहतर बनाने के लिए कॉन्फ़िगरेशन सेटिंग की सूची दी गई है:

सेटिंग ब्यौरा डिफ़ॉल्ट कॉन्फ़िगरेशन में बदलाव करने की कोशिश करना
traverse.partitionSize अतिरिक्त APIOperation() फ़ेच करने से पहले, एक साथ प्रोसेस किए जाने वाले ApiOperation() की संख्या. एसडीके टूल, ज़्यादा आइटम फ़ेच करने से पहले, मौजूदा पार्टीशन के प्रोसेस होने का इंतज़ार करता है. यह सेटिंग, उपलब्ध मेमोरी पर निर्भर करती है. 50 या 100 जैसे छोटे पार्टीशन साइज़ के लिए, कम मेमोरी की ज़रूरत होती है. हालांकि, SDK टूल के लिए ज़्यादा इंतज़ार करना पड़ता है. 50 अगर आपके पास ज़्यादा मेमोरी उपलब्ध है, तो partitionSize को 1,000 या उससे ज़्यादा पर सेट करें.
batch.batchSize एक साथ किए गए अनुरोधों की संख्या. पार्टीशन करने के बाद, SDK टूल, पार्टीशन से बैच में किए गए सभी अनुरोधों के प्रोसेस होने का इंतज़ार करता है. बड़े बैच के लिए, ज़्यादा इंतज़ार करना पड़ता है. 10 बैच का साइज़ कम करके देखें.
batch.maxActiveBatches एक साथ कितने बैच चलाए जा सकते हैं. 20 अगर batchSize को कम किया जाता है, तो आपको इस फ़ॉर्मूला के हिसाब से maxActiveBatches को बढ़ाना चाहिए:

maxActiveBatches = (partitionSize / batchSize) + 50. उदाहरण के लिए, अगर आपका partititionSize 1,000 और batchSize 5 है, तो आपका maxActiveBatches 250 होना चाहिए. 50 अतिरिक्त क्वेरी, फिर से कोशिश करने के अनुरोधों के लिए बफ़र होती हैं. इस बढ़ोतरी की मदद से, कनेक्टर बिना ब्लॉक किए सभी अनुरोधों को एक साथ भेज सकता है.
traverse.threadPoolSize कनेक्टर, पैरलल प्रोसेसिंग की सुविधा देने के लिए उतनी ही थ्रेड बनाता है जितनी डेटा की लाइनों को प्रोसेस करना है. एक इटरेटटर, ऑपरेशन (आम तौर पर RepositoryDoc ऑब्जेक्ट) को सीरियल क्रम में फ़ेच करता है. हालांकि, एपीआई कॉल threadPoolSize थ्रेड का इस्तेमाल करके, एक साथ प्रोसेस करता है. हर थ्रेड एक बार में एक आइटम को प्रोसेस करता है. डिफ़ॉल्ट रूप से, एक साथ ज़्यादा से ज़्यादा 50 आइटम प्रोसेस किए जा सकते हैं. साथ ही, किसी एक आइटम को प्रोसेस करने में करीब चार सेकंड लगते हैं. इसमें इंडेक्स करने का अनुरोध भी शामिल है. 50 threadPoolSize को 10 के गुणज से बढ़ाकर देखें.

आखिर में, एपीआई अनुरोध मोड (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 थ्रेड की संख्या की पहचान करता है.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 सेकंड.