Friday, October 05, 2007

Çok fazla açık dosya var (too many open files)

Çok fazla açık dosya var hatası, genellikle sunucularda sıkça başımıza gelen bir konu, çünkü uygulama sunucuları, üzerlerinde hiçbirşey olmasa dahi birçok dosya ile aynı anda çalışır. Bu konu ile ilgili RedHat EL3 üzerinde SSH Client kulanarak uygulama sunucularını yönetirken sıkça yaşadığımız bir sorunun çözümünü burada size sunmaya çalışacağım.

Sorun : Websphere açılmaya kalkıştığında zaman zaman "too many open files" diyerek operasyonu durduruyor. Bunu başka zaman da yapıyor...

Çözüm :

"ulimit -n" ile kaç tane açık dosyaya izin verildiği bilgisini kontrol edin. Ben de bu sayı 1024 idi.

root rolüne bürünüp bu değeri değiştirmeniz birşey ifade etmeyecek çünkü bunu geçici olarak değiştirmiş olacaksınız. Bir sonraki SSH bağlantınızda bu eski haline yani 1024'e dönüşmüş olacak. Ve hatta aşağıdaki yöntemi denerseniz zaten değiştiremeyeceksiniz.

ulimit -n
1024
su - root
ulimit -n 4096
exit
ulimit -n
1024

Bu noktada uğraşmamız gereken iki tane dosya var, bunlardan bir tanesi, makine reboot olsa dahi, kullanıcı limitlerinin korunması için kullanılan "limits.conf" dosyası (/etc/security altında), diğeri ise SSH protokolü ile yapılan bağlantıların tüm konfigürayonunu tutulduğu "sshd_config" dosyası (/etc/ssh altında)... Bu dosyaları düzenlememiz gerekecek, bunu yapmak için root olmamız gerektiğini belirtmeme gerek yok sanırım.

limits.conf dosyasına aşağıdaki iki satırı eklememiz gerekiyor.

USER_NAME soft nofile 4096
USER_NAME hard nofile 4096


USER_NAME burada Websphere çalıştırdığımız ve açık dosya hatasını aldığımız kullanıcı...

Tabi bu değişiklik tek başına yeterli olmayacak, bu nedenle sshd_config dosyasında da "UsePrivilegeSeparation" parametresini eğer comment'li ise comment'ten kurtarıp değerini ise "no" yapmamız gerekiyor. Bu her açtığımız SSH bağlantısında açık dosya limitini sistem değerlerinden okumamızı sağlayacak.

Son olarak bunun devreye girmesi için SSH servisini "service sshd restart" komutu ile restart etmemiz gerekiyor. Bundan sonra SSH Client ile bir terminal açtığımızda yukarıda belirttiğimiz kullanıcının limiti, dosyada belirtilen sayı olarak belirlenmiş olacak. Bu da "too many open files" hatasını belki bir süre daha almamızı sağlayacak.

Umarım yardımcı olur.

0 comments: