OSのポート設定

概要

x-Servletを稼働させるサーバOS上のポート設定について説明します。

OSのポート設定について

通常のWebサーバは、クライアントとのソケット通信においてリクエスト受信側に対してのみポートを使用します。

クライアント <---ポート1----> Webサーバ
クライアント <---ポート2----> Webサーバ
クライアント <---ポート3----> Webサーバ
  ・・・
クライアント <---ポートn----> Webサーバ

ところがx-Servletのようなリバースプロキシはクライアント、Webサーバ双方とソケット通信を行う必要があります。

クライアント <---ポート1----> x-Servlet <---ポート4----> Webサーバ
クライアント <---ポート2----> x-Servlet <---ポート5----> Webサーバ
クライアント <---ポート3----> x-Servlet <---ポート6----> Webサーバ
  ・・・ ・・・
クライアント <---ポートn----> x-Servlet <---ポート 2n----> Webサーバ

このためポートが不足しエラーが発生する場合があります。
エラー回避のためにはOSの設定で使用できるポート数を増やす、ポートを再び要求するまで待機時間を小さくする、などの調整の必要があります。

OSごとの設定方法

Windows上での設定(Windows2003のみ)

Windows上でポート数を変更するには以下のレジストリの値を変更する必要があります。
※レジストリ値の変更についてはOSのマニュアルをご覧ください。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort

レジストリキー MaxUserPort の値(REG_DWORD)は10進で「60000」としてください。

Linux上での設定

Linux上でポート数を変更するには以下のファイルの値を変更する必要があります。

(例)

  • 変更前
    /proc/sys/net/ipv4/ip_local_port_range
    1024    4999
  • 変更後
    /proc/sys/net/ipv4/ip_local_port_range
    1024    61000

※上記の設定はOSを再起動すると無効となりますのでOS再起動には上記の変更を実行するようにしてください。

エラーメッセージ

ポートが枯渇すると以下のようなメッセージがerror.logに出力されます。

  • error.log
    WARN [YYYY/MM/DD hh:mm:ss] - WebContentsGetter:IOException.
    java.net.BindException: Address already in use: connect
TOP