gpt4 book ai didi

ruby-on-rails - 为什么 ruby​​ 进程的 CPU 占用率为 100%

转载 作者:数据小太阳 更新时间:2023-10-29 08:10:46 50 4
gpt4 key购买 nike

我有一个 Rails 应用程序 (2.3.5) 在具有 4 核 @ 2 GHz 和 4GB 内存的 VPS 上运行。我在 Ruby Enterprise (1.8.7-2010.01) 上运行 nginx (0.7.61) 和 phusion passenger(2.2.14),最大池大小设置为 30。我的问题是似乎每个正在执行的 ruby​​ 进程一个 Rails 请求以接近 100% 的 CPU 运行。如果我运行 TOP,它们会在每次显示刷新时下降,这样它们就不会挂起,但它们仍然以 100% 的速度运行。

有什么办法可以降低它吗?或者至少弄清楚是哪部分代码在占用 CPU 资源?这是正常行为吗?

这是 TOP 输出:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                     
2427 psadmin 25 0 91904 76m 2696 R 100 1.9 739:05.96 Rails: /var/www/apps/main_rails_app/current
3457 psadmin 25 0 98180 82m 2532 R 100 2.0 711:21.91 Rails: /var/www/apps/main_rails_app/current
2415 psadmin 25 0 93952 77m 2708 R 99 1.9 727:49.31 Rails: /var/www/apps/main_rails_app/current
3455 psadmin 25 0 99204 83m 2528 R 69 2.0 726:04.70 Rails: /var/www/apps/main_rails_app/current
2791 psadmin 16 0 98044 81m 2492 S 31 2.0 0:10.16 Rails: /var/www/apps/main_rails_app/current
8034 psadmin 15 0 8160 3656 1772 S 1 0.1 0:35.39 nginx: worker process
8035 psadmin 15 0 8324 3696 1732 S 0 0.1 0:31.34 nginx: worker process
2588 psadmin 15 0 197m 183m 2712 S 0 4.5 1:02.16 Rails: /var/www/apps/main_rails_app/current

谢谢!

编辑:尝试使用如下所述的 follow fork 进行 strace。这是一遍又一遍地转储的输出:

sudo strace -f -p 3455

clock_gettime(CLOCK_MONOTONIC, {394577, 508326476}) = 0
select(0, [], [], [], {0, 0}) = 0 (Timeout)
--- SIGVTALRM (Virtual timer expired) @ 0 (0) ---
sigreturn()

最佳答案

检查您的日志中是否存在可疑行为。一般来说,rails 确实会占用大量 cpu……您也可以尝试将 strace 指向有问题的 pids。

关于ruby-on-rails - 为什么 ruby​​ 进程的 CPU 占用率为 100%,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3084916/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com