nginx: nginx'ten rastgele bir 500'ü nasıl izleyebilirim (uygulamam değil). Potansiyel olarak yük ile ilgili bir şey var mı?


9

Son zamanlarda nginx kendisi bir şekilde günlüğe kaydedilmemiş bazı 500 's vardı (ekran görüntüleri, ancak günlükleri hiçbir şey). Bu kendi içinde garip, çünkü genellikle hatalar ortaya çıkıyor. Ne olursa olsun, eğer bağlantı havuzu boyutu gibi bir şey varsa maxed 500 ile sonuçlanacağını merak ediyorum? Potansiyel olarak trafikte yeni bir artışla ilişkilendirdik, ancak kesin değil.

Böyle bir konuya nasıl yaklaşmaya başlayacağına dair bir fikri olan var mı?


Yapmanız gereken ilk iki şey bu hatayı yeniden oluşturmak ve Nginx'in neden oturum açmadığını bulmaktır error_log. Ayrıca yapılandırma dosyanızı gönderin.
quanta

Yanıtlar:


6

Bunun gibi şeyleri yakalamak için nginx ve lmon'da günlük biçimlerinin bir kombinasyonunu kullanıyoruz. NGINX günlük biçimi:

log_format main '$ status: $ request_time: $ upstream_response_time: $ pipe: $ body_bytes_sent $ bağlantı $ remote_addr $ host $ remote_user [$ time_local] "$ istek" "$ http_referer" "$ http_user_agent" "$ http_x_forwarded_for" $ upstream_add " içinde: $ http_cookie "'

İsteği işleyen yukarı akış sunucusu gibi bir çok yararlı tanılama bilgisi yakalayacak ve durumu öne koyarak, günlükler oldukça hızlı kaydırılsa bile okunması kolay olacaktır.

Bu günlükleri izlemek için LMON'u kullanırız ve günlüklerde 500s, 503s, 400s gibi hatalar görürse bizi uyarır (çağrı cihazları / e-posta):

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

Bu, hata ayıklamak için en kolay zaman olan bir sorunla ilgili olarak uyarılmanıza yardımcı olabilir.

Henüz yapmadıysanız muhtemelen göz önünde bulundurmanız gereken diğer bir şey, varsayılan olarak nginx'in 500'ü ölümcül bir durum olarak görmesi ve başka bir yukarı akış denememesi. Birden fazla yukarı akışınız varsa, 500 alırsa başka bir tane kullanacak şekilde yapılandırabilirsiniz, umarım kullanıcıdan gelen hatayı gizler:

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


Bu çok yardımcı bir cevap, teşekkürler! Proxy_next_upstream uygulamak için kapalı ...
kaleidomedallion

4

error_log $filename debug; hata günlüğüne hata ayıklama düzeyi günlüğünü açacak - bu size hata anında nginx'in dahili durumunun çok ve çok sayıda ayrıntısını verecektir ve --with-debug ile derlendiğinde (varsayılan olarak birkaç dağıtım yapılır) Daha fazlasını vereceğim.

"Hata ayıklama" düzeyinin gerçekten disk alanınızı izlemek isteyebileceğiniz noktaya kadar çok sayıda çıktı oluşturduğu konusunda uyarınız ...


1

Benim durumumda conf dosyası doğru şekilde adlandırılmamıştı (example.com.conf yerine example.com idi) ve dahil edilmedi. Her nasılsa bu 'nginx'e hoş geldiniz' ile sonuçlanmadı ve günlüğe kaydedilmemiş bir HTTP 500 hatasıyla sonuçlandı. Aslında, günlüğe kaydedildi, ancak belirli bir url ile çalışamayan farklı bir sanal ana bilgisayardaki hata dosyasında.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.