पृष्ठभूमि:पायथन: कोड के टुकड़े के लिए आप सीपीयू खपत कैसे पा सकते हैं?
मैं एक Django आवेदन, यह काम करता है और कम लोड पर बहुत अच्छी तरह से प्रतिक्रिया करता है, लेकिन 100 उपयोगकर्ता/सेकंड की तरह उच्च लोड पर, यह तो कमी के कारण सीपीयू और 100% की खपत के सीपीयू को धीमा कर देती है ।
समस्या:
- आवेदन रूपरेखा मुझे कार्यों द्वारा उठाए गए समय देता है।
- इस बार उच्च लोड पर बढ़ता है।
- उपभोग की गई जटिल जटिल गणना या सीपीयू की प्रतीक्षा के कारण हो सकती है।
तो, कोड के टुकड़े से सीपीयू चक्रों का उपभोग कैसे करें?
चूंकि, CPU खपत को कम करने से प्रतिक्रिया समय बढ़ जाएगा।
- मैं अत्यंत कुशल कोड लिखा हो सकता है और अधिक CPU शक्ति जोड़ने की जरूरत है
या
- मैं कुछ बेवकूफ कोड सीपीयू ले जा रहा है और नीचे धीमी गति से पैदा कर रहा हो सकता है?
किसी भी मदद की सराहना की जाती है!
अद्यतन:
- मैं अपने webapp प्रोफ़ाइल JMeter उपयोग कर रहा हूँ, यह मेरे 2 अनुरोध/सेकंड की एक प्रवाह क्षमता देता है। [100 उपयोगकर्ता]
- मुझे 1 अनुरोध पर 100 अनुरोध बनाम 1.25 सेकंड समय पर 36 सेकंड का औसत समय मिलता है।
अधिक जानकारी
- विन्यास Nginx 4 श्रमिकों
- कोई डेटाबेस का इस्तेमाल किया, एक REST API
- 1 पर से एक प्रतिक्रियाओं का उपयोग कर के साथ Uwsgi मारा बाकी एपीआई के प्रतिक्रिया को कैश्ड हो जाता है , इसलिए कोई फर्क नहीं पड़ता है।
- जेसन पार्सिंग के लिए
ujson
का उपयोग करना। पता करने के लिए
जिज्ञासु:
- अजगर-Django इतने सारे बड़े साइटों के लिए इतने सारे संगठनों के द्वारा प्रयोग किया जाता है, तो वहाँ कुछ उच्च अंत डीबग/स्मृति-सीपीयू विश्लेषण उपकरण होना चाहिए।
- जो कुछ मैंने पाया वह कोड के आकस्मिक स्निपेट थे जो प्रोफाइलिंग करते थे।
प्रोफाइलिंग में मेरा पहला कदम यह देखना है कि * कौन सा फ़ंक्शन * अधिकांश समय व्यतीत होता है, और वे जांच करते हैं कि क्यों, अगर यह उचित है, और यदि इसे कम किया जा सकता है। समय की * राशि * (अक्सर) * आनुपातिक राशि * समय के रूप में महत्वपूर्ण नहीं है। –
हर समय लिया गया पूरे आवेदन में वितरित किया जाता है। कोई विशिष्ट बिंदु एक समस्या क्षेत्र प्रतीत नहीं होता है। –
लगता है? क्या आपने सटीक माप किया? मदद के लिए http://stackoverflow.com/a/582337/851737 देखें। – schlamar