我们的生产网络不稳定,因此发生了许多故障转移。我们注意到的一件事是,到1个机器集群总线端口的TCP连接数为3k(使用文档中的示例为16379)。这是该计算机上所有redis节点的情况。
使用显示计时器选项执行netstat时,可以看到keepalive已关闭。
sudo netstat -anpo | grep :165 | grep -v LISTEN
tcp 10.10.111.122:16379 10.10.111.121:41227 ESTABLISHED 2571/redis-server 1 off (0.00/0/0)
...
问题是,我们只能在Redis服务器节点所在的机器上看到这些连接,但是这些连接应该关闭(我们只能从一台机器上看到它们,而不能从另一台机器上看到它们
我们使用的Redis版本3.2.8,默认情况下已启用tcp-keepalive(设置为300),我们可以看到它正在为客户端的侦听端口工作
tcp 10.10.111.122:6379 10.10.111.121:50461 ESTABLISHED 2571/redis-server keepalive (103.28/0/0)
为什么不适用于群集总线端口?
答案 0 :(得分:0)
您可以使用libkeepalive:库预加载
它包含一个共享库,该库覆盖大多数二进制文件中调用的套接字系统,而无需重新编译或修改它们。该技术基于Linux中包含的ld.so(8)加载程序的预加载功能,该功能使您可以强制以比普通优先级更高的优先级来加载共享库。
react-dropzone
请参考以下链接进行实施。
https://medium.com/@rajivsharma.2205/enable-tcp-keepalive-on-redis-cluster-bus-153128e412fa