Heroku如何确定每个dyno运行的Web进程数?

时间:2014-11-09 09:47:11

标签: django heroku newrelic waitress

我正在使用Heroku来托管django应用程序,而我正在使用Waitress作为我的Web服务器。 我运行2(x2)dynos,我在New Relic实例选项卡中看到我有10个实例正在运行。

我想知道Heroku如何确定使用Waitress时在一个Dyno上运行的Web服务器进程数量?

我知道在使用Gunicorn时,有一种方法可以设置每个dyno的进程数,但是没有看到任何方法在Waitress中定义它。

谢谢!

2 个答案:

答案 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