TCP/IP

23. HTTPサーバーやTCP適用業務への集中アクセスの工夫と注意

最近ではTCP/IP通信によってiSeries400へクライアント・ユーザーからのアクセスが集中する
ことは珍しくない。この中でHTTPサーバーを使用している場合は特に接続と切断が頻繁に
繰り返されることになる。

御社でiSeries400のHTTPサーバー(ALASKAを含む)を利用しているのであれば
NETSTAT の 3.TCP/IP接続状況の処理 を選択してリモート・アドレスの表示に注目して頂きたい。

あなたが接続したローカル・アドレスが大量に表示されているのがわかる。
しかし、しばらくF5キーを押しているとやがてはこれらは消滅して数個くらいのものになってしまう
であろう。これはiSeries400導入時の「TCPクローズ待ち時間タイムアウト」の値が120秒
設定されているためであり、SOCKET通信が終了してもPORTの確保だけは120秒間のあいだ
継続しているのである。CGI が何らかの応答で無反応になってしまうと120秒後にはTCP/IP がSOCKET通信を
強制的にクローズしてしまう。その結果ブラウザは何らかのエラーを受け取ることができる。
「TCPクローズ待ち時間タイムアウト」とはそのための設定値である。

しかし初期値の設定が120秒と長いために多くのユーザーからアクセスが集中したときは120秒
のあいだにPORTの確保がかなりの数で残ってしまう。
極度に集中した場合はOS/400は「オープンされているファイルの数が多すぎる」とのエラーを
出してクライアントからの要求をHTTPサーバー(ALASKAを含む)に渡さなくなってしまう。
結果、サーバー停止と同じことになる。
以降のサーバーへの要求はすべて不可能となってしまう。
「オープンされているファイルの数が多すぎる」とはメッセージとして適切ではなく意味がやや不明
であるが使用中の PORTの数が多すぎると警告しているのである。

この障害を避ける方法をご紹介する。

CHGTCPA TCPCLOTIMO(5)

のようにして「TCPクローズ待ち時間タイムアウト」を 5秒程度に短縮してやるとこの問題は解消される。
これはHTTPサーバーだけではなく他のTCP/IP適用業務で数多くのクライアントからのアクセス
が集中している場合も同じことである。
特にHTTPサーバーを利用される場合はこの設定を推薦する。