Uygulamamı çalıştırırken bazen bir hata alıyorum too many files open
.
Çalışan ulimit -a
sınırın 1024 olduğunu bildiriyor. Sınırı 1024'ün üzerine nasıl yükseltebilirim?
Düzenleme
ulimit -n 2048
izin hatası ile sonuçlanır.
Uygulamamı çalıştırırken bazen bir hata alıyorum too many files open
.
Çalışan ulimit -a
sınırın 1024 olduğunu bildiriyor. Sınırı 1024'ün üzerine nasıl yükseltebilirim?
Düzenleme
ulimit -n 2048
izin hatası ile sonuçlanır.
Yanıtlar:
Her zaman bir ulimit -n 2048
. Bu yalnızca geçerli kabuğunuzun sınırını sıfırlar ve belirttiğiniz sayı sabit sınırı aşmamalıdır
Her işletim sisteminin bir yapılandırma dosyasında farklı bir sabit limit kurulumu vardır. Örneğin, Solaris'teki sabit açık dosya sınırı / etc / system'den önyüklemede ayarlanabilir.
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
OS X'te, aynı verilerin /etc/sysctl.conf dosyasında ayarlanması gerekir.
kern.maxfilesperproc=166384
kern.maxfiles=8192
Linux altında, bu ayarlar genellikle /etc/security/limits.conf dizinindedir.
İki tür sınır vardır:
Yumuşak limitler herhangi bir kullanıcı tarafından belirlenebilirken, sert limitler sadece kök tarafından değiştirilebilir. Sınırlar bir sürecin özelliğidir. Bir alt işlem oluşturulduğunda devralınırlar, böylece init komut dosyalarında sistem başlatma sırasında sistem genelinde sınırlar ve örneğin kullanıcı girişi sırasında pam_limits kullanılarak kullanıcı sınırları ayarlanmalıdır.
Makine önyüklendiğinde genellikle varsayılan değerler ayarlanır. Bu nedenle, ulimitinizi ayrı bir kabukta sıfırlayabilmenize rağmen, yeniden başlatma sırasında önceki değerine sıfırlandığını görebilirsiniz. Varsayılanı değiştirmek istiyorsanız, varolan ulimit komutları için önyükleme komut dosyalarınızı grep etmek isteyebilirsiniz.
ulimit
. Ne kullandığınızı belirtmelisiniz (örn. WSL, Cygwin).
Linux kullanıyorsanız ve izin hatasını alıyorsanız, /etc/limits.conf
veya /etc/security/limits.conf
dosyada izin verilen sınırı artırmanız gerekir (dosyanın bulunduğu yer Linux dağıtımınıza bağlıdır).
Örneğin, makinedeki herhangi birinin açık dosya sayısını 10000'e kadar yükseltmesine izin vermek için satırı limits.conf
dosyaya ekleyin .
* hard nofile 10000
Daha sonra oturumu kapatın ve sisteminize yeniden giriş yapın ve şunları yapabilirsiniz:
ulimit -n 10000
izin hatası olmadan.
root
. Sınırı root hard nofile 10000
ayarlamak isteyip istemediğinizi belirtmeniz gerekir root
.
ulimit
ve sonunda kök olarak giriş yaptım öğrendim. Bu yüzden içinde 1024'ü görmeye devam ettim ulimit -a
. Wildcare'i değiştirdim ve *
içine bir şey ekledim limits.conf
. Şimdi her şey iyi, (im ssh tuşlarını kullanarak endişelenmeyin: P) - Teşekkür ederim !!!
/etc/security/limits.d/
.
1) Aşağıdaki satırı ekleyin /etc/security/limits.conf
webuser hard nofile 64000
sonra web kullanıcısı olarak giriş yapın
su - webuser
2) Webuser için aşağıdaki iki dosyayı düzenleyin
ekleme Bashrc ve .bash_profile çalıştırarak dosya
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3) Oturumu kapatın, sonra tekrar oturum açın ve değişikliklerin doğru yapıldığını doğrulayın:
$ ulimit -a | grep open
open files (-n) 64000
İşte bu ve onlar patladı, pat patladı.
Hizmetlerinizden bazıları ulimitlere engel oluyorsa, bazen hizmetin init-script'ine uygun komutlar koymak daha kolaydır. Örneğin, Apache bildirirken
[alert] (11) Kaynak geçici olarak kullanılamıyor: apr_thread_create: çalışan iş parçacığı oluşturulamıyor
Koymak için deneyin ulimit -s unlimited
içine /etc/init.d/httpd
. Bu, sunucunun yeniden başlatılmasını gerektirmez.