2010-04-08 16 views
6

Linux'ta Django'yu fcgi ve Lighttpd kullanarak çalıştırıyorum. Her şimdi ve tekrar (günde yaklaşık bir kez) sunucu sadece ölür. Django, Python ve Lighttpd'nin en son kararlı sürümünü kullanıyorum.Django fcgi neden ölür? Nasıl öğrenebilirim?

Düşünebildiğim tek şey, programımın çok fazla dosya açıp çok fazla harici işlem yürütmesidir, ancak bu şeylerin su geçirmez olduğundan eminim.

Hata ve erişim günlüklerine bakıldığında, olağandışı bir şey yoktur (yani, yük normalin üstünde değil). Python’un istisnalarımın olduğu bu durumlarda, bunlar error.log’da gösterildi, ancak bu çökme olduğunda hiçbir şey alamıyorum.

İşlemin neden öldüğünü öğrenmenin bir yolu var mı? Her bir satırda günlük ifadeleri koymak kısa? Açıkçası bunu tekrarlayamıyorum, bu yüzden tam olarak nereye bakacağımı bilmiyorum.

Düzenleme

Ölüyor Django süreç. Bunu kendisi yapmaz runfcgi varsayarak bir dosyaya stderr'yi yönlendirmek için manage.py düzenleme olabilir manage.py runfcgi daemonize=true method=threaded host=127.0.0.1 port=12345

+1

Çekirdek dosyaları aradınız mı? Çekirdek dosyalarına izin vermek için ritimlerinizi ayarladınız mı? – jemfinch

+0

Sunucuyu komut satırı olmayan bir hata ayıklama modunda çalıştırır mısınız? –

+0

Soruyu tekrar okuduktan sonra, bir şey tamamen açık değil: o lighttpd daemon ölüyor, ya da kendi FastCGI süreciniz mi? – Thomas

cevap

2

ile sunucu çalıştırıyorum:

import sys 
if sys.argv[1] == "runfcgi": 
    sys.stderr = open("/path/to/my/django-error.log", "a") 
+0

Öneriniz için teşekkürler. Ben lighttpd's error.log (ilgisiz nedenlerle) çeşitli istisnalar alıyorum gibi, stderr zaten kaydedilir olduğunu düşünüyorum. Söylemek yeterlidir, süreç öldüğünde günlüğü boştur. – Joe

0

bu sunucu üzerinde mi? (kutunun var mı?). Paylaşılan barındırmada bu sorunu yaşadım ve ev sahibi sadece uzun süreçleri öldürüyordu. Fcgi'nizin bir SIGTERM alıp almadığını biliyor musunuz?

+0

Bu mesajları hangi süreçleri gönderiyor biliyor musunuz? Bu benim [sanal] kutum. Birkaç tane Django sürecim var. Bu sadece ölüyor. – Joe

0

Aynı sorunları yaşadım. Sadece bir uyarı olmadan ya da usta bir süreç olmadan sıkışmış iş parçacığıyla deliler gibi sızıntı yapmadan ölürler. Bu problemi, port numaranın çalışıp çalışmadığını ve tekrar başlatılamamış olup olmadığını kontrol eden her 5 dakikada bir cronjob çalışması yaparak çözdük. Bu arada, şimdi (yavaşça göç ederek) fcgi'den vazgeçtik ve uwsgi'ye taşındık.

+0

Aynı sonuca vardım ama 1 dakikalık aralıklarla. Uwsgi sorununuzu çözdü mü? – Joe

+0

Henüz bir şey bilmiyor. En azından düştüğünü görmedim. –

İlgili konular