知識マップ: TCPのポート枯渇とTIME_WAIT ── 外部APIを大量に呼ぶ業務アプリがある日つながらなくなる原因と直す順番
記事「TCPのポート枯渇とTIME_WAIT ── 外部APIを大量に呼ぶ業務アプリがある日つながらなくなる原因と直す順番」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
TCPのTIME_WAITは原則として先に接続を閉じた側に残り、そのあいだ同じソケットの組は使えない。外部APIを大量に呼ぶ業務アプリでは、自分のマシンのエフェメラルポートか、途中のNATのSNATポートが尽きる。自分のマシンの枯渇は外向き接続の一斉失敗とイベントID 4227と4231で確かめ、Get-NetTCPConnectionでTIME_WAITやBOUNDの数をプロセスごとに見る。直すときは接続を使い回し、MaxConnectionsPerServerと並列度に上限を設け、リトライに間隔を置き、相手が対応していればHTTP/2で接続をまとめる。netshで動的ポートの範囲を広げることやTcpTimedWaitDelayでTIME_WAITを短くすることは一時しのぎで、AzureのSNATポート枯渇にはNAT Gatewayが勧められている。
flowchart LR
accTitle: TCPのポート枯渇とTIME_WAITの知識マップ
accDescr: Windowsでは、TIME-WAIT状態の長さがTcpTimedWaitDelayで、エフェメラルポートの範囲がnetshで構成できること、TIME-WAIT状態の接続をGet-NetTCPConnectionで確かめられること、MaxConnectionsPerServerやHTTP/2がソケット枯渇を和らげること、SocketsHttpHandlerがMaxConnectionsPerServerで構成できること、SNATポート枯渇をAzure NAT Gatewayで和らげられることを示します。
socket_exhaustion["ソケット枯渇"]
tcp_time_wait["TCPのTIME-WAIT状態"]
tcptimedwaitdelay["TcpTimedWaitDelay"]
ephemeral_port["エフェメラルポート(動的ポート)"]
netsh_dynamicport["netsh int ipv4 set dynamicport"]
get_nettcpconnection["Get-NetTCPConnection"]
socketshttphandler["SocketsHttpHandler"]
max_connections_per_server["MaxConnectionsPerServer"]
http2["HTTP/2"]
azure_nat_gateway["Azure NAT Gateway"]
snat_port_exhaustion["SNATポート枯渇"]
tcp_time_wait -.->|"で構成できる"| tcptimedwaitdelay
ephemeral_port -.->|"で構成できる"| netsh_dynamicport
tcp_time_wait -.->|"で確認できる"| get_nettcpconnection
socketshttphandler -->|"で構成できる"| max_connections_per_server
max_connections_per_server -.->|"軽減する"| socket_exhaustion
http2 -.->|"軽減する"| socket_exhaustion
azure_nat_gateway -.->|"軽減する"| snat_port_exhaustion
概念間の関係(全7件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- TCPのTIME-WAIT状態はTcpTimedWaitDelayで構成できます。
- エフェメラルポート(動的ポート)はnetsh int ipv4 set dynamicportで構成できます。
- TCPのTIME-WAIT状態はGet-NetTCPConnectionで確認できます。
- SocketsHttpHandlerはMaxConnectionsPerServerで構成できます。
- MaxConnectionsPerServerはソケット枯渇を軽減します。
- HTTP/2はソケット枯渇を軽減します。
- Azure NAT GatewayはSNATポート枯渇を軽減します。
主要概念の定義
機械可読データ
このデータセットについて
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。