2012-11-20 9 views
7

मैंने हाल ही में कोड या डेटाबेस में संभावित मुद्दों को देखने के लिए मेरे आगंतुक लॉग में PHP निष्पादन समय जोड़ा। समय स्क्रिप्ट के आरंभ और अंत के बीच microtime() अंतर के रूप में मापा जाता है।उच्च विलंबता (?) उपयोगकर्ताओं के लिए लंबे PHP निष्पादन

औसत निष्पादन समय (साइट के डीबग संस्करण पर अपने स्वयं के परीक्षण सहित) 2-15ms है। फिर मैं कुछ उपयोगकर्ताओं के लिए यादृच्छिक रूप से + 300ms निष्पादन देखता हूं। वे संभावित रूप से लोड स्पाइक्स, असंबद्ध डेटाबेस क्वेरी या फाइल सिस्टम एक्सेस के कारण होते हैं।

जो मैं समझ नहीं पा रहा हूं वह हर समय है और फिर उपयोगकर्ताओं को 5-30 सेकंड (!) निष्पादन समय के साथ प्रदर्शित करता है। मेरे परीक्षणों के आधार पर वे प्रतीत होता है कि यादृच्छिक पृष्ठ पर दिखाई देते हैं और उन समय के लिए एक्सेस लॉग पर कोई अनुरोध स्पाइक्स नहीं है, न ही कोड या डेटाबेस क्वेरी पर कुछ भी है जो संभवतः इस धीमी कार्यक्षमता का कारण बन सकता है। उन अनुरोधों में से 9 0% चीन से आते हैं और कुछ प्रकार के क्रॉलर या बॉट्स प्रतीत होते हैं।

तो क्या विलंबता PHP स्क्रिप्ट के निष्पादन समय को प्रभावित कर सकती है? क्या PHP निष्पादन रोक दिया गया है जबकि पिछले बफर उपयोगकर्ता को भेजा गया है?

मैं उचित रूप में समान बात के साथ इस अन्य धागा पाया, लेकिन कोई जवाब नहीं था: PHP's execution time changes based upon internet/connection latency?

संपादित करें:
मैं 4k 128k बाइट्स से पीएचपी output_buffering बढ़ती समाप्त हो गया। अब ठेठ निष्पादन समय 2-6ms तक गिर गया है और अब और अधिक यादृच्छिक हास्यास्पद लंबे समय नहीं हैं।

+3

"तो: क्या विलंबता PHP स्क्रिप्ट के निष्पादन समय को प्रभावित कर सकती है? क्या PHP निष्पादन रोक दिया गया है जबकि पिछले बफर उपयोगकर्ता को भेजा गया है?" --- उस nginx को एक रिवर्स प्रॉक्सी के रूप में रोकने के लिए उपयोग किया जाता है। तो php + apache तेजी से काम करता है, तो nginx धीरे-धीरे – zerkms

+0

परोसता है क्या PHP के लिए अपाचे स्वयं बफर के रूप में कार्य करने का कोई तरीका नहीं है? अगर वास्तव में अपाचे प्रक्रियाएं लंबे समय तक जीवित रहती हैं, तो मुझे वास्तव में कोई फर्क नहीं पड़ता है, केवल समस्या यह है कि देरी से पीएचपी स्क्रिप्ट्स पृष्ठ निष्पादन समय आंकड़े गड़बड़ कर देती हैं ... – MiikaH

उत्तर

1

मुझे लगता है कि सर्वर विन्यास, विशेष रूप से output_buffering and implicit_flush के आधार पर विलंबता PHP निष्पादन समय को प्रभावित कर सकती है।

इसके अलावा, gethostsbyaddr जैसे कुछ फ़ंक्शन हैं जो एक PHP स्क्रिप्ट को धीमा कर सकते हैं।

शायद आप एक्सक्यूबग का उपयोग निष्पादन ट्रेस उत्पन्न करने के लिए कर सकते हैं और एक स्क्रिप्ट के निष्पादन की "टाइमलाइन" देख सकते हैं।

+0

हाँ, मुझे लगा कि "output_buffering" मान संभवतः इससे संबंधित है। मुझे लगता है कि जब भी PHP बफर फ्लश करता है तो देरी होती है। दुर्भाग्यवश output_buffering में वृद्धि सामान्य रूप से सामान्य प्रदर्शन को खराब कर देगी क्योंकि पूरे पृष्ठ को उत्पन्न होने से पहले ब्राउज़र पर कुछ भी नहीं भेजा जाएगा। – MiikaH

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

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