zabbix_agent + socat зависает с close_wait

zabbix_agent + socat зависает с close_wait

У меня следующая настройка: удаленные устройства, на которых запущен активный zabbix_agentd (версия 2.0) с использованием socat для туннелирования через HTTPS-прокси.

На стороне сервера: Apache с прокси-сервисом, позволяющим ПОДКЛЮЧАТЬСЯ к localhost:10051 (zabbix_proxy). Соединение зашифровано с помощью SSL, требующего действительный клиентский сертификат.

На стороне клиента: командная строка Socat beta8:

socat -d -d -ly "TCP-LISTEN:10051,bind=127.0.0.1,reuseaddr,fork" "PROXY:127.0.0.1:10051,connect-timeout=30 | OPENSSL:<server_domain_name>:443,connect-timeout=30,cafile=<CA_CERT_FILE>,certificate=<CLIENT_CERT_FILE>"

zabbix_agentd настроен на работу только в активном режиме и подключение к localhost:10051

Проблема: на некоторых машинах (небольшое меньшинство) некоторые соединения не закрываются должным образом, и дочерний процесс socat зависает с сокетом TCP в состоянии CLOSE_WAIT. У рассматриваемого сокета локальная конечная точка 127.0.0.1:10051, поэтому, похоже, что zabbix_agentd является виновником того, что не закрывает сокет правильно. Зависшие процессы socat потребляют много циклов ЦП и в конечном итоге приводят к сбою системы. Единственный способ их очистить — использовать сигнал SIGKILL.

Есть ли какие-нибудь рекомендации по решению этой проблемы, помимо периодического завершения зависших процессов?

Спасибо.

Связанный контент