- PR -

apacheのTimoutについて

1
投稿者投稿内容
ヤン
会議室デビュー日: 2008/03/24
投稿数: 3
投稿日時: 2008-06-04 09:49
apache-httpd.confの「Timeout」ディレクティブについてですが、
この値を変更し、サーバ側の負荷を減らそうと考えます。

apache2.0.61を使用しているのですが、
デフォルト値の300から100に値を変更し、
100秒以上、応答の無いコネクションが切断されることを期待していたのですが、
実際には200秒経たないとコネクションが切断されないことがわかりました。

他に30や、50といった数値も試してみたのですが、
どれもコネクションの切断まで設定値の2倍の秒数を要してしまっております。

「そういうものだ」と言われてしまえばそれまでなのですが、
資料等を見ても、「実際は2倍の秒数」に関する記述が見当たりません。

どなかたご存知の方いらっしゃいましたらご教示ください。
よろしくお願いいたします。
ヤン
会議室デビュー日: 2008/03/24
投稿数: 3
投稿日時: 2008-06-17 14:49
自己解決しました。

apache-tomcatの連携にmod_jkを使用しているのですが、
AJP13というプロトコルの仕様で、
「リクエストがすべて転送されていない場合には、さらにデータを要求する」というものがあり、
その再要求を受けることによって、タイムアウトが2倍となっていました。

(1)クライアントよりリクエスト送信

(2)apacheがmod_jkへデータを受け渡し
↓※
(3)タイムアウト値を超えてもデータの全てが送信されないため、
apacheからmod_jkへデータ終了通知を送信

(4)mod_jkからデータ再送要求をapacheへ通知

(5)apacheがデータ受信を再試行
↓※
(6)タイムアウト値を超えてもデータの全てが送信されないため、
apacheからmod_jkへデータ終了通知を送信

(7)mod_jkからJavaサーブレットへ受信データの受け渡し

(Javaサーブレットからmod_jkへ処理結果を送信

(9)mod_jkからapacheへ処理結果を送信

(10)apacheからクライアントへ処理結果を送信

上記の※の時点で、apacheに設定したタイムアウト時間分の待ちが発生するため
2倍の時間がかかっていたことがわかりました。
1

スキルアップ/キャリアアップ(JOB@IT)