我正在使用Heroku来托管django应用程序,而我正在使用Waitress作为我的Web服务器。 我运行2(x2)dynos,我在New Relic实例选项卡中看到我有10个实例正在运行。
我想知道Heroku如何确定使用Waitress时在一个Dyno上运行的Web服务器进程数量?
我知道在使用Gunicorn时,有一种方法可以设置每个dyno的进程数,但是没有看到任何方法在Waitress中定义它。
谢谢!
答案 0 :(得分:2)
因此,在与New relic支持人员交谈之后,他们澄清了这个问题。 显然,只有进程在实例选项卡中计数(线程不计算)。
在我的Procfile中我也在监视RabbitMQ worker,它们将实例添加到实例选项卡,因此不匹配。 引用他们的答案:
我向开发人员澄清了我们如何测量实例选项卡的实例。 Python代理将每个受监视的进程视为一个实例。线程不算作其他实例。我注意到你不仅要监控你的django /女服务员应用程序,还要监控一些后台任务。看起来后台任务加上django进程正在累计监控的10个进程。
答案 1 :(得分:0)
在Waitress中,有一个主进程和(默认情况下)4个工作线程或进程。如果您愿意,可以更改此项。以下是waitress-serve
http://waitress.readthedocs.org/en/latest/runner.html#runner
- 线程= INT
用于处理应用程序逻辑的线程数,默认为4。
因此,如果您有两个dynos,每个都有5(4 + 1)个线程,那么RPM仪表板中此应用的总数将达到10个实例。
可以为dynos添加更多进程,因为Heroku 2x dynos支持的最大值更高:
2X dynos支持不超过512
https://devcenter.heroku.com/articles/dynos#process-thread-limits
但是,您可能想要查看有关调整此Gunicorn
的一些讨论:
Waitress的不同之处在于它有一个异步主进程来缓冲 整个客户端主体在传递给同步工作者之前。因此,服务器 对慢速客户端具有弹性,但也保证可以处理最大值 (默认)一次4个请求。这样可以避免数据库过载,并且 使扩展服务更具可预测性。
因为女服务员没有外部依赖,所以它也保留了heroku slu size尺寸较小。
https://discussion.heroku.com/t/waitress-vs-gunicorn-for-docs/33