0

Heroku を使用して Django アプリケーションをホストし、ウェイトレスを Web サーバーとして使用しています。2 (x2) dyno を実行すると、New Relic インスタンス タブに 10 個のインスタンスが実行されていることが表示されます。

Waitress を使用する場合、Heroku は 1 つの Dyno で実行する Web サーバー プロセスの数をどのように決定するのでしょうか?

Gunicorn を使用する場合、dyno ごとのプロセス数を設定する方法があることは知っていますが、ウェイトレスでそれを定義する方法は見当たりませんでした。

ありがとう!

4

2 に答える 2

0

そのため、New Relic サポートと話し合った後、彼らは問題を明確にしました。インスタンスタブでは明らかにプロセスのみがカウントされます (スレッドはカウントされません)。

私のProcfileでは、インスタンスをインスタンスタブに追加するRabbitMQワーカーも監視しているため、不一致があります。彼らの答えを引用するには:

インスタンス タブのインスタンスを正確に測定する方法を開発者に明確にしました。Python エージェントは、監視対象の各プロセスを 1 つのインスタンスとして表示します。スレッドは追加のインスタンスとしてカウントされません。django/ウェイトレス アプリだけでなく、いくつかのバックグラウンド タスクも監視していることに気付きました。バックグラウンド タスクと django プロセスを合わせて、合計 10 個のプロセスが監視されているようです。

于 2014-12-03T09:57:27.323 に答える
0

Waitress には、マスター プロセスと (デフォルトで) 4 つのワーカー スレッドまたはプロセスがあります。必要に応じて、これを変更できます。これらのオプションのドキュメントは次のとおりですwaitress-serve

http://waittress.readthedocs.org/en/latest/runner.html#runner

--threads=INT

アプリケーション ロジックの処理に使用されるスレッドの数。デフォルトは 4 です。

したがって、2 つの dyno があり、それぞれに 5 (4+1) スレッドがある場合、RPM ダッシュボードでこのアプリの合計は 10 インスタンスになります。

Heroku 2x dyno でサポートされる最大数がはるかに高いため、dyno にさらにプロセスを追加できます。

2X dyno は 512 以下をサポート

https://devcenter.heroku.com/articles/dynos#process-thread-limits

ただし、これとの調整に関するいくつかの議論をチェックしたい場合がありますGunicorn

ウェイトレスは、同期ワーカーに渡す前にクライアント本体全体をバッファリングする非同期マスター プロセスを持っているという点で異なります。したがって、サーバーは低速のクライアントに対して回復力がありますが、一度に最大 (デフォルト) 4 つの要求を処理することも保証されています。これにより、データベースが過負荷になるのを防ぎ、スケーリング サービスをより予測しやすくします。

ウェイトレスには外部依存関係がないため、heroku スラッグのサイズも小さく保たれます。

https://discussion.heroku.com/t/waitres-vs-gunicorn-for-docs/33

于 2014-11-10T19:22:21.500 に答える