16 Haziran 2020 Salı

systemd kullanan linux sunucularında servislerin kullandığı limitlerin ayarlanması

Kullandığımız güncel linux dağıtımlarının hepsi neredeyse systemd kullanıyor ve servislerimizin limitleri, özellikle redis/apache/nginx/php gibi, standart ayarlarda olursa zaman zaman keyfimisi kaçırabiliyor.

Bundan dolayı varsayılan sistem limitlerine takılmamak için limitleri artırabiliriz. Örnek olarak redis servisi ile ilgili limiti artıralım.


systemd ayar dosyasına ekleyebileceğimiz parametreler,

LimitCPU=, LimitFSIZE=, LimitDATA=, LimitSTACK=, LimitCORE=, LimitRSS=, LimitNOFILE=, LimitAS=, LimitNPROC=,
LimitMEMLOCK=, LimitLOCKS=, LimitSIGPENDING=, LimitMSGQUEUE=, LimitNICE=, LimitRTPRIO=, LimitRTTIME=
These settings set both soft and hard limits of various resources for executed processes.
See setrlimit(2) for details. Use the string infinity to configure no limit on a specific resource.

Table 1. Limit directives and their equivalent with ulimit
┌────────────────┬───────────────────┐
│Directive │ ulimit equivalent │
├────────────────┼───────────────────┤
│LimitCPU │ ulimit -t │
├────────────────┼───────────────────┤
│LimitFSIZE │ ulimit -f │
├────────────────┼───────────────────┤
│LimitDATA │ ulimit -d │
├────────────────┼───────────────────┤
│LimitSTACK │ ulimit -s │
├────────────────┼───────────────────┤
│LimitCORE │ ulimit -c │
├────────────────┼───────────────────┤
│LimitRSS │ ulimit -m │
├────────────────┼───────────────────┤
│LimitNOFILE │ ulimit -n │
├────────────────┼───────────────────┤
│LimitAS │ ulimit -v │
├────────────────┼───────────────────┤
│LimitNPROC │ ulimit -u │
├────────────────┼───────────────────┤
│LimitMEMLOCK │ ulimit -l │
├────────────────┼───────────────────┤
│LimitLOCKS │ ulimit -x │
├────────────────┼───────────────────┤
│LimitSIGPENDING │ ulimit -i │
├────────────────┼───────────────────┤
│LimitMSGQUEUE │ ulimit -q │
├────────────────┼───────────────────┤
│LimitNICE │ ulimit -e │
├────────────────┼───────────────────┤
│LimitRTPRIO │ ulimit -r │
├────────────────┼───────────────────┤
│LimitRTTIME │ No equivalent │
└────────────────┴───────────────────┘
redis-server servisini düzenleme modunda açarak, Service altında istediğimiz limitleri ayarlarız.
root@xrv:~# systemctl edit --force --full redis-server

[Service]
...
LimitNOFILE=65535
LimitNPROC=65535
Dikkat etmemiz gereken nokta limit değişkenlerinin service bölümünde olmasıdır.
Bu işlem bittikten sonra yaptığımız değişikliği saklayarak çıkarız.
Sonrasında  systemd nin değişiklikten haberi olması için;
systemctl daemon-reload 
ve son olarakta servisi yeniden (stop/start veye restart) başlatırız.

systemctl restart redis-server
veya
root@xrv:~# systemctl show redis-server -p LimitNPROC
LimitNPROC=126794
root@xrv:~# systemctl show redis-server -p LimitNOFILE
LimitNOFILE=65535
root@xrv:~#


Hiç yorum yok:

Yorum Gönder