2012-05-10 18 views
13

के साथ यादृच्छिक 502 गेटवे त्रुटियां मुझे nginx और php-fpm का उपयोग करके यादृच्छिक 502 गेटवे त्रुटियों के साथ कोई समस्या हो रही थी। मेरे मामले में मैंने एक परिदृश्य खोजा जहां विभिन्न php.ini error_log सेटिंग्स और error_reporting स्तर यादृच्छिक 502 गेटवे त्रुटियों को प्रकट कर रहे थे।nginx php-fpm और ubuntu

error_reporting और error_log मैं 502 प्रवेश द्वार त्रुटियों गायब करने के लिए कर रहा था php.ini सेटिंग बदलकर - लेकिन अधिक महत्वपूर्ण मैं देख रहा हूँ क्या असली php त्रुटियों लॉग में थे और उन्हें ठीक करने में सक्षम था।

मुख्य मुद्दा यह है कि अगर error_logging = पर "error_reporting नोटिस, प्रदर्शित करने के लिए स्थापित किया गया था" "तो मुझे यकीन है कि error_log सर्वर से कोई मान्य पथ जैसे करने के लिए स्थापित किया गया था था लिखने योग्य बनाने की जरूरत थी।

// !!! 502 Gateway Error (unhappy server) 
error_reporting = E_ALL & E_NOTICE 
; error_log = php_errors.log (note this is commented) 

// Happy Server, no 502 gateway error 
error_reporting = E_ALL & E_NOTICE 
error_log = /valid/log/path/and/permissions 

// Happy Server, no 502 gateway error 
error_reporting = E_CORE_ERROR 
; error_log = php_errors.log (note this is commented) 

नोट, वास्तविक त्रुटियां php नोटिस थीं ... हालांकि ngingx php नोटिस के लिए 502 गेटवे त्रुटियों को फेंक रहा था जो गुणों से संबंधित नहीं थे।

यह भी ध्यान दें कि 502 गेटवे त्रुटियां प्रत्येक PHP नोटिस पर ट्रिगर नहीं की जा रही थीं।

उम्मीद है कि यह किसी को कुछ निराशा बचाता है!

+1

आप अपने प्रश्न को किसी प्रश्न पर वापस संपादित/संपादित कर सकते हैं और फिर अपने लिए इसका जवाब दे सकते हैं। फिर अपना जवाब स्वीकार करें, इसलिए इसे उत्तर के रूप में दिखाया गया है। मैं आपका जवाब भी +1 करूंगा, बहुत अच्छा सवाल, धन्यवाद। –

+1

क्या यह कोई प्रश्न या उत्तर है? ;) – Strae

उत्तर

0

मैंने फास्ट सीजीआई मोड में आईआईएस और PHP चलाने वाली विंडोज मशीनों पर इसे चलाया है, इसलिए यह सिर्फ एक निक्स समस्या नहीं है।

अपराधी PHP लॉगिंग भी था। आपको इसे स्थिर निर्देशिका में सेट करने की आवश्यकता नहीं है, भले ही आप उचित अनुमति देते हैं, यह उसी निर्देशिका में लिख सकता है जिसमें स्क्रिप्ट रहता है। (यदि आपके पास बड़ी और जटिल साइट है तो बहुत उपयोगी हो सकता है)

मेरा सर्वर इस तरह से सेटअप है और मैंने अभी जनता को त्रुटि लॉग की सेवा न करने के लिए एक नियम जोड़ा है।

इसे समेटने के लिए, अनुमतियां जांचें! =)

3

Nginx में 502 गेटवे त्रुटियां php-fpm के कारण पर्याप्त प्रक्रिया और/या टाइमआउट नहीं होती हैं। लॉगिंग केवल आपको बताती है कि समस्याएं क्या हैं और 502 त्रुटियों का कारण नहीं हैं।

मैं 25 सर्वरों पर स्टनल + हैप्रोक्सी + nginx + php-fpm का उपयोग करता हूं। पीएफपी-एफपीएम में डिफ़ॉल्ट बहुत कम है, यहां तक ​​कि एक मामूली व्यस्त सर्वर के लिए भी। एफपीएम बाल प्रक्रियाओं को उसी तरह से कॉन्फ़िगर करें जैसे आप apache mod_php के साथ करेंगे।

pm.max_children = 250 
pm.start_servers = 20 
pm.min_spare_servers =10 
pm.max_spare_servers = 20 
pm.max_requests = 1500 

इस के साथ 2GB राम एक सर्वर है:

मैं निम्नलिखित का उपयोग करें। यह प्रति दिन 20-30 जीबी यातायात के साथ 502 के

+0

मुझे यह कॉन्फ़िगरेशन जानकारी कहां मिलेगी? –

0

मुझे एक ही समस्या है जो PHP चेतावनियों को अक्षम करके हल किया गया है, हालांकि, मुझे लगता है कि समस्या में लॉगिंग का उपयोग करने वाले बफर के एनजीआईएनएक्स कॉन्फ़िगरेशन के साथ कुछ करना है। चेतावनी संदेशों की एक निश्चित संख्या के बाद ही त्रुटि ट्रिगर होती है, और यह काफी अनुमानित रूप से दोहराया जा सकता है; लेकिन मैं यह नहीं समझ सकता कि कौन सी सेटिंग्स शामिल हैं इसलिए चेतावनियां बंद कर दें जब तक कि मैं टूटी हुई सेटिंग्स को हल नहीं कर सकता।

0

यदि उपर्युक्त चरण आपकी समस्या का समाधान करने में आपकी सहायता नहीं करते हैं, तो जांचें कि क्या आपके पास ईएसीसेलरेटर सक्षम है या नहीं।

या तो अपने php.ini या php.d में लोड .so प्रविष्टि/eaccelerator.ini

सभी समस्याओं चले गए हैं अक्षम करके विश्व स्तर पर यह अक्षम करें।ऐसा लगता है कि एक्सेलेरेटर कुछ स्थितियों में php-fpm के संयोजन में विफल रहता है।