worker_connections를 올리기 전에 NGINX 프록시 소켓을 산정하세요
프록시 연결은 보통 클라이언트와 업스트림 소켓을 모두 차지합니다. 워커의 연결 한도와 서비스의 파일 디스크립터 한도를 구분하세요.
오래 유지되는 프록시 연결은 보통 클라이언트용과 업스트림용 두 소켓을 차지합니다. worker_connections은 양쪽을 모두 셉니다. 따라서 이것을 worker_processes로 곱한다고 해서 프록시 사용자에게 용량을 보장하는 것은 아닙니다.
연결이 실패하면 보고된 한도를 따르세요.
| 근거 | 확인할 설정 또는 프로세스 상태 |
|---|---|
| worker_connections 고갈 | 업스트림 소켓을 포함한 워커의 연결 예산 |
| 운영 체제의 “열린 파일이 너무 많음” | 실제 서비스 프로세스가 상속하는 파일 디스크립터 한도 |
수신 소켓, 로그 및 기타 열린 파일도 디스크립터를 소비합니다. 연결 재사용과 트래픽 구성은 사용자와 소켓의 관계를 바꿉니다.
worker_rlimit_nofile는 환경의 권한 범위에서 워커 한도를 조정합니다. systemd 유닛은 LimitNOFILE을 설정할 수 있지만, 대화형 셸의 ulimit은 실행 중인 서비스를 바꾸지 않습니다.
한도는 작업 부하에 맞게 산정하고 누가 소비하는지 확인하세요. 예상치 못한 클라이언트나 반복적으로 실패하는 업스트림 연결은 이전에 충분했던 예산을 고갈시킬 수 있습니다. 프로세스 수나 메모리 한도를 늘려도 디스크립터 부족은 해결되지 않습니다.