ora*_*ges 1 ruby newrelic sidekiq ruby-on-rails-4
我有一个 sidekiq 工人排队大约 15 - 20 个不同类型工人的工作。当我转到 New Relic 的事务时,排队的每个工作人员甚至在执行之前需要 4-6 秒。我的 ActiveRecord 池为 25,Sidekiq 以 20 并发运行,有 1 个 Unicorn 进程。
我在 rails 控制台中对这个 worker 进行了基准测试,代码不到 2 秒(它做了一些繁重的处理)。有了这个奇怪的 4-6 秒延迟,New Relic 会在 6 到 8 秒执行时获取该工人的交易。
我使用 NewRelic::Agent::MethodTracer 完成了慢速工作器的执行方法,分组代码块试图更好地了解可能如此慢的原因,但 New Relic 仍然在它之前 4 -6 秒显示工作器到达任何分组块。
perform 方法中所有带有跟踪器的分组代码块每个都在 100 毫秒以下。
我不确定是什么导致每个工作人员暂停 4 到 6 秒——在运行 sidekiq 作业时,内存通常徘徊在 50 - 60% 的使用率(2 个数字海洋水滴在 1 gig),磁盘 I/O,并且 CPU 永远不会超过 60%。
我的应用程序在 Rails 4.1.4、Ruby 2.0、Postgres、Unicorn、Nginx 和 Redis 上运行
| 归档时间: |
|
| 查看次数: |
2470 次 |
| 最近记录: |