nginx 대량 연결 시 502 오류 발생
Nginx 로그 에 대량의 upstream time out, dmesg 와 / var / log / messages 가 시스템 로 그 를 보고 많은 오류 로 그 를 발 견 했 습 니 다: ipconntrack: table full, dropping packet
문제 의 원인
nf_conntrack 은 3 층 에서 작업 합 니 다. 현재 연결 수 를 보 는 명령 은 다음 과 같 습 니 다.
# grep conntrack /proc/slabinfo
nf_conntrack 은 nat 와 관련 이 있 습 니 다. 연결 항목 을 추적 할 때 해시 표를 사용 하여 established 의 기록 을 기록 합 니 다.nf_conntrack 은 2. 6.15 에 도입 되 었 습 니 다. 이 해시 표 가 가득 차 면 나타 납 니 다.
nf_conntrack: table full, dropping packet
이 문 제 는 연결 수가 너무 많아 서 생 긴 것 이다.
문제 해결
문제 의 원인 에서 우 리 는 연결 수가 너무 많 기 때 문 이라는 것 을 알 수 있다. nfconntrack 의 해시 표 가 꽉 차 서 생 긴 것 이다.
그렇다면 비교적 간단 한 해결 방향 은 nfconntrack_max 수치.
다음 내용 을 / etc / sysctl. conf 에 추가 합 니 다.
Centos 6 :
1
2
3
net.nf_conntrack_max = 655360
net.netfilter.nf_conntrack_max = 655350
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
Centos 5
1
2
net.ipv4.netfilter.ip_conntrack_max = 1655350
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1200
실행 명령: sysctl -p /etc/sysctl.conf
다음 오류 가 발생 하면:
error: "net.netfilter.nf_conntrack_max" is an unknown key
실행 명령: modprobe nf_conntrack
다시 실행: sysctl - p / etc / sysctl. conf
명령 통과: sysctl - a | grep nfconntrack 은 관련 매개 변수의 수 치 를 볼 수 있 습 니 다.
주: 여기에 net. ipv4. tcp 설정 도 추가 하 였 습 니 다.max_tw_buckets = 262144 TCP: time wait bucket table overflow 문 제 를 해결 하 는 데 사용 되 며, 대량의 포트 번 호 를 사용 하여 새 연결 이 포트 를 연결 할 수 없습니다.
참고 문서:
http://www.cnblogs.com/higkoo/articles/iptables_tunning_for_conntrack.html
http://www.d-kai.me/nf_conntrack-table-full-dropping-packet%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/
http://www.php-oa.com/2012/06/07/nginx-502-upstream-timed-out-110-connection-timed-out.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.