目次
- Working with TCP Sockets 読書メモ 第0章 はじめに
- Working with TCP Sockets 読書メモ 第1章 はじめてのソケット
- Working with TCP Sockets 読書メモ 第2章 サーバのライフサイクル
- Working with TCP Sockets 読書メモ 第3章 クライアントのライフサイクル
- Working with TCP Sockets 読書メモ 第4章 データのやり取り
- Working with TCP Sockets 読書メモ 第5章 データの書き込みとバッファリング
- Working with TCP Sockets 読書メモ 第6章 はじめてのクライアント/サーバ
- Working with TCP Sockets 読書メモ 第7章 ノンブロッキングIO
- Working with TCP Sockets 読書メモ 第8章 コネクションの多重化
- Working with TCP Sockets 読書メモ 第9章 ネーグルアルゴリズム(本記事)
ネーグルアルゴリズム
- ネーグルアルゴリズム(Nagle’s Algorithm)とは、全てのTCP接続にデフォルトで適用される最適化
- バッファリングをせず、非常に小さなデータを一度に送信するアプリケーションに適している
- 上のような条件に当てはまらない場合は無効化されることも多い
- HTTPのように、1つのリクエスト/レスポンスがTCPパケットのサイズを超えるようなプロトコルを使っている場合、このアルゴリズムはパフォーマンス低下を招く
- Ruby製のWebサーバは全てこのアルゴリズムを無効化している
require 'socket'
server = TCPServer.new(4481)
server.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
コメントをどうぞ