【问题标题】:What is the optimal --max-requests setting for Starman?Starman 的最佳 --max-requests 设置是什么?
【发布时间】:2016-10-28 20:27:40
【问题描述】:

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

【问题讨论】:

  • FWIW,我强烈推荐 uWSGI 而不是 Starman。根据我的经验,在各个方面都更深入,更可靠。
  • 我的经历不同:我有一个 Starman 设置,每天可以愉快地处理超过 100,000,000 次请求,几个月都没有问题。

标签: perl nginx dancer starman


【解决方案1】:

--max-requests 设置有什么作用?

来自starman --help

--最大请求数 每个工作进程要处理的请求数。默认值 到 1000。

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

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

--max-requests 设置的最佳值是多少?

除非您有充分的理由更改它,否则您应该将其保留为默认值 1,000。如果您的应用程序是唯一在盒子上运行的东西,并且您确定它没有泄漏,您可以尝试使用更高的值来减少回收工人的频率。如果您知道您的应用存在漏洞,您可能希望使用较低的值来经常更多地回收工人。但是,通常此设置实际上对性能的影响应该很小。

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

【讨论】:

  • 保持活动连接怎么样?对我来说,一个保持活动连接上的多个 HTTP 请求似乎只是一个请求。你能证实这个观察吗?
猜你喜欢
  • 2015-11-23
  • 2023-04-10
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多