nginx: मैं nginx से यादृच्छिक 500 कैसे ट्रैक करूं (मेरा आवेदन नहीं)। संभावित रूप से लोड के साथ कुछ करना है?


9

हमने हाल ही में कुछ 500 नगनेक्स से खुद को लॉग इन किया था (हमारे पास स्क्रीनशॉट नहीं हैं, लेकिन लॉग में कुछ भी नहीं है)। यह अपने आप में अजीब है, क्योंकि आमतौर पर त्रुटियाँ वहाँ दिखाई देती हैं। भले ही, मैं सोच रहा हूं कि क्या कनेक्शन पूल आकार की तरह कुछ है कि अगर अधिकतम 500 में परिणाम होगा? हमने इसे हाल ही में यातायात में स्पाइक के रूप में सहसंबद्ध किया है, लेकिन यह निर्णायक नहीं है।

किसी के पास कोई भी विचार है कि इस तरह के मुद्दे को कैसे शुरू किया जाए?


आपको जो पहली दो चीजें करनी हैं, वे इस त्रुटि को पुन: उत्पन्न करते हैं और इस कारण का पता लगाते हैं कि नग्नेक्स लॉग इन क्यों नहीं करता है error_log। अपनी कॉन्फ़िगरेशन फ़ाइल भी पोस्ट करें।
क्वांटा

जवाबों:


6

हम इस तरह की चीजों को पकड़ने के लिए nginx और logmon में लॉग फॉर्मेट के संयोजन का उपयोग करते हैं। एक NGINX लॉग प्रारूप जैसे:

log_format मुख्य '$ स्थिति: $ request_time: $ upstream_response_time: $ पाइप: $ body_bytes_sent $ कनेक्शन $ Remote_addr $ host $ Remote_user [$ time_local ":" $ अनुरोध_ "$ http_referer" "$ http_user_agent" "$ http_usx_for_for_the_free_d में: $ http_cookie "'

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

हम इन लॉग को देखने के लिए LMON का उपयोग करते हैं और फिर लॉग्स में 500s, 503s, 400s जैसी त्रुटियों को देखते हुए हमें (पेजर्स / ईमेल) अलर्ट करते हैं:

http://www.bsdconsulting.no/tools/lmon-README

यह आपको किसी समस्या के प्रति सचेत करने में मदद कर सकता है जब ऐसा हो रहा है जो इसे डिबग करने का सबसे आसान समय है।

दूसरी बात जिस पर आपको पहले से विचार नहीं करना चाहिए, वह यह है कि डिफ़ॉल्ट नग्नेक्स 500 को एक घातक स्थिति मानता है और दूसरे अपस्ट्रीम की कोशिश नहीं करता है। यदि आपके पास कई अपस्ट्रीम हैं, तो आप इसे 500 का हो जाने पर दूसरे का उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं, उम्मीद है कि उपयोगकर्ता से विफलता का अवलोकन कर सकते हैं:

http://wiki.nginx.org/NginxHttpProxyModule#proxy_next_upstream


यह बहुत ही उपयोगी उत्तर है, धन्यवाद! बंद करें implemenet प्रॉक्सी_नेक्स्ट_अपस्ट्रीम ...
kaleidomedallion

4

error_log $filename debug; डिबग स्तर को त्रुटि लॉग में लॉग ऑन करेगा - यह आपको त्रुटि के समय नेगनेक्स की आंतरिक स्थिति के बहुत सारे और बहुत सारे विवरण देगा, और यदि --with-debug (जो कई डिस्ट्रो डिफ़ॉल्ट रूप से करते हैं) के साथ संकलित किया गया है 'और भी देंगे।

चेतावनी दी है कि "डिबग" स्तर वास्तव में बहुत सारे आउटपुट उत्पन्न करता है , इस बिंदु पर कि आप अपना डिस्क स्थान देखना चाहते हैं ...


1

मेरे मामले में कॉन्फिडेंस फ़ाइल को सही ढंग से नाम नहीं दिया गया था (example.com के बजाय example.com.conf था) और शामिल नहीं किया गया था। किसी भी तरह यह 'nginx में आपका स्वागत है' में परिणाम नहीं था, लेकिन एक नहीं लॉग इन HTTP 500 त्रुटि। ठीक है, यह वास्तव में लॉग इन किया गया था, लेकिन एक अलग वर्चुअल होस्ट से त्रुटि फ़ाइल में जो उस विशेष यूआरएल के साथ काम नहीं कर सका।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.