zabbix_agent + socat pendurado com close_wait

zabbix_agent + socat pendurado com close_wait

Eu tenho a seguinte configuração: dispositivos remotos executando o zabbix_agentd ativo (versão 2.0) usando socat para encapsular através de um proxy HTTPS.

No lado do servidor: Apache com serviço de proxy permitindo CONNECT para localhost:10051 (zabbix_proxy). A conexão é criptografada com SSL, exigindo certificado de cliente válido.

No lado do cliente: linha de comando 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>"

O zabbix_agentd está configurado para funcionar apenas no modo ativo e para se conectar ao localhost:10051

Problema: em algumas máquinas (uma pequena minoria), algumas conexões não fecham corretamente e o processo filho socat trava com o soquete TCP no estado CLOSE_WAIT. O soquete em questão tem o endpoint local 127.0.0.1:10051, então parece que o zabbix_agentd é o culpado por não fechar o soquete corretamente. Os processos socat suspensos consomem muitos ciclos de CPU e eventualmente travam o sistema. A única maneira de eliminá-los é com um sinal SIGKILL.

Alguma recomendação sobre como lidar com esse problema, além de eliminar periodicamente processos suspensos?

Obrigado.

informação relacionada