我有大多数时间都具有100%CPU使用率的Rails应用程序。
我无法弄清楚为什么服务器上的负载如此之大。我正在使用默认配置的PUMA应用程序服务器,并且正在使用sucker-punch gem
运行多个后台作业。共有7个文件正在使用5名工人的吸盘打孔工作
include SuckerPunch::Job
workers 5
我运行了top -i
查询,发现服务器上正在运行以下进程。我可以在服务器上看到多个ruby命令。有人可以说出这是服务器上的这种正常行为还是出了什么问题。
答案 0 :(得分:1)
您的用户空间负载很高(〜48%),因此您可能希望减少Web应用程序中的工作程序数量,增加实例上可用的CPU数量,并迁移到具有以下功能的Ruby版本:更好的并发性和真正的多核支持(例如Rubinius或JRuby),或这些选项的某种组合。根据您的代码实际执行的操作,您可能还需要重新架构应用程序,以从应用程序服务器上卸载昂贵的I / O。
此外,您的窃取时间非常长(〜41%),因此您的EC2实例可能超载了。只需将您的应用程序移至负载较小的实例,就可以释放足够的资源来减少应用程序的等待时间。