我现在遇到一个问题。现象是:个别用户在连接成功后,在0-2秒之内会断开连接。检查了客户端,可以确定不是客户端主动断开。
这个断开连接数量,从服务器日志来看,还是比较频繁的。
现在服务器连接人数大约在1000左右。
请问出现这种问题的可能性有哪些?
Linux参数配置:
tcp_max_tw_buckets:20000
tcp_max_syn_backlog:262144
tcp_tw_recycle:0
file-max:6815744
root soft nofile 65535
root hard nofile 65535
CPU核数:16核
Gateway进程数:32
Worker进程数:64
根据手册,超过1000连接需要安装event扩展,并按照workerman手册优化linux内核
有event扩展:
libevent
libevent support => enabled
extension version => 0.1.0
Revision => $Revision$
libevent version => 2.0.22-stable
也已经按照手册优化内核了。
压测下,出现问题后 php start.php status 贴下
谢谢大神了!有大神的帮助我心里就有依靠!
你这个workerman版本太太低了,备份下整个项目,然后升级下workerman。
升级前先stop workerman
然后再压测下,出现问题后 php start.php status 贴下
之前有3.5的时候出现过
http://wenda.workerman.net/?/question/2689?notification_id-9630__rf-false__item_id-5179__answer_id-5179__single-TRUE#!answer_5179
这个问题。到现在也没有解决。但是这个问题在3.2中是没有的。
而且之前我们一只在用3.2比较稳定。现在不太敢用3.5了。
这个和3.2有重要关系吗?请问除了升级版本,有什么好的办法吗?
@1 大神求助!
应该不是版本影响。升级版本为了方便查看一些指标,比如是否使用了libevent/event扩展,进程是否有阻塞。
从status来看系统负载并不高,你这个问题有可能是业务问题或者客户端问题。
你可以通过 tcpdump -Ans 4096 -iany port 8890 抓包看是客户端还是服务端关闭了连接,关闭连接前传输了什么数据
现在有什么进展?我们也是同样的情况,客户端频繁被断开 tcp 连接
@1:如果是业务问题,那 workerman.log里应该有记录的异常信息吧?我们仔细排查过,业务并没有卡住的情况存在,每次请求响应都挺快的
不一定有记录,比如业务哪里执行了close关闭了连接不会有记录。workerman.log只会记录Fatal Error这种致命错误
断开连接问题先检查客户端是否有定时发送心跳数据保活,workerman是否安装了event扩展,并按照workerman手册优化了linux内核