📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

673行目: 673行目:
|}
|}
</center>
</center>
<br><br>
== NginXの設定 ==
* tcp_nodelay
*: 小さなパケットを大きなパケットに合成して、帯域幅の利用率を向上させる。(nagleアルゴリズム)
*: TCPプロトコルでは、<u>アプリケーション層のデータが非常に少なく(1バイト程度)、かつ、トランスポート層のオーバーヘッドが40バイト(IPヘッダ20バイト + TCPヘッダ20バイト)にもなる現象</u>がある。
*: この場合、送信データの多くは制御パケットであるため、帯域消費量が増加して、帯域利用率が悪くなる。
*: この問題を解決するため、新規に生成されたパケットは送信データが確認されるまで、あるいは、相手側からの確認応答があるまで、
*: 1MSSに切り上げる、または、確認応答があるまで待った後にタイムアウトまで送信する。
*: ネットワークの輻輳を避けるため、TCPスタックは0.2秒(Unixの実装の値)までデータを待つメカニズムを実装しており、小さすぎるパケットを送信することはない。
*: <br>
*: ただし、ネットワーク上でデータをストリーミングする必要がある場合、逆効果になる可能性がある。
*: ファイル転送を行う場合、転送するごとにクライアント側で0.2秒の遅延を発生させるからである。
*: <br>
* tcp_nopush
*: <u>この設定は、<code>sendfile</code>関数が使用する時にのみ動作する。</u>
*: 遅延を最適化する代わりに、1度に送信するデータ量を最適化する。(tcp_nodelayとは逆の働きをする)
*: Linuxにおいては、TCPスタックのTCP_CORKを有効にする。
*: <br>
*: TCP_CORKは、パケットがMSSに到達するまでデータをブロックするものである。
*: これは、MTUからIPヘッダの40バイト、または、60バイトを引いた値に等しい。
<br><br>
<br><br>