Starman的最优最大请求设置是什么?



我正在运行Starman (v0.4014)和ngynx作为前端代理的Dancer (v1.3202)应用程序。我注意到我的负载均衡器每隔几个小时就会出现一个巨大的延迟高峰,我想知道这是否是工作器达到了请求限制并重新启动的原因。延迟从平均30ms增加到1000ms或更多。我检查了MongoDB,没有长时间运行查询。max-requests实际上对worker做了什么?当worker达到这个限制时会发生什么?

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

源自starman --help:

——max-requests每个工作进程要处理的请求数。违约1000 .

这意味着每个worker在处理了那么多请求后将退出。然后,主进程将为每个退出的worker启动一个全新的worker,并根据--workers设置维持worker的数量。

使用--max-requests通常是一件好事,特别是如果你的应用程序不是唯一在盒子上运行的东西,因为perl(众所周知)不会给回它使用的内存。工作进程的回收starman将内存返回给其他进程使用的方式。如果你的应用程序确实泄露了内存,这也可以帮助你的应用程序以良好的性能运行,而不是你的应用程序最终消耗所有的内存,需要被操作系统杀死。

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

你应该保持它的默认值1,000,除非你有很好的理由去改变它。如果你的应用程序是唯一运行在盒子上的东西,你确定它没有泄漏,你可以尝试使用更高的值来减少工人的回收频率。如果你知道你的应用有漏洞,你可能想要使用一个更低的值来更频繁地回收worker 。但是,通常这个设置对性能的影响应该很小。

也就是说,如果您的worker将内容缓存到内存中,那么回收worker 可能会对虚假的缓慢请求负责,因为新的worker需要花费一些时间来重建这些缓存,但是可能有许多其他可能的解释。您需要做一些分析,以找出导致您所看到的特定慢速的真正原因。

相关内容

  • 没有找到相关文章

最新更新