서버 성능을 조정하려고 합니다. 이를 위해 net.core.somaxconn
, net.ipv4.tcp_max_syn_backlog
및 와 같은 일부 sysctl 매개변수를 테스트하고 싶습니다 net.core.netdev_max_backlog
.
내 설정은 다음과 같습니다.
nginx docker 컨테이너를 실행하는 서버는
4vCPU
정적 페이지를 제공하는 테스트 웹 서버 역할을 합니다.One
16vCPU
, one8vCPU
, one4vCPU
로드 생성기로 nginx 서버에서 프레임워크를 사용하고 있습니다.locust
네트워크 서버 가상 머신의 기본 sysctl 매개변수를 사용하면 15k
RPS를 얻을 수 있습니다. 합계를 더 높은 값이나 더 낮은 값으로 변경한 후에도 net.core.somaxconn
결과는 변경되지 않았습니다. RPS로 설정하기도 했습니다. 그런 다음 대기열이 가득 차서 일부 패킷이 삭제되었는지 확인하기 위해 실행했으며 출력에서 비슷한 내용을 예상했습니다. 하지만 아무 것도 출력되지 않습니다.net.ipv4.tcp_max_syn_backlog
net.core.netdev_max_backlog
1
15k
netstat -s | grep LISTEN
syn
accept
123456 SYNs to LISTEN sockets dropped
다른 sysctl 매개변수를 테스트했습니다. 예를 들어 net.ipv4.tcp_keepalive_time
, net.ipv4.tcp_keepalive_probes
및 모두 0으로 설정했습니다 net.ipv4.tcp_keepalive_intvl
. 하지만 실행한 후에도 netstat -a | grep -i wait
여전히 많은 연결이 TIME_WAIT
활성화되어 있는 것을 볼 수 있습니다. 뭐가 문제 야? 도와주세요?