apachetop via Apacheの負荷の状況を監視できる、apachetop - Unix的なアレ

へええ、これは知らなかった!アクセスログ解析型、なんですね。

『攻撃とも思われる負荷』というのは人やサーバースペックによって感覚は違うのだけど、確かに存在はしていて、たとえばうちの会社の携帯向けサービスではapacheの吐くアクセスログは1サーバあたり1日2GB弱なんだけども、これで大体秒間ピークGET数(≠PV/s)が400〜500ぐらい。これは個人的には「アタックされていると錯覚するぐらいログが流れていく」状態です。CPU利用率とかも高い高い。

こういう負荷状況で、さらに販促活動とかでピークが見込まれる場合、富豪的サイジングをしていない限りは多少の「おもり」が必要になります。

監視上、気をつけないといけないかなあ、と思ったのは

  • apacheアクセスログに「行」を出力するのは、リクエストの処理が完了してから
    • つまり、リクエストがきて、その処理に時間がかかっている間はアクセスログは出ていない
    • だから、ログの流れが急にストップしたり鈍化したらあやしい
  • ファイルシステムにもよるが 昔は?ログが2GBとか4GBを超えるとサーバーごと固まったと思う
  • アクセスログに %T は是非ほしい (処理にかかった時間)
  • server_statusも ExtendedStatus も必須

ちなみに、間にロードバランサとかリバースプロキシをいれたりしている場合、サーバにCPU/メモリ/IOリソースの余裕があるのにapacheのMaxClientsに達してユーザーから見ると「あれ?動いてない」ってなるときがあります。これ、KeepAlive Off にすると治ったりします。案外常識なのかもしれませんが是非お試しください。
(それとも、DoCoMoとかKDDIとかSoftBankさんのG/Wサーバとの間のKeepAliveがらみの仕様/相性/設計の問題なのかなあ)