7

में समवर्ती अनुरोध आधिकारिक एपेंगेन दस्तावेज कहता है कि यदि हम app.yaml में थ्रेडसेफ संपत्ति को सत्य में सेट करते हैं तो एपेंगिन सर्वर समवर्ती अनुरोध करेगा।एपेंगेन पायथन

आधिकारिक लिंक: https://developers.google.com/appengine/docs/python/python27/newin27#Concurrent_Requests

  • यह मतलब यह है आवेदन तेजी से (2.5 की तुलना में) हो सकता है अगर हम सही करने के लिए threadsafe संपत्ति है? आधिकारिक दस्तावेज/ब्लॉग ऐसा कहता है लेकिन मैं असली दुनिया के अनुभवों की तलाश में हूं।

  • हाईलेवल पर, यह आंतरिक रूप से कैसे काम करता है? क्या हमारे आवेदन को प्रत्येक अनुरोध के लिए शुरू किया जाएगा और एक नया जोड़ा जाएगा?

उत्तर

10

आपके पास अभी भी केवल एक थ्रेड प्रति अनुरोध है - आप स्पॉन नहीं कर सकते हैं।

थ्रेडसेफ के साथ, एपेंगिन केवल एक अनुरोध के लिए एक अनुरोध रूट करेगा। इसलिए यदि अनुरोध को संभालने का समय प्रति सेकंड अनुरोधों की संख्या एक के पास आता है, तो ऐपेंगिन उन्हें संभालने के लिए एक नया उदाहरण स्पिन करेगा। यह लागत पैसे। थ्रेडसेफ के साथ, एपेंगिन एक उदाहरण के लिए एक से अधिक अनुरोधों को रूट कर सकता है।

क्या यह आप में मदद करता है या आपका ऐप्लिकेशन नहीं और अपने यातायात पर निर्भर करता है:

  1. पहले, दूसरे/औसत विलंबता प्रति भीतर का अनुरोध गणना। यदि यह एक के तहत अच्छी तरह से है, तो थ्रेडसेफ किसी भी तरह से कोई फर्क नहीं पड़ेगा।
  2. एपीआई (डाटास्टोर या उदाहरण के लिए यूआरएल लाने) पर कितना समय व्यतीत करता है यह जानने के लिए अपने ऐप की जांच करें। यदि यह एक बड़ा अनुपात है, तो थ्रेडसेफ आपके उदाहरण को गिनने में मदद करेगा। यदि नहीं, तो इससे ज्यादा मदद नहीं मिलेगी।

सरल नियम तब तक थ्रेडसेफ स्विच करता है जब तक कि आपका ऐप बहुत प्रोसेसिंग-गहन (छोटा एपीआई प्रतीक्षा नहीं) हो।

+0

महान उत्तर! एक सवाल, मैं req/ms x ms/req ~ = सक्रिय उदाहरण संख्या महसूस करता हूं। क्या इस संदर्भ के लिए कोई विवरण अधिक विवरण का वर्णन करता है? – lucemia

4
  1. इसका यह मतलब नहीं है कि आपके आवेदन तेजी से, अनुरोध अभी भी एक एकल थ्रेड से सेवा कर रहे हैं हो जाएगा।
  2. जब एप्लिकेशन थ्रेड सुरक्षित होता है तो प्रत्येक इंस्टेंस अब कई थ्रेड स्पंज कर सकता है प्रत्येक थ्रेड गैर थ्रेड सुरक्षित के रूप में अनुरोध के रूप में अनुरोध करेगा, जहां प्रत्येक इंस्टेंस में एक थ्रेड सेवारत अनुरोध होते हैं।
+0

मेरा आवेदन थ्रेड सुरक्षित है (कोई साझा स्थिति नहीं है), क्या मुझे प्रदर्शन में सुधार के लिए एकाधिक धागे पैदा करना चाहिए? क्या एपेंगेन के लिए कोई उदाहरण उपलब्ध है? – 18bytes

3

पायथन 2.5 अभी भी थोड़ा तेज़ है, प्रति अनुरोध आधार पर, पायथन 2.7 की तुलना में। यह आंशिक रूप से प्रत्येक परिपक्व होने के कारण आंशिक रूप से है। ऐप इंजन उनमें से प्रत्येक का समर्थन करने के लिए विभिन्न तंत्र का उपयोग करता है। पायथन 2.7 के साथ जीत पाइथन 2.5 द्वारा लोड स्पाइक्स को संभालने के लिए आवश्यक दर पर नए उदाहरणों को कताई करने के बजाय समानांतर अनुरोधों का समर्थन करने की क्षमता है।

"यह आंतरिक रूप से कैसे काम करता है" प्रश्न यह है कि आपको शायद यहां कोई जवाब नहीं मिलेगा, लेकिन पिछले साल के Google I/O से कुछ वार्ताएं हैं जो संकेत देती हैं कि हम क्या करते हैं और क्यों। "ऐप इंजन" के लिए youtube.com खोजें।

0

मैं यहां एक उत्तर जोड़ रहा हूं क्योंकि हमारे वर्तमान असली दुनिया के परिणाम हम अपेक्षा करते हैं।

निरंतर प्रदर्शन में गिरावट के बाद, हमने अपने (पायथन) ऐप को वापस गैर-थ्रेडसेफ मोड में स्विच करने का प्रयास किया और हमारे प्रदर्शन को लगभग 10x तक सुधारने के लिए आश्चर्यचकित हुए। तो हमने इसे छोड़ दिया है। हमारी जीएई समर्थन टीम यह समझाने में सक्षम नहीं थी कि यह कैसे हो सकता है।पिछली बार जब हमने प्रोफाइल किया था, हम डेटास्टोर से काफी I/O बंधे थे और सिद्धांत में बहु-थ्रेडिंग से बहुत अधिक लिफ्ट प्राप्त होनी चाहिए थी।

तो हमारे अनुभव से ... न केवल थ्रेडसेफ तेजी से माना जाएगा, यह बहुत धीमा हो सकता है। अगर कोई जानता है कि यह कैसे हो सकता है, तो कृपया साझा करें।

संबंधित मुद्दे