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

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

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

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

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

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

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

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

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

共收到 11 条回复

看起来很复杂啊

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

请问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

CPU 占用率是多少?

huacnlee 回复

谢谢回复。学习了。

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

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册