我们有同步服务(10.17.8.89),它通过HTTP长轮询同步来自复制器服务(10.17.4.184)的数据。 sync和replicator服务都是使用python请求lib和eventlet wisgi模块编写的。
Replicator服务接受端口6601上的请求,并且位于Apache httpd后面。 Rewirte规则用于代理请求。
重写规则如下所示
RewriteRule ^/sync.* http://localhost:6601%{REQUEST_URI}?%{QUERY_STRING} [P]
我们使用分块编码来传输数据。数据定义为length:data。 每2秒钟从复制器发送心跳'1:0'进行同步以保持连接活动。
Apache超时配置为20秒。
Apache通过将FIN数据包以随机间隔发送到复制器服务和同步服务,并在4分钟后发送,即使每隔2秒发送一次心跳,也会丢弃连接,从而丢弃连接。
任何人都可以帮助我们解决Apache断开连接的原因问题。