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

tinyfeng · June 15, 2018 · Last by msg7086 replied at June 16, 2018 · 2918 hits

情况是这样的,在一台 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 超时。

Reply to breeze

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

Reply to tinyfeng

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

Reply to breeze

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

Reply to breeze

另外

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

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

Reply to tinyfeng

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

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

8 Floor has deleted
Reply to huacnlee

谢谢回复。学习了。

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

tinyfeng in CLOSE_WAIT puma 进程卡死,服务器无响应 mention this topic. 28 Feb 15:24
yfractal in CLOSE_WAIT puma 进程卡死,服务器无响应 mention this topic. 28 Feb 17:36
You need to Sign in before reply, if you don't have an account, please Sign up first.