我有以下设置:运行活动 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 进程消耗了大量 CPU 周期,最终导致系统崩溃。清除它们的唯一方法是使用 SIGKILL 信号。
除了定期终止挂起的进程之外,还有什么解决此问题的建议吗?
谢谢。