web-dev-qa-db-ja.com

uwsgiの無効な要求ブロックサイズ

皇帝モードでuwsgiを実行しています

uwsgi --emperor /path/to/vassals/ --buffer-size=32768

このエラーが発生する

invalid request block size: 21327 (max 4096)...skip

何をすべきか?? -b 32768も試しました

118
Kartik Rokde

いくつかのチュートリアルを実行中に、同じ問題にぶつかりました。問題は、socket = 0.0.0.0:8000ではなくhttp = 0.0.0.0:8000オプションを設定したことです。 socketオプションは、サードパーティのルーター(nginxなど)で使用することを目的としていますが、httpオプションが設定されている場合、uwsgiは着信HTTPリクエストを受け入れ、それを単独でルーティングできます。

178
Palasaty

正しい解決策は、HTTPプロトコルに切り替えることではありません。 uWSGI設定でバッファサイズを増やす必要があります。

buffer-size=32768

またはコマンドラインモードで:

-b 32768

公式文書からの引用:

デフォルトでは、uWSGIは各リクエストのヘッダーに非常に小さなバッファー(4096バイト)を割り当てます。ログで「無効な要求ブロックサイズ」の受信を開始した場合、より大きなバッファが必要になる可能性があります。 buffer-sizeオプションを使用して、それを増やします(最大65535)。

ログのリクエストブロックサイズとして「21573」を受け取った場合は、HTTPプロトコルを使用して、uwsgiプロトコルを話すインスタンスと会話している可能性があります。これをしないでください。

ここから: https://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html

112
Farsheed

--protocol = httpをuwsgiに追加して修正できました

14
ajamardo

私はnginxの下でそれを実行しようとして同じ問題に遭遇し、ドキュメントをフォローしていました here 。 nginxに切り替えたら、-socket paramで指定されたポートではなく、nginx.confの「listen」ポートでアプリにアクセスしようとしていることを確認する必要があることに注意することが重要です。問題の説明は異なりますが、タイトルは私が抱えていた問題と完全に一致します。

13
Paulo SantAnna

このエラーは、uWSGIサーバーがuwsgiプロトコルを使用しており、httpまたはWebブラウザーでcurlプロトコルを介して直接アクセスしようとすると表示されます。可能であれば、httpプロトコルを使用するようにuWSGIサーバーを構成して、Webブラウザーまたはcurlを介してアクセスできるようにしてください。

変更できない場合(または変更したくない場合)は、ローカルまたはリモートのuWSGIサーバーの前でリバースプロキシ(たとえばnginx)を使用できます。 https:// uwsgi-docsを参照してください。 readthedocs.org/en/latest/Nginx.html

あまりにも手間がかかりそうな場合は、uwsgi-tools pythonパッケージを試してください。

$ pip install uwsgi-tools

$ uwsgi_curl 10.0.0.1:3030

Webブラウザーなどを介してアプリケーションにアクセスする必要がある場合は、単純なリバースプロキシサーバーuwsgi_proxyもあります。詳細な回答を参照してください https://stackoverflow.com/a/32893520/179581

6
Andrei