limits.conf nofile 설정 반영이 안되는 이유

반응형
반응형

 

open files 값 확인

$ ulimit -a | grep open
open files                      (-n) 1048576

 

limits.conf 에도 동일하게 값이 들어가 있음

$ cat /etc/security/limits.conf
root		soft	nofile		1048576
root		hard	nofile		1048576

 

서비스 데몬 구동, 저는 prometheus로 진행하였습니다.

systemctl start prometheus

 

Max open files값이 예상한 1048576과 달리 "1024"로 확인됨.

$ cat /proc/97322/limits | grep open
Limit                     Soft Limit           Hard Limit           Units
Max open files            1024                 524288               files

 

/var/log/messages

결국 Max open files를 초과하여 "Too many open files" 에러 출력

err="open /root/db/prometheus/data: too many open files"
.
.
.

 

이럴일이 없는데...순간 혼돈이 왔다 이럴 땐 구글링 구글링...

결론은 " systemd 가 /etc/security/limits 설정을 무시하는 것으로 확인".

https://serverfault.com/questions/628610/increasing-nproc-for-processes-launched-by-systemd-on-centos-7/678861#678861

 

Increasing nproc for processes launched by systemd on CentOS 7

I have successfully increased the nofile and nproc value for the local users, but I couldn't find a proper solution for the processes launched by systemd. Adding max_open_files to the MariaDB

serverfault.com

 

그렇다면 어떻게 해아 하나

다시 구글링

 

/etc/systemd/system/prometheus.service 파일에 LimitNOFILE 설정으로 Max Open Files값 설정가능

[Unit]
Description=Prometheus Server

[Service]
User=root
Group=root
Restart=on-failure
LimitNOFILE=infinity

ExecStart=/root/data/prometheus/prometheus \
  --config.file /root/data/prometheus/prometheus.yml \
  --log.level=info \
  --storage.tsdb.path=/root/data/prometheus/data \
  --storage.tsdb.retention.time=30d \
  --web.enable-lifecycle

[Install]
WantedBy=multi-user.target

 

prometheus 재구동 후 Max Open Files 값 확인

$ cat /proc/97352/limits | grep open
Limit                     Soft Limit           Hard Limit           Units
Max open files            1048576              1048576              files

 

반응형

댓글

Designed by JB FACTORY

loading