Elastic search keep alive 问题

场景

client A 和 es server 不在一个 网络里面,只开了 9200端口通信。
client A 和 es 之间ping 不通。

问题

每个一段时间,比如过了一个晚上,访问es 的时候,总有一些请求 会timeout。
但是再发几个,或者重启都没有为问题。

root cause

linux server 的tcp 默认开启 tcp_keep_alive 机制。
默认2个小时,没有连接的话,就会去 发包探测对方是否还活着。
按道理,如果keep alive 机制正确的话,是不会断开连接的。

问题出在了网络环境,也就是我们 的client 和serve 不再一个 内网,需要过 核心路由器。
核心路由器一般都会有 一个 长连接掐断功能。
我们的核心路由器设置的时间是 30mins,所有很多连接被掐断了。

解决方案

  1. 要么修改 tcp 的keep alive 时间,小于 30mins。
  2. 要么在应用层自己发送 heartbeat。

我们用的是自己发送 heartbeat。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • HTTP Keep-Alive 在http早期,每个http请求都要求打开一个tpc socket连接,并且使用一...
    jiangmo阅读 10,193评论 0 2
  • 1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lso...
    北辰青阅读 13,188评论 0 11
  • 公司某产品的网页有安全保护机制,每过一段时间就会自动登出,没办法毕竟是对安全要求比较高的产品,所以只能不停地登录。...
    山猫猫那个红艳艳阅读 3,430评论 0 5
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 9,465评论 0 5
  • 育儿群热烈群聊。 浩妈焦虑地问:“我发现孩子的阅读理解能力偏弱,伙伴们有什么好的办法吗?娃必须提升一下!” 乐妈也...
    严红玉阅读 3,616评论 0 0

友情链接更多精彩内容