我有一个 Rails 应用程序,大部分时间 CPU 利用率为 100%。我无法弄清楚为什么服务器上有这么多负载。我正在使用带有默认配置的 Puma Web 服务器,并且正在使用吸盘打孔gem运行多个后台作业。有 7 个文件使用了 5 个工人的吸盘冲压作业:
include SuckerPunch::Job
workers 5
我运行了top -i
查询,发现服务器上运行了以下进程。我可以在服务器上看到多个 Ruby 命令。有人能告诉我这是否是服务器上的正常行为,或者是否有问题?
您的用户空间负载很高(约 48%),因此您可能希望减少 Web 应用程序中的工作线程数量、增加实例上可用的 CPU 数量、迁移到具有更好并发性的 Ruby 版本以及真正的多核支持(例如 Rubinius 或 JRuby),或这些选项的某种组合。根据您的代码实际执行的操作,您可能还需要重新构建应用程序以从应用程序服务器卸载昂贵的 I/O。
此外,您的窃取时间相当长 (~41%),因此您的 EC2 实例可能过载。简单地将您的应用程序移动到负载较少的实例可能会释放足够的资源以减少应用程序等待时间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句