해결 방법: 1. keepalive 구성을 적절한 값으로 수정하여 포트 연결을 빠르게 해제할 수 있습니다. echo를 사용하여 "set tcp_keepalive_time"을 설정하세요. 구문은 "echo "specify value" > /proc/sys/net/입니다. 2. "/etc/sysctl.conf" 파일을 편집합니다. 구문은 "net.ipv4.tcp_keepalive_time=지정된 값"입니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.
문제 설명
개발 및 테스트 중에 서버 포트 연결이 끊어졌다가 다시 연결되면 연결이 거부되는 것을 발견했습니다.
분석: 포트가 8080이라고 가정하고 서버의 포트 점유를 확인합니다.
netstat -anp |grep 8080
포트 8080이 사용 중이고(IP는 로컬 IP이고 마지막 연결이어야 함) 상태가 ESTABLISHED로 표시되는 것을 발견했습니다. 그러나 실제로는 연결이 끊어졌지만 서버는 연결이 끊어지지 않았습니다. TCP 연결 유지 구성.
sysctl -a |grep keepalive
기본 구성으로 확인됨
net.ipv4.tcp_keepalive_time = 7200 net.ipv4.tcp_keepalive_probes = 9 net.ipv4.tcp_keepalive_intvl = 75
기본적으로 연결이 7200초 또는 2시간 동안 유휴 상태인 후 연결 상태를 확인하기 위해 연결 유지 감지 패킷이 전송됩니다.
해결책
해결책:
1. Keepalive 구성을 적절한 값(예: 200초로 변경)으로 수정하면 포트 연결이 빠르게 해제될 수 있습니다.
임시 수정, echo를 통해 tcp_keepalive_time을 설정하세요.
echo "200" > /proc/sys/net/ipv4/tcp_keepalive_time
2 이를 영구적으로 만들려면 /etc/sysctl.conf를 편집하고
net.ipv4.tcp_keepalive_time = 200
에 추가하거나 수정한 다음 명령을 실행하여 수정된 구성을 적용하세요
권장 학습: Linux 비디오 튜토리얼
위 내용은 Linux에서 TCP 연결이 해제되지 않는 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!