簡體   English   中英

為什么 EC2 服務器上的多個 Ruby 進程會導致 100% 的 CPU 使用率?

[英]Why are multiple Ruby processes on an EC2 server causing 100% CPU utilisation?

我有一個 Rails 應用程序,它的 CPU 使用率大部分時間都是 100%。 我無法弄清楚為什么服務器上的負載如此之大。 我正在使用具有默認配置的 Puma Web 服務器,並使用sucker-punch gem 運行多個后台作業。 有 7 個文件正在使用 5 個工人的 sucker punch 作業:

include SuckerPunch::Job 
workers 5

我運行了top -i查詢並發現服務器上正在運行以下進程。 我可以在服務器上看到多個 Ruby 命令。 有人可以告訴我這是服務器上的正常行為還是有問題?

“top”命令的輸出

減少資源爭用的一些方法

您的用戶空間負載很高 (~48%),因此您可能希望減少 Web 應用程序中的工作人員數量,增加實例上可用的 CPU 數量,遷移到具有更好並發性和更好的 Ruby 版本真正的多核支持(例如 Rubinius 或 JRuby),或這些選項的某種組合。 根據您的代碼實際執行的操作,您可能還需要重新構建應用程序以從應用程序服務器卸載昂貴的 I/O。

此外,您的竊取時間相當高 (~41%),因此您的 EC2 實例可能已過載。 只需將您的應用程序移至負載較少的實例即可釋放足夠的資源以減少應用程序等待時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM