Rails Rails Server 大量 CLOST_WAIT,进程卡死,服务器无响应

tinyfeng · 2018年06月15日 · 最后由 msg7086 回复于 2018年06月16日 · 2944 次阅读

情况是这样的,在一台 vps 上运行了rails s -p 3000 -b 0.0.0.0 &

然后运行数天或者数小时之后,突然发现大部分时候请求无响应,查看 rails log 也无请求记录,只有偶尔能够请求成功一次。

重点来了,执行lsof -i:3000后反馈如图

猜测应该是 CLOSE_WAIT 引起的,大概但是不知道具体原因,也不知道怎么防止这样的事情发生。

自己测试了一下,刚请求之后 lsof 了一下,会有这么一条记录

在请求成功后或者浏览器无响应取消请求后会变成 CLOSE_WAIT

补充:我这只是一个很简单的 http api 测试服务器,一开始并没有 CLOST_WAIT 的问题,是运行一段时间后出现的。

看起来很复杂啊

有进程或者线程卡住了。导致后面的请求一直在等待。

请问 rails s 是用 puma 吗?

如果你配上 nginx,可以设置 nginx 超时。

breeze 回复

是的,rails 5.2.0,因为我想直接通过 ip 加端口访问,就没用 nignx...

tinyfeng 回复

用了 nginx。也可以 ip 加端口访问呀

breeze 回复

方便....只是用来测试的

breeze 回复

另外

有进程或者线程卡住了。导致后面的请求一直在等待。

我新的请求都是 ESTABLISHED,然后变成 CLOSE_WAIT,确定是因为前面卡住了在等待吗

tinyfeng 回复

你看看这文章,再结合你的实际情况分析一下。

https://huoding.com/2016/01/19/488

8 楼 已删除
huacnlee 回复

谢谢回复。学习了。

Unicorn 是不能用来服务大众的。你请求量大了,服务器失去响应,属于合理现象。

tinyfeng CLOSE_WAIT puma 进程卡死,服务器无响应 提及了此话题。 02月28日 15:24
yfractal CLOSE_WAIT puma 进程卡死,服务器无响应 提及了此话题。 02月28日 17:36
需要 登录 后方可回复, 如果你还没有账号请 注册新账号