कई ऐसी स्थितियां हो सकती हैं जिनमें प्रोफ़ाइल कलेक्शन, उम्मीद के मुताबिक काम नहीं करता:
- सिस्टम में गड़बड़ी की वजह से प्रोफ़ाइल कलेक्शन नहीं बनाया जा सका. अगर ऐसा होता है, तो
ProfilingResult
एपीआई आपको गड़बड़ियों के बारे में बताता है. - अनुरोधों की संख्या सीमित होने की वजह से, प्रोफ़ाइल कलेक्शन पूरा नहीं हो सका. ज़्यादा जानकारी के लिए, दर सीमित करने की सुविधा कैसे काम करती है लेख पढ़ें
- प्रोफ़ाइल कलेक्शन पूरा हो जाता है, लेकिन ऐप्लिकेशन को इसकी सूचना तुरंत नहीं मिलती.
ऐसा तब हो सकता है, जब लंबी प्रोफ़ाइल कलेक्शन के दौरान ऐप्लिकेशन क्रैश हो जाए. ऐप्लिकेशन बंद होने पर, सिस्टम प्रोफ़ाइल को अपने-आप बंद कर देता है और उसे सेव कर लेता है. जब ऐप्लिकेशन रीस्टार्ट होता है, तब उसे इकट्ठा की गई प्रोफ़ाइल के बारे में सूचना दी जाती है. साथ ही, वह
ProfilingManager
के साथ एक सामान्य लिसनर रजिस्टर करता है.
रेट लिमिट करने की सुविधा कैसे काम करती है
ProfilingManager
में, अलग-अलग ऐप्लिकेशन और पूरे सिस्टम, दोनों के लिए रेट लिमिटर शामिल होता है. रेट लिमिटर, ऐप्लिकेशन को बहुत ज़्यादा सिस्टम संसाधनों का इस्तेमाल करने से रोकता है. ऐसा इसलिए, क्योंकि यह बहुत ज़्यादा प्रोफ़ाइलें रिकॉर्ड करता है. पूरे प्रोफ़ाइलिंग सेशन में बहुत ज़्यादा संसाधनों का इस्तेमाल होता है.
ऐप्लिकेशन और सिस्टम, दोनों ही रेट लिमिटर, इकट्ठा की गई हर तरह की प्रोफ़ाइल के लिए लागत तय करते हैं. ऐसा इसलिए, क्योंकि कुछ प्रोफ़ाइलें अन्य प्रोफ़ाइलों की तुलना में ज़्यादा संसाधन इस्तेमाल करती हैं. ऐप्लिकेशन लिमिटर यह तय करता है कि कोई ऐप्लिकेशन, अपनी कुल लागत के आधार पर कितना डेटा रिकॉर्ड कर सकता है. हालांकि, सिस्टम लिमिटर, सभी ऐप्लिकेशन से रिकॉर्ड की गई सभी प्रोफ़ाइलों की कुल लागत को कंट्रोल करता है.
रेट लिमिटर, हर ऐप्लिकेशन के लिए कुल लागत तय करता है. यह लागत सभी ऐप्लिकेशन के लिए एक जैसी होती है. हर प्रोफ़ाइल, इस कुल लागत का कुछ हिस्सा इस्तेमाल करती है. यह इस बात पर निर्भर करता है कि प्रोफ़ाइल किस तरह की है.
रेट लिमिटर, तीन समयावधियों का इस्तेमाल करता है:
- हर घंटे के हिसाब से: हर घंटे के हिसाब से ज़्यादा से ज़्यादा लागत तय की जा सकती है.
- हर दिन: हर दिन के लिए, ज़्यादा से ज़्यादा लागत तय की जाती है.
- हर हफ़्ते: हर हफ़्ते के लिए, ज़्यादा से ज़्यादा लागत तय की जाती है.
रेट लिमिटर, कुल लागत तय करता है. इस लागत का इस्तेमाल इन सभी अवधियों में किया जा सकता है. उदाहरण के लिए, किसी ऐप्लिकेशन को हर घंटे X, हर दिन Y, और हर हफ़्ते Z प्रोफ़ाइलें रिकॉर्ड करने की अनुमति दी जा सकती है. अगर आपका ऐप्लिकेशन इनमें से किसी भी अवधि में सीमा तक पहुंच जाता है, तो आने वाले समय में प्रोफ़ाइल के अनुरोधों पर ERROR_FAILED_RATE_LIMIT_PROCESS
गड़बड़ी दिखेगी.
ये समयावधियां, सिस्टम-लेवल पर दर सीमित करने के लिए एक जैसी होती हैं. हालांकि, सिस्टम रेट लिमिटर एक ग्लोबल लिमिट है, जिसे सभी ऐप्लिकेशन के साथ शेयर किया जाता है. यह सीमा, हर ऐप्लिकेशन के कोटे से अलग सेट की जाती है. हालांकि, हर प्रोफ़ाइल इसमें योगदान देती है. इसके लिए, हर घंटे, हर दिन, और हर हफ़्ते की अवधि का इस्तेमाल किया जाता है. अगर यह ग्लोबल सीमा पार हो जाती है, तो आपको ERROR_FAILED_RATE_LIMIT_SYSTEM
गड़बड़ी का मैसेज मिलेगा.