Oracle Solaris 10/11: How to set limit on the maximum number of open files per process

İşlem başına açık dosyaların maksimum limitleri hard limit ve soft limit değerleri ile sınırlandırılabilmektedir. Hard limit(/etc/system rlim_fd_max parametresi, process.max-file-descriptor ) sistem yöneticisi tarafından ayarlanır, herhangi bir kullanıcı tarafından değer azaltılabilir ama artırılamaz. Soft limit (/etc/system rlim_fd_cur parametresi, process.max-file-descriptor) ise herhangi bir kullanıcı tarafından ayarlanabilir, hard limit değerininin üzerine çıkabilir.

Solaris 10 ve 11’de Hard limit ve soft limit ayarları için çeşitli yöntemler mevcut olup bizde bu yöntemlerden bahsedeceğiz.

/etc/system dosyasında rlim_fd_max parametresi: /etc/system dosyası edit edilir, “rlim_fd_max = 65536” değeri girilir 65536 varsayılan değerdir. Ayrıca farklı bir değer girilebilir. İşletim sistemini yeniden başlatmanız gerekmektedir.

Kaynak kontrolü process.max-file-descriptor: Sistemi kapatmadan ayar yapabildiğimiz yöntemdir. İşlemler yapılan değişiklikten etkilenmez.

Hard limit değerini varsayılan 65536 değerinden 4096 değerine değiştirmek istersek aşağıdaki komutu girmeliyiz.

# projmod -s -K "process.max-file-descriptor=(priv,4096,deny)" PRJ

Soft limit değerini varsayılan 256’dan 1024 değerine değiştirmek istersek aşağıdaki komutu girmeliyiz.

# projmod -s -K "process.max-file-descriptor=(basic,1024,deny) PRJ

limit/ulimit komutları: limit ve ulimit komutları ile de bu ayarları yapabilirsiniz.

Soft limit değerini default 128’den 512 csh’da artırmakiçin aşağıdaki komutu giriyoruz.

# limit descriptors 512

Soft limit değerini default 128’den 512 ksh’ veya sh’da artırmakiçin aşağıdaki komutu giriyoruz.

# ulimit -Sn 512

Hard limit değerini default 65536’dan 4096’ya csh’da azaltmak çin aşağıdaki komutu giriyoruz.

# limit -h descriptors 4096

Hard limit değerini default 65536’dan 4096’ya ksh veya sh’da azaltmakiçin aşağıdaki komutu giriyoruz.

# ulimit -Hn 4096

plimit komutu: Önceden çalışan bir işlemin, İşlem başına açık dosyaların maksimum limitlerini plimit komtu ile değiştirebilirsiniz. Örneğin 23159 numaralı işlemin soft limitini 2048 hard limiti ise 4096 yapmak istersek aşağıdaki komutu girmeniz yeterli ooacaktır.

# plimit -n 2048,4096  23159

Ayrıca aşağıdaki komutları girerek çalışan bir işlemin limit değerlerini kontrol edebilirsiniz.

# prctl -n process.max-file-descriptor 23159 
process: 23159: sleep 1200
NAME    PRIVILEGE       VALUE    FLAG   ACTION               RECIPIENT
process.max-file-descriptor
        basic             256       -   deny                     23159
        privileged      65.5K       -   deny                         -
        system          2.15G     max   deny                         -
# plimit 23159
23159: sleep 1200
   resource              current         maximum
  time(seconds)         unlimited       unlimited
  file(blocks)          unlimited       unlimited
  data(kbytes)          unlimited       unlimited
  stack(kbytes)         10240           unlimited
  coredump(blocks)      unlimited       unlimited
  nofiles(descriptors)  256             65536
  vmemory(kbytes)       unlimited       unlimited
# pfiles 23159 
23159: sleep 1200
Current rlimit: 256 file descriptors
0: S_IFCHR mode:0620 dev:542,0 ino:500877638 uid:60004 gid:7 rdev:133,1
O_RDWR
/dev/pts/1
offset:38001
1: S_IFCHR mode:0620 dev:542,0 ino:500877638 uid:60004 gid:7 rdev:133,1
O_RDWR
/dev/pts/1
offset:38001
2: S_IFCHR mode:0620 dev:542,0 ino:500877638 uid:60004 gid:7 rdev:133,1
O_RDWR
/dev/pts/1
offset:38001

Açık dosyalar (open files) ve dosya sistemi hakkında teorik bilgiler için tıklayınız.

Kaynak: “How To Set The Limit For The Maximum Number Of Open Files Per Process In Solaris 10 And Solaris 11 (Doc ID 1408563.1)” başlıklı Oracle belgesi

Hakkında G. KELEŞ

Cevapla

E-posta adresiniz yayınlanmayacak. Gerekli alanlar işaretlenmelidir *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.