Nginx 프론트 프 록 시 할 때 TIME질문
6525 단어 nginx
nginx 에이전트 가 짧 은 링크 방식 과 백 엔 드 의 상호작용 을 사용 하기 때문에 시스템 TIMEWAIT 의 tcp 연결 이 많 습 니 다:
shell> netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
TIME_WAIT 250263
CLOSE_WAIT 57
FIN_WAIT2 3
ESTABLISHED 2463
SYN_RECV 8
ss 는 netstat 보다 빠 르 기 때문에 아래 명령 으로 볼 수 있 습 니 다.
shell> ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}'
이것 은 시스템 의 과도 한 포트 를 점용 하고 시스템 자원 을 낭비 하기 때문에 우 리 는 TIME 를 줄 일 방법 을 강구 해 야 한다.WAIT。
TIME_WAIT 로 인해 과도 한 포트 를 점용 하 는 영향 중 하 나 는 우리 가 사용 해 야 할 포트 를 점용 하 는 것 이다. 예 를 들 어 서비스 감청 포트 가 8012 이 고 재 부팅 할 때 포트 가 점용 되 었 음 을 알려 준다.보기 / proc / sys / net / ipv 4 / iplocal_port_range 는 설 정 된 Linux 커 널 자동 분배 포트 의 포트 범 위 를 알 수 있 습 니 다.
shell> cat /proc/sys/net/ipv4/ip_local_port_range
1025 65535
이 설정 시스템 은 1025 ~ 65535 범위 내 에서 랜 덤 으로 포트 를 분배 하여 연결 에 사용 합 니 다. 저희 서비스의 8012 포트 는 이 범위 안에 있 기 때문에 8012 가 시스템 에 의 해 분배 되 어 사용 되면 저희 서 비 스 를 시작 할 때 알림 포트 가 점용 됩 니 다.
그래서 설정 / proc / sys / net / ipv 4 / iplocal_reserved_ports 는 시스템 이 우리 에 게 어떤 포트 를 미리 남 겨 두 었 는 지 알려 줍 니 다. 자동 분배 에 사용 할 수 없습니다.
shell> vim /etc/sysctl.conf
net.ipv4.ip_local_reserved_ports = 8012,11211-11220
shell> sysctl -p
예약 포트 에 대한 더 구체 적 인 정 보 는 참고 할 수 있 습 니 다.
위 에서 우 리 는 포트 점용 문 제 를 해결 하 였 으 나, 우 리 는 TIME 를 해결 해 야 한다.WAIT 과 다 한 문제.Nginx 1.1 이상 버 전의 upstream 은 keep - alive 를 지원 하기 때문에 우 리 는 Nginx proxy 의 keep - alive 를 켜 서 tcp 연결 을 줄 일 수 있 습 니 다.
upstream http_backend {
server 127.0.0.1:8080;
keepalive 16;
}
server {
...
location /http/ {
proxy_pass http://http_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
...
}
}
Nginx 의 공식 문서 에 참가 할 수 있 습 니 다: http://nginx.org/cn/docs/http/ngx_http_upstream_module.html#keepalive
keep - alive 를 켜 고 TIMEWAIT 현저히 감소:
shell> netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
TIME_WAIT 12612
CLOSE_WAIT 11
FIN_WAIT1 4
FIN_WAIT2 1
ESTABLISHED 7667
SYN_RECV 3
또 많은 글 에서 TIME 를 줄 이기 위해 시스템 의 / etc / sysctl. conf 설정 을 수정 할 수 있다 고 언급 했다.WAIT tcp 연결:
net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1
참조: http://blog.s135.com/post/271/
하지만 tcp 오픈tw_recycle 는 불안정 한 네트워크 문 제 를 가 져 올 수 있 으 니 참고 하 시기 바 랍 니 다.
sysctl 관련 설정 에 대한 설명 은 다음 을 참고 하 십시오. https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt
참고 글:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.