2010-04-02 20 views
9

Python2.6 içinde sunucu çalıştırırken Ubuntu 9.10 altında açık dosyaları ile ilgili bir sorunum var Ve asıl sorun şu ki, neden bu kadar bilmiyorum ..socket.accept hata 24: Birçok açık dosyaya

ulimit -N = 999999

net.core.somaxconn = 999999

fs.file-max = 999999

ve l ı

belirledik

sof server çalışırken 12000 açık dosya verir.

Ayrıca epoll kullanıyorum. [Errno 24] Çok fazla açık dosya

:

Dosya "/usr/lib/python2.6/socket.py", çizgi 195, içinde hata kabul ediyoruz:

Ama vererek exeption başlatmak var bir süre sonra

Ve ulaşılamadığında dosya sınırına nasıl ulaşabileceğini bilmiyorum. Yardım için

teşekkürler) maksimum açık bağlantıları yapılandırmak

+0

"ulimit -n" ne döndürür? Sistem aslında 999999'a ayarlamanıza izin veriyor mu? –

+1

Muhtemelen işlem başına dosya tanımlayıcı sınırına isabet ediyorsunuz ve bunu nasıl değiştirdiğinizi dikkate almıyorsunuz. Bakınız /usr/include/linux/limits.h NR_OPEN '12k açık dosyaları ile ne yaparsınız? – msw

+0

Bu "/usr/include/linux/limits.h NR_OPEN" hakkında, bilmiyordum, 1024 olarak ayarlandı, 65536'ya kadar değişti. "ulimit -n" hakkında geri dönüş 999999 Şimdi sunucuyu test edecek Bu yeni NR_OPEN seçeneği.Ve cevap verecektir) Teşekkürler) –

cevap

20

Parametreler. /etc/sysctl.conf de

eklenti: o zaman

net.core.somaxconn=131072 
fs.file-max=131072 

ve:

sudo sysctl -p 

/usr/include/linux/limits.h

değişiminde :

NR_OPEN = 65536 
0 /etc/security/limits.conf

de

eklenti:

*    soft nofile   65535 
*    hard nofile   65535 
+0

Bu sınırın işlevi nedir? Kötü niyetli bir kullanıcıyı tutmak ...? – meawoppl

+0

bu, kullanıcı başına açık tanımlayıcı sayısını sınırlar. Örneğin, DB'niz tüm tanımlayıcıları yerse, web sunucunuz çalışmaya devam edecektir. –

6

Ayrıca piton koddan yapabilirsiniz ikinci argüman tuple (soft_limit, hard_limit) olduğunu

import resource 
resource.setrlimit(resource.RLIMIT_NOFILE, (65536, 65536)) 

aşağıda gibi. Zor sınır, yumuşak sınırın tavanıdır. Yumuşak sınır, bir oturum veya işlem için fiilen uygulanan şeydir. Bu, yöneticinin (veya kullanıcının), izin vermeyi istedikleri maksimum kullanım için sabit limiti ayarlamasına izin verir. Diğer kullanıcılar ve süreçler daha sonra, kaynak kullanımını kendi istedikleri takdirde daha da düşük seviyelere sınırlamak için yumuşak limiti kullanabilirler.

+0

Bu, geçici veya kalıcı bir değişiklik yapar mı? – Michael

+0

@Michael Cevabı güncelledim. –

+0

Güncelleştirme, işlevi açıklamaya yardımcı olur, ancak sorum, bunun kalıcı bir değişiklik yapıp yapmayacağını veya Python yorumlayıcısını yeniden başlatıp başlatmayacağımı, sınırlarını sıfırlayıp sıfırlamayacağını belirlemektir. – Michael

İlgili konular