대량의 TIME 발견WAIT 솔 루 션전달 하 다
오늘 아침 출근 하 자마자 회사 의 여러 사이트 가 열 리 지 않 고 데이터 베 이 스 를 접속 한 다 는 동료 가 나 타 났 다.
서버 (windows) 는 매우 카드 가 있 는 것 을 발견 하고 서버 를 재 개 했 습 니 다. 시스템 에 들 어간 후에 도 문제 가 없 었 습 니 다. 시스템 프로 세 스 를 살 펴 보 니 my sql 의 점용 률 이 99% 에 달 했 습 니 다. 분명 한 것 은 my sql 연결 에 문제 가 생 겼 습 니 다.
netstat -an
192.168.12.13:3306 192.168.12.12:30443 TIME_WAIT
192.168.12.13:3306 192.168.12.12:30444 TIME_WAIT
192.168.12.13:3306 192.168.12.12:30445 TIME_WAIT
192.168.12.13:3306 192.168.12.12:30446 TIME_WAIT
192.168.12.13:3306 192.168.12.12:30447 TIME_WAIT
192.168.12.13:3306 192.168.12.12:30448 TIME_WAIT
192.168.12.13:3306 192.168.12.12:30449 TIME_WAIT
192.168.12.13:3306 192.168.12.12:30450 TIME_WAIT
192.168.12.13:3306 192.168.12.12:30451 TIME_WAIT
192.168.12.13:3306 192.168.12.12:30452 TIME_WAIT
... ...
TCP 프로 토 콜 에 의 해 정 의 된 세 번 의 악수 로 연결 을 끊 는 규정 에 따라 socket 이 자발적으로 닫 힌 쪽 socket 은 TIME 에 들 어 갑 니 다.WAIT 상태, TIMEWAIT 상 태 는 MSL (Max Segment Lifetime) 2 개 를 지속 하 며, Windows 에 서 는 기본적으로 4 분, 즉 240 초, TIMEWAIT 상태 에서 socket 을 회수 하여 사용 할 수 없습니다. 구체 적 인 현상 은 대량의 짧 은 연결 을 처리 하 는 서버 에 대해 서버 가 클 라 이언 트 의 연결 을 자발적으로 닫 으 면 서버 측 에 TIME 이 대량으로 존재 합 니 다.WAIT 상태의 socket 은 심지어 Established 상태 에 있 는 socket 보다 많 고 서버 의 처리 능력 에 심각 한 영향 을 주 며 사용 가능 한 socket 을 다 소모 하여 서 비 스 를 중단 합 니 다. TIMEWAIT 는 TCP 프로 토 콜 로 재 분 배 된 socket 이 이전에 남아 있 는 지연 메시지 의 영향 을 받 지 않도록 하 는 메커니즘 으로 필요 한 논리 적 보증 입 니 다. HKEY 에서LOCAL_MACHINE \ \ SYSTEM \ \ Current Control Set \ Service \ Tcpip \ \ Parameters, TcpTimed WaitDelay 라 는 DWORD 키 를 60 으로 설정 하여 TIME 단축WAIT 의 대기 시간
웹 서버 에 로그 인 (linux):
netstat -ae |grep mysql
tcp 0 0 aaaa:53045 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53044 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53051 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53050 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53049 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53048 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53055 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53054 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53053 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53052 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53059 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53058 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53057 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53056 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53063 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53062 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53061 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53060 192.168.12.3:mysql TIME_WAIT root 0tcp 0 0 aaaa:53067 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53066 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53065 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53064 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa53071 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53070 192.168.12.13:mysql TIME_WAIT root 0tcp 0 0 aaaa:53069 192.168.12.13:mysql TIME_WAIT root 0 시스템 에 대량의 TIME 가 존재 함 발견WAIT 상태의 연결 은 커 널 매개 변 수 를 조정 하여 해결 합 니 다.
vi /etc/sysctl.conf
파일 편집, 다음 내용 추가:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
/sbin/sysctl -p
매개 변 수 를 유효 하 게 하 다.
net.ipv4.tcp_syncookies = 1 SYN Cookies。 SYN , cookies , SYN***, 0, ;
net.ipv4.tcp_tw_reuse = 1 。 TIME-WAIT sockets TCP , 0, ;
net.ipv4.tcp_tw_recycle = 1 TCP TIME-WAIT sockets , 0, 。
net.ipv4.tcp_fin_timeout TIMEOUT
,
netstat -ae|grep mysql
tcp 0 0 aaaa:50408 192.168.12.13:mysql ESTABLISHED nobody 3224651
tcp 0 0 aaaa:50417 192.168.12.13:mysql ESTABLISHED nobody 3224673
tcp 0 0 aaaa:50419 192.168.12.13:mysql ESTABLISHED nobody 3224675
TIME_WAIT ,mysql , !!
, , mysql.colse(), mysql TIME_WAIT
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx 기록 응답 및 POST 요청 로그nginx 로그 조정 logformat 형식 은 모든 요청 정 보 를 기록 할 수 있 습 니 다. 친구 들 질문 에 대답 해 주세요. nginx 로그, post 의 인 자 를 기록 할 수 있 습 니까? 답: 실현 가...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.