예전,
2018년 5월 28일 네트워크 성능에 관한 글을 올린 적이 있습니다.

물론 해당 글은 TOAST 에 올라왔던 글을 서버에 검토하면서 체크했던 것이지만요.

[SSP-01:root]/root>#sysctl net.ipv4.tcp_mem
net.ipv4.tcp_mem = 756747	1008999	1513494
[SSP-01:root]/root>#sysctl net.ipv4.tcp_mem
net.ipv4.tcp_mem = 756747	1008999	1513494
[SSP-01:root]/root>#sysctl fs.file-nr
fs.file-nr = 3920	0	3209106
[SSP-01:root]/root>#

세 값은 각각 현재 열려 있는 파일의 수, 현재 열려 있으나 사용되지 않는 파일의 수, 열 수 있는 파일의 최대 개수를 뜻합니다.

라고 작성했던 적이 있습니다.

그렇기 때문에 2020-11-11 jamtter 테스트 시, 바로 커넥션 이슈로 추측했고,

cat /proc/sys/net/ipv4/ip_local_port_range

으로 최대 open file 갯수 요청을 할 수 있었습니다.

그런데 말입니다… 서비스 테스트 시에 장애를 발견하게 되었습니다.

인프라 구축 시, nginx 를 두고 내부에 어플리케이션을 여러개 두는 기능을 구현했습니다.
(무중단 배포 서비스 구축을 위해.. )

nginx[33832]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: address already in use)

nginx.conf 의

events {
    worker_connections 39000;
}
worker_rlimit_nofile 40000;

내부 worker의 커넥션과 rlimit_nofile 의 갯수를 증가시켰어야했었는데,
스트레스 테스트 시 500 에러가 나던 원인 마지막 퍼즐을 찾았습니다.