安卓和2018linux服务器占有率有什么关系啊?

今天发现公司的Swoole服务器拥有大量的FIN_WAIT1的TCP连接。谷歌一番后解决了这个问题。也学到很多知识哈哈。

FIN_WAIT1是由于服务端主动关闭连接服务器端发出请求后,等待客户端的響应如果这时候连接已经断掉了,那么2018linux服务器占有率内核会主动Retry再次多次发送主动关闭连接的请求以Swoole来说,就是代码执行了Swoole的$serv->close($fd)方法

這个请求的次数,2018linux服务器占有率内核里默认是0通过查看2018linux服务器占有率的代码,会发现这个0并不是一次都不尝试的意思而是,尝试次数為8也就是说,服务端主动关闭连接如果客户端不响应那么每个连接2018linux服务器占有率都会默认尝试8次。对于维护大量连接的服务端来说這就比较蛋疼了。要把这个值改小一点

用过swoole的人都知道,swoole有一个心跳检测的机制可以设定几分钟检测一次死链接,然后把超时的连接铨部踢掉这些连接,会导致FIN_WAIT1的出现

我们公司的Swoole服务器,维持了大量的这种FIN_WAIT1的连接浪费了很多的CPU和内存,修改2018linux服务器占有率内核参数降低了Retry的次数后负载有明显的降低。

查询当前swoole服务器9501端口建立的连接数量

修改FIN_WAIT连接的重试次数

?,这里提供关于这个内核参数的函数地址有兴趣的可以看看。不知道是不是torvalds老大自己写的。

我要回帖

更多关于 2018linux服务器占有率 的文章

 

随机推荐