エラーシナリオ現在、Django アプリケーションは基本的に uwsgi を使用してデプロイされています。以下のようなエラーが 2 回発生しています。以下は、これら 2 つのエラーを解決するプロセスです。
listen queue of socket "127.0.0.1:9001" (fd: 3)
<code><span>Tue</span><span>Jun</span><span>2</span><span>17</span>:<span>33</span>:<span>27</span><span>2015</span> - *** <span>uWSGI</span><span>listen</span><span>queue</span><span>of</span><span>socket</span><span>"127.0.0.1:9001"</span> (<span>fd</span>: <span>3</span>) <span>full</span><span>!</span><span>!</span><span>!</span> (<span>101</span>/<span>100</span>) *** <span>Tue</span><span>Jun</span><span>2</span><span>17</span>:<span>33</span>:<span>28</span><span>2015</span> - *** <span>uWSGI</span><span>listen</span><span>queue</span><span>of</span><span>socket</span><span>"127.0.0.1:9001"</span> (<span>fd</span>: <span>3</span>) <span>full</span><span>!</span><span>!</span><span>!</span> (<span>101</span>/<span>100</span>) ***</code>
。
このエラーに基づいて、システムレベルのパラメータに問題があるはずです。詳細については、Linux man ページの listen(2) を参照してください。ソケットの場合、受け入れが行われる前に、処理を待機しているソケットの長さは、Linux (少なくとも centos6.6) ではデフォルトで 128 ですが、私がコンパイルした uwsgi ではデフォルトは 100 です。つまり、以前はシステムパラメータを調整します。最高は 128 です。
では、
キューの長さを調整するにはどうすればよいでしょうか? * 有効にするにはシステムパラメータを調整する必要があります * uwsgi 設定を調整してからアプリケーションを再起動する必要があります
操作システムパラメータを変更します
設定ファイルはここで直接変更され、再起動後も有効です。
/etc/sysctl.conf ファイルを変更し、これらのパラメータ値を追加または変更します
<code><span>#对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了</span> net<span>.core</span><span>.somaxconn</span> = <span>262144</span> ?<span>#表示SYN<strong>队列</strong>的长度,默认为1024,加大<strong>队列</strong>长度为8192,可以容纳更多等待连接的网络连接数</span> net<span>.ipv</span>4<span>.tcp</span>_max_syn_backlog = <span>8192</span><span>#网卡设备将请求放入<strong>队列</strong>的长度</span> net<span>.core</span><span>.netdev</span>_max_backlog = <span>65536</span></code>
変更が完了したら、忘れずに
パラメータをリロードしてくださいuwsgi調整それが構成であっても、オプションを追加していてもたとえば、次の設定を ini ファイル<code><span>listen</span>=<span>1024</span></code>
sysctl -p
に追加し、アプリケーションを再起動して設定をリロードします。 まとめ
設定を変更することで、この種のエラーはほとんど発生せず、システムのスループットと同時実行性が大幅に向上しました。したがって、システムの特性とチューニングは、全体的なサービス品質を向上させるために非常に重要です。
リファレンス
somaxconn - その厄介な制限listen(2) - Linux man page