perl - perl Starman的最佳最大请求设置是什么?

  显示原文与译文双语对照的内容

我用 Starman ( v0.401 4 ) 和ngynx作为前端代理运行一个舞者( v1.320 2 ) 应用程序。 我注意到我的负载平衡器每几个小时都有巨大的延迟峰值,并且想知道是否达到了请求限制。 延迟从 30ms 平均到 1000ms 或者更多。 我检查了 MongoDB,并没有长期运行的查询。 当工人达到这个极限时,--max-requests实际上对工人做什么?

时间: 原作者:

--max-requests 设置的作用是什么?

来自 starman --help:

每个工作进程要处理的请求的--max-requests数。 默认为 1000.

这意味着每个工作者在处理许多请求后将退出。 然后,主流程将为每个退出的工人启动一个新的工作人员,根据 --workers 设置维护工作人员数量。

使用 --max-requests 通常是一件好事,特别是如果应用不是在框中运行的唯一东西,因为 perl ( notoriously ) 不会。 工作进程的回收starman 为其他进程提供内存的方法。 如果你的应用实际上泄露了内存,那么这还可以帮助你保持应用程序运行良好,而不是应用程序最终消耗所有内存,并需要由操作系统杀死。

--max-requests 设置的最佳值是什么?

除非有足够的理由更改它,否则应该保留它的默认值 1,000 。 如果你的应用是唯一运行在盒子上,你确定它不会泄漏,你可以尝试更高的值回收工人。 如果你知道你的应用泄漏了,你可能想使用一个较低的价值来回收工人。更多的信息,经常。 然而,通常这种设置实际上对性能几乎没有影响。

recycling,如果员工在内存中缓存stuff的请求,回收工人可能会缓慢的请求,因为新员工需要花一些时间重建这些缓存,但可能会有很多其他可能的解释。 你需要做一些分析来确定什么是真正导致了你看到的特定慢度。

...