サーバーの負荷が高いときに、ブラウザから Web Server への接続タイムアウトが発生している場合は、HTTP リスナーのバックログキューのサイズを増やすことができます。この設定を増やすには、HTTP リスナーの待機キューの値を編集します。
また、この設定に加えて、Solaris TCP/IP ネットワークコード内の制限も増やしてください。次のコマンドを実行することによって変更される 2 つのパラメータが存在します。
/usr/sbin/ndd -set /dev/tcp tcp_conn_req_max_q 8192 /usr/sbin/ndd -set /dev/tcp tcp_conn_req_max_q0 8192
これらの 2 つの設定によって、待機中の接続でいっぱいになる可能性のある 2 つの Solaris 待機キューの最大数が増えます。tcp_conn_req_max_q によって、accept() 呼び出しからの復帰を待っている完了した接続の数が増えます。tcp_conn_req_max_q0 によって、ハンドシェークが未完了の接続の最大数が増えます。デフォルト値はそれぞれ、128 と 1024 です。これらの ndd コマンドがシステムの再起動のたびに自動的に実行されるようにするには、そのコマンドを /etc/init.d/network-tuning という名前のファイルに格納し、そのファイルへのリンクを /etc/rc2.d/S99network-tuning という名前で作成します。
これらの変更の効果は、netstat -s コマンドを使用し、tcpListenDrop、tcpListenDropQ0、および tcpHalfOpenDrop 値を確認することによって監視できます。調整を行う前に、これらの値を確認してください。これらの値が 0 でない場合は、最初に 2048 に調整し、netstat 出力の監視を続けます。
Web Server HTTP リスナーの待機キューの設定と、それに関連する Solaris の tcp_conn_req_max_q と tcp_conn_req_max_q0 の設定は Web Server のスループットに一致するはずです。これらのキューは、Web ユーザーから受信した接続の不規則な比率を管理するための「バッファー」として機能します。これらのキューによって、Solaris はそれらの接続を受け付け、それらが Web Server によって処理されるまで保持することができます。
Web Server が処理できる量より多くの接続を受け付ける必要はありません。これらのキューのサイズを制限し、過剰な接続を受け付けたために接続に対応できなくなるより過剰な接続を拒否することをお勧めします。一般に、これらの 3 つのパラメータの値を 2048 に設定すると接続要求の失敗が減少し、4096 までの値でパフォーマンス向上が確認されています。
この調整はどの Web ホスティング環境にも悪影響を与えないと予測されているため、システムが前述の症状を示していない場合でも、この提案を検討できます。