Showing posts with label SSH. Show all posts
Showing posts with label SSH. Show all posts

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.

Tuesday, June 12, 2007

BEA-000342 - Unable to initialize the server - Problems while parsing URL file

Weblogic, zaten başlı başına yönetmesi sorun olan bir uygulama sunucusu. Ve bu sabah anlamsız bir hata ile karşılaştım... Hmm bu arada server'lara bağlanmak için SSH Secure Shell 3.2.9 kullanıyorum...

Web console'dan instance'lardan birinde işleri yönetmek için yeterince thread kalmadığını farkettim (Idle thread=0)... Ben de instance'ı restart etmeye yeltendim... Kapatırken sorun yoktu, ama açmaya çalıştığımda aşağıdaki hatayı aldım.

[13.Haz.2007 08:55:57 EEST [Emergency] [WebLogicServer] [BEA-000342] [Unable to initialize the server: weblogic.management.configuration.ConfigurationException: Exception thrown
in operation getMBeansFromURL - with nested exception:
[javax.management.ServiceNotFoundException: Problems while parsing URL file:/.../load.mlet]]


Internet'te bir kaç post okudum, ama bahsedilen case'lerin hiçbirisi sorunu mu düzeltemedi... Son olarak bir postta birisinin regional setting'ini tr'den en'e geçirdiğinde sorunu düzelttiğini yazdığını buldum... Hemen console'u açtım ve "locale" yazdım,

bash-2.05$ locale
LANG=tr_TR.ISO8859-9
LC_CTYPE="tr_TR.ISO8859-9"
LC_NUMERIC="tr_TR.ISO8859-9"
LC_TIME="tr_TR.ISO8859-9"
LC_COLLATE="tr_TR.ISO8859-9"
LC_MONETARY="tr_TR.ISO8859-9"
LC_MESSAGES="tr_TR.ISO8859-9"
LC_ALL=

yukarıdaki değerleri gördüm, hemen arkadaşıma bu makinenin restart olduktan sonra local setting'inin değiştiğini ve eski haline yani ingilizce'ye almamız gerektiğini söyledim... O da kontrol amaçlı açtı, root ile login oldu, sonra kullanıcı değiştirip "locale" yazdı, ama benim gördüğüm ekranı görmedi, tamamen doğru idi onun gördüğü (Bu arada o da SecureCRT 5.0.5) kullanıyor...

Sonra bir kaç test yaptım ve sorunun cevabını buldum... Çok basit ama anlamsız bir bug idi, benim bütün sabah bu sorun ile uğraşmamı sağlayan...

SSH Secure Shell ile bir makineye login olup ardından "su - ?" ile kullanıcı değiştirdiğinizde ilk login olduğunuz kullanıcının locale bilgileri ile diğer kullanıcıya davranıyor, yani diğer kullanıcının locale değerleri ilk login olunan kullanıcının bilgileri ile replace ediliyor, bu da beklenilenin dışında bir davranış şekli sergilenmesine sebep oluyor...

Ben sadece "locale" ile ilgili olanı buldum, kimbilir başka neler bu şekilde taşınıyor