!["/proc/sys/net/ipv4/tcp_keepalive_time"이 Linux의 클라이언트와 서버 모두에 영향을 줍니까?](https://linux55.com/image/94988/%22%2Fproc%2Fsys%2Fnet%2Fipv4%2Ftcp_keepalive_time%22%EC%9D%B4%20Linux%EC%9D%98%20%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%EC%99%80%20%EC%84%9C%EB%B2%84%20%EB%AA%A8%EB%91%90%EC%97%90%20%EC%98%81%ED%96%A5%EC%9D%84%20%EC%A4%8D%EB%8B%88%EA%B9%8C%3F.png)
Keep Alive를 사용하여 SOAP 기반 웹 서비스 설정을 노출하고 사용하는 Linux에서 실행되는 시스템이 있습니다. 이제 Linux에서 "/proc/sys/net/ipv4/tcp_keepalive_time"을 설정하여 TCP 연결 유지 시간 초과 값을 변경하면 이 Linux 시스템에서 실행 중인 TCP 클라이언트와 서버에 영향을 미치나요?
추가 정보: 우리는 apache karaf(servicemix)에 배포된 apache camel-cxf 엔드포인트를 사용하여 SOAP 기반 웹 서비스를 노출하고 사용합니다.
답변1
TCP keepalive에 대한 Linux 커널 내장 지원의 영향모두Keepalive TCP 소켓을 활성화합니다.
그러나 TCP 킵얼라이브는 기본적으로 활성화되어 있지 않습니다. 애플리케이션은 setsockopt
이 인터페이스를 사용하여 소켓의 킵얼라이브 제어를 명시적으로 요청해야 합니다.
netstat
옵션과 함께 명령을 사용하여 특정 소켓에서 keepalive가 활성화되어 있는지 확인할 수 있습니다 -o, --timers
.
여기서 볼 수 있듯이 동일한 프로세스는 두 가지 모드로 서로 다른 네트워크 소켓을 열 수 있습니다.
# netstat -anpo | grep 8999
tcp 0 0 10.10.171.44:48744 10.10.139.30:8999 ESTABLISHED 18232/java keepalive (83.39/0/0)
# netstat -anpo | grep 8009
tcp 0 0 10.10.171.44:8009 10.10.171.42:40947 ESTABLISHED 18232/java off (0.00/0/0)