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 解释了大部分内容。
下面是我在服务器上 运行 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 解释了大部分内容。