Phusion Passenger Rails 未在工作人员之间平衡请求

Phusion Passenger Rails not balancing request across workers

下面是我在服务器上 运行 passenger-status

时的输出
Requests in queue: 0
 * PID: 1821    Sessions: 0       Processed: 2971    Uptime: 15m 11s
   CPU: 14%     Memory  : 416M    Last used: 0s ago
 * PID: 1847    Sessions: 0       Processed: 1066    Uptime: 15m 11s
   CPU: 6%      Memory  : 256M    Last used: 2s ago
 * PID: 1861    Sessions: 0       Processed: 199     Uptime: 15m 11s
   CPU: 1%      Memory  : 238M    Last used: 3s ago
 * PID: 1875    Sessions: 0       Processed: 37      Uptime: 15m 10s
   CPU: 0%      Memory  : 196M    Last used: 15s ago
 * PID: 1900    Sessions: 0       Processed: 7       Uptime: 15m 10s
   CPU: 0%      Memory  : 136M    Last used: 33s ago
 * PID: 1916    Sessions: 0       Processed: 4       Uptime: 15m 10s
   CPU: 0%      Memory  : 126M    Last used: 33s ago
 * PID: 1932    Sessions: 0       Processed: 1       Uptime: 15m 10s
   CPU: 0%      Memory  : 132M    Last used: 14m 44s ago
 * PID: 1946    Sessions: 0       Processed: 0       Uptime: 15m 10s
   CPU: 0%      Memory  : 68M     Last used: 15m 10s ago
 * PID: 1962    Sessions: 0       Processed: 0       Uptime: 15m 9s
   CPU: 0%      Memory  : 53M     Last used: 15m 9s ago
 * PID: 1980    Sessions: 0       Processed: 0       Uptime: 15m 9s
   CPU: 0%      Memory  : 53M     Last used: 15m 9s ago

我们 运行ning 的堆栈是 Nginx + Passenger + Rails。 我在这里担心的是,正如文档所说,passenger 必须在自己产生的 worker 之间分配负载,但正如我们从日志中看到的那样,只有前 2 个 worker 得到所有请求,其余的只是闲置。

随着时间的推移,顶级工作人员的内存使用量也会增加。 这是预期的行为吗? 我该如何纠正这个问题,我能否以任何方式提高性能?

我的乘客配置也在下面

  passenger_max_pool_size 20;
  passenger_min_instances 10;
  passenger_max_instances_per_app 0;
  passenger_pre_start <api-endpoint>;
  passenger_pool_idle_time 0;
  passenger_max_request_queue_size 0;

愚蠢的我,我几分钟前发表评论,现在我找到了答案。

总结:Passenger使用一个简单的算法来尽可能地填充top request,而不是使用round robin,你的应用没有问题。

link 解释了大部分内容。

https://www.phusionpassenger.com/library/indepth/ruby/request_load_balancing.html#traffic-may-appear-unbalanced-between-processes