服务器采用阿里云 用 PUMA 启动生产环境 运行一段时间之后 总是在几分钟内 cpu99%+ 由于目前处于测试阶段故而没有请求发生 请教大概什么原因? 新手求救
补充阿里云 CPU 截图 2 分钟内瞬间上 100%
production log 是 rails 输出的日志,可以看看能不能看出问题,是不是请求夯住了
另外 puma 还有一个单独的日志,记录 puma worker 的启/杀记录的,在 config/puma.rb 里面通过 stdout_redirect 设置的,也看下吧
你这个明显不正常,puma 的 worker_timeout 你设置的是啥?
改成 5 试试,cpu 再 100% 的时候应该能看到 puma 的 worker 被杀死然后重启
那就基本可以确定是你们的某个请求会导致一个长时间运行的任务,grep 一下 production.log 看看有没有执行时间特别长的请求,或者只看到进来没看到相应的请求
半夜又出现了 查看了 puma.log puma_error.log 均只有=== puma startup: 2018-05-03 22:56:24 +0800 === 启动记录,production.log 并未有异常记录,在 cpu 高负载的时候 api 请求并未收到
worker_timeout 改了没?看截图 这个线程已经运行了 14min?因催思婷
日志不多的话,grep 一下 20 分钟内 production.log 里每个请求的「开始行」和「结束行」,你会发现有一个请求没有打印「结束行」,因为处理他的线程彻底僵死了,连 puma 都干不掉它
或者临时把线上日志设置到 debug 层级,应该也可以发现点什么
或者查下上游 nginx 的日志,应该有返回状态为 499 的请求
最后,这种情况有个简单粗暴的处理方式,可治标不治本 —— 上 monit