スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
webadm | 投稿日時: 2006-10-6 2:26 |
Webmaster ![]() ![]() 登録日: 2004-11-7 居住地: 投稿: 3110 |
Apacheのチューニングを変更 どうも最近サーバーがネットワークバッファが塞がってしまってつながらない状態になる現象が頻発。apacheプロセスを全部終了させて残留しているソケットが解放されるのを待ってapacheを再起動して回復させるのだけれども、これだと以前接続数制限をしてなかった時みたいにwatchdogでrebootさせたほうがまだまし。
Apacheのチューニングをいじってから起き始めたのでそこに原因があるはず。 ・keepalive止めてたー>送ったデータ受け取らないで切断するワン切りソケットが残留する ・Apacheプロセスの終了期限処理回数を無限ー>ワン切りソケットがプロセス死ぬまで残る(強制終了させない限り残る) だったらしい。大失敗。 keepaliveは有効に戻し時間も30秒に短縮、通常リクエストの度に接続するのがほとんどなので、ずっと残すのはおかしい。 Apacheプロセスをある程度リクエスト数を処理したら残存ソケットを解放させるためにも終了させる。 あとApache最大プロセス数を半分に減らしネットワークバッファにメモリが行き渡るように。 これで少し様子見。 |
webadm | 投稿日時: 2006-10-7 15:32 |
Webmaster ![]() ![]() 登録日: 2004-11-7 居住地: 投稿: 3110 |
また塞がっていた 今度は調子が良いかなと思っていたらまた塞がっていた。
netstatで見ると以前と同じようにSend Qが貯まったまま残存しているsocketとそれ以上に沢山Rcv Qが貯まったまま残存しているsocketが多数。 順番的にはSend Qが貯まったままsocketが残る−>リソースが枯渇する−>新たな接続要求がやって来る−>要求は受け付けるが送信するリソースが無い−>そのまま固まる という感じだと予想するが、実際のところは障害に至る経過を観測する必要がある。 とりあえずApacheサーバーを止めてsocketが開放されるのを待ってApacheを立ち上げ直してtcpdumpでしばらく観測。 大抵の場合は綺麗にコネクションが開放されているが、時々TCP/IPの実装の差異かお終いのところで挙動不審なものもある。しかししばらく見た感じではsocketが残存は起きなかった。 しばらくバックグラウンドでtcpdumpでキャプチャーして再発したらそれまでの経過を細かく見ることにしよう。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |