1

Apache と mod_wsgi を使用して Linux サーバーをセットアップしました。私のApache構成から:

WSGIDaemonProcess myapp processes=1 threads=10

ここで myapp は Django Web アプリケーションです。myapp が Django HttpRequest オブジェクトで Apache から大きな http POST リクエストを受信すると、投稿されたデータにアクセスするのに最初の時間に数秒のウォールクロック時間がかかります。これは、POST の本文全体がネットワークから読み取られる前に myapp が呼び出され、投稿されたデータが読み取られるまで HttpRequest オブジェクト内の投稿されたデータへのアクセスがブロックされるためだと思います。

Apache が投稿されたすべてのデータを読み取るまで myapp を呼び出さない方法はありますか?

スレッドの数 (この場合は 10) を myapp での同時処理に最適な数に調整したいのでお願いします。したがって、ネットワークからの投稿データの受信を待つだけで、これらのリクエストに時間を費やしたくありません。

スレッドの数を 10 以上に増やして、別のメカニズムを実装して、最大 10 のスレッドが同時に処理されるようにする可能性があることは承知しています。

4

1 に答える 1

0

大きいとはどのくらいの大きさですか?

それが非常に大きい場合、Web アプリケーションに渡す前に何かが事前にすべてをメモリに読み込むと、メモリ使用量を吹き飛ばす危険があります。とにかく、Apache/mod_wsgi にはそのような事前読み取りを行う手段がありません。

Apache/mod_wsgi の前で nginx をプロキシとして使用すると、低速の HTTP クライアントから Apache を分離するのに役立ちますが、nginx は最大 1MB のリクエスト コンテンツ サイズをプロキシする前に事前読み取りのみを行います。大きなリクエストコンテンツサイズで事前読み取りとバッファリングを許可すると、前述のようにメモリ使用量について心配する必要があります。

おそらくすべきことは、これらの特定の URL を nginx にオフロードして、アップロード マネージャーで処理することです。例えば:

于 2013-08-12T12:55:07.787 に答える