我没有运行 Web 应用程序,而是运行需要提供实时预测的机器学习模型。
我正在使用 Nginx 和 Gunicorn,它们都在 docker 容器中运行。该设置使用 4 个 gunicorn 工作器,每个工作器有 1 个线程(托管我的模型的 4 个副本),以及 nginx 和 1 个工作进程。
目前,当我的客户端向我的服务器发送大量请求时,此设置会返回 502 错误。我想避免这种情况,即使这意味着每个请求的响应时间更长。
我尝试过的事情:
- 从 128增加到
net.core.somaxconn
2048:这可以缓解 502 问题。但是,我无法sysctl.conf
在生产环境中进行更改,因为我的 docker 容器以非特权模式运行(我无法控制这一点,因为它由另一个团队控制)。 - 完全删除 nginx。这确实有效,因为我不会从互联网接收流量,也不必提供静态内容,只需提供作为 HTTP POST 请求传入的 ML 预测。但我想避免这样做,因为 Gunicorn 不推荐这样做。
这里有谁能帮忙吗?