Benim Java programıÇok fazla dosya açık hata ama lsof
Caused by: java.io.IOException: Too many open files
at java.io.UnixFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:883)...
İşte
/etc/security/limits.conf
anahtar çizgilerdir ile başarısız oluyor açık dosyaların bir yasal sayısını gösterir. Onlar 500k bir kullanıcı için maksimum dosya ayarlayın: Açıyorum dosya sayısını saymak için lsof
koştu
root soft nofile 500000
root hard nofile 500000
* soft nofile 500000
* hard nofile 500000
- gerek küresel gerekse jvm işlemi ile. Sayaçları /proc/sys/fs
'da inceledim. Her şey yolunda görünüyor. Benim süreç yalnızca açık 4301 dosyaları vardır ve sınır 500k geçerli:
:~# lsof | wc -l
5526
:~# lsof -uusername | wc -l
4301
:~# cat /proc/sys/fs/file-max
744363
:~# cat /proc/sys/fs/file-max
744363
:~# cat /proc/sys/fs/file-nr
4736 0 744363
Bu Bir Ubuntu 11.04 sunucusudur. Yeniden başlattım, bu yüzden bu parametreler kullanılmakta pozitifim.
alakalı, ama süreç böyle, setuidgid kullanarak işlemi başlatır bir sonradan görme komut tarafından başlatılıp başlatılmadığını bilmiyorum:
exec setuidgid username java $JAVA_OPTS -jar myprogram.jar
ben eksik?
Yığın alanınızı güncelleştirmeyi ve daha büyük bir maks. İkisinin neden ilişkili olabileceğinden emin değilim, ancak bu hatayı, sayısız farklı konu için çarptı. – Relic
İlginç, teşekkürler. Ama zaten -Xmx5800m :) – hughw
Bazı süreç ağacında ulimit kullanarak yeni sınırlar ayarlar mısınız? – Jayan