
У нас есть машина, работающая на Linux, где мы выставляем и также потребляем веб-сервисы на основе SOAP, которые используют настройки Keep Alive. Теперь, когда мы изменяем значение тайм-аута TCP Keep Alive, устанавливая "/proc/sys/net/ipv4/tcp_keepalive_time" в Linux, повлияет ли это как на TCP-клиентов, так и на серверы, работающие в этой коробке Linux?
Дополнительная информация: Мы используем конечные точки Apache Camel-cxf, развернутые в Apache Karaf (ServiceMix), для предоставления и использования веб-сервисов на основе SOAP.
решение1
Встроенная поддержка ядра Linux для TCP keepalive влияетвсеTCP-сокеты с поддержкой функции keepalive.
Однако TCP keepalive по умолчанию не включен: приложения должны явно запрашивать управление keepalive для своих сокетов с помощью интерфейса setsockopt
.
Проверить, включена ли функция keepalive для конкретного сокета, можно с помощью netstat
команды с -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)