在 uwsgi 配置上设置 max-requests 的副作用

在 uwsgi 配置上设置 max-requests 的副作用

为了尝试减少我们的 Web 服务器上的内存使用量,我必须将 uwsgi 配置上的 max-requests 属性设置为 50。

这有什么不好的方面?

我们现场有 10 名工人,看起来每 20 分钟左右就会轮换一次工人,但至少到目前为止,它似乎产生了预期的效果,我们没有接近内存极限。

我只是有点担心它可能会给用户带来副作用,但我不确定。有什么想法吗?

答案1

据我所知,设置的唯一缺点max-requests是,当运行在第一次向服务器发出请求时加载的应用程序而不是在工作器初始化时加载的应用程序(如 Django)时,每当工作器达到最大请求限制时,它响应的下一个请求就会延迟。延迟时间长短取决于您的服务器规格和应用程序的复杂性。

答案2

我在使用 max-requests 时遇到的一个问题是,由于请求在 worker 之间平均分配,因此我的所有 worker 都会同时被回收,它们都会同时达到 max-requests。如果您的应用程序加载时间过长,这可能是一个缺点。

如果你想减少 uWSGI 使用的内存量,你应该考虑:

  • 设置选项在 RSS 上重新加载和/或重新加载。它们允许您设置工作人员可以使用的最大内存量,如果达到最大值,则会被回收。

  • 如果您的应用程序是线程安全的,请尝试使用线程并减少工人数量。这种方法占用的内存较少,但需要进行一些测试。

相关内容