Nginx 높은 upstream_connect_time

Nginx 높은 upstream_connect_time

Tomcat 서비스의 역방향 프록시인 Nginx를 사용하여 Docker를 설정했습니다. 로드가 많은 경우(테스트) 응답 시간이 급증합니다.

Nginx가 없는 Tomcat 서비스의 한 인스턴스가 앞에 Nginx가 있는 여러 서비스보다 더 잘 작동하는 것으로 나타났으므로 문제는 Nginx와 Tomcat 사이에 있습니다. 추가 조사를 통해 Nginx upstream_connect_time이 최대 3초, 때로는 7초까지 가는 것을 확인했습니다.

Nginx에서 keepalive, keepalive_connections, Proxy_connect_timeout, Worker_processes 및 Worker_connections를 사용해 보았지만 아무 도움이 되지 않았습니다. 내 목록의 다음은 Tomcat max_connections에 대해 더 높은 값을 시도하는 것입니다.

upstream_connect_time이 높은 이유는 무엇입니까?

답변1

나는 이것을 추가하여 해결했습니다.

proxy_http_version 1.1; 
proxy_set_header Connection ""; 

이것이 없으면 keepalive는 아무 의미가 없으므로 keepalive 매개 변수 설정은 아무런 효과가 없습니다.

내가 올바르게 이해했다면 http 1.1에서는 동시 응답 및 요청에 동일한 연결을 사용할 수 있으며 헤더에 연결 ""을 추가하면 연결을 계속 열어 두는 데 사용됩니다.

Layman 용어로 이전에 Nginx에 업스트림 Keepalive를 사용할 수 있다고 말했지만 연결을 열어두는 방법을 알도록 구성하지 않았습니다(http 1.1 및 헤더 연결 부분이 있음). 사용되는 곳에 Keepalive가 없습니다. .

결국, 이 두 매개변수가 올바르게 설정된 경우 Keepalive 500은 "정상적인" 성능에 충분했지만 트래픽이 많은 상황을 고려하여 Keepalive 1000이 유지되었습니다.

관련 정보