limits.conf에서 nofile을 올렸는데도 Too many open files가 납니다
조회 0 · 댓글 0
Ubuntu 22.04에 systemd로 띄운 자바 백엔드(스프링부트, OpenJDK 17)를 운영 중입니다. 지난번 Communications link failure 질문 때 쓰던 그 서버인데, 트래픽이 조금 늘고 나서 애플리케이션 로그에 소켓 생성 실패가 뜨기 시작했습니다.
java.net.SocketException: Too many open files
at java.base/sun.nio.ch.Net.accept(Native Method)
...
Caused by: java.io.IOException: Too many open files파일 디스크립터 문제로 보고 limits.conf를 올렸습니다.
# /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
appuser soft nofile 65536
appuser hard nofile 65536SSH로 appuser로 직접 로그인해서 확인하면 값은 제대로 올라가 있습니다.
$ ulimit -n
65536그런데 서비스를 재시작하고 실제 프로세스 한도를 보면 여전히 1024입니다.
$ systemctl restart myapp
$ cat /proc/$(pgrep -f myapp.jar)/limits | grep "open files"
Max open files 1024 1024 files/etc/pam.d 쪽에 pam_limits.so도 들어있는 걸 확인했고 서버 재부팅까지 해봤는데 systemd로 뜬 프로세스만 1024로 남습니다. 쉘에서 본 값과 서비스 프로세스 값이 왜 이렇게 다른지, 서비스에 65536을 제대로 먹이려면 어디를 손대야 하는지 궁금합니다.
로그인 후 답글을 남길 수 있습니다.