過負荷っぽい(^^;)
どうやら昨夜、サーバが過負荷状態に陥ってたようです。サーバに負荷が掛かるとまずsendmailがオチるんですが、ログに悲鳴が残ってました。
.
.
.
rejecting connections on daemon MTA: load average: 28
rejecting connections on daemon MTA: load average: 28
rejecting connections on daemon MTA: load average: 28
rejecting connections on daemon MTA: load average: 28
rejecting connections on daemon MTA: load average: 29
rejecting connections on daemon MTA: load average: 29
rejecting connections on daemon MTA: load average: 29
rejecting connections on daemon MTA: load average: 29
rejecting connections on daemon MTA: load average: 29
まぁ、確かに重いCGIを沢山走らせてますからねココ(^^;;
(レンタルサーバCHAT!さんの設置禁止CGIスクリプト情報)
sendmail.cfの該当設定箇所
# load average at which we refuse connections
#O RefuseLA=12
デフォルトでは「load avarageが12%以上になったら接続を投げ出せ」となってます。
もうちょっと様子をみるつもりですが、こんな調子が今後も続くようなら夏以降に予定してる「2GHz超級サーバへのリプレース」を早めなければならないかもしれません。ちょっとトホホ。
思い当たるフシとしては…、確かに、丁度この前日から某所の利便性を上げようと重た〜い処理を行わせるようになってました(>_<;)
・PHP4からMySQLにクエリーを出し
・出て来たクエリーの結果を再クエリー
・以上を数千回ループ
↑こんな処理。確かにこれは重いかもしらんです(^^;; 複数のアクセスが重なった場合はmysqldのCPU占有率が30%を越える事を確認しました。
ということで、上記の処理を元に戻しxloadで負荷状況を監視してます。以後は突出した負荷が発生してないみたいなんで、また暫く様子見。
ついでに/etc/my.cnfを/usr/shere/mysql/my-midium.cnfから作成(今まで作ってなかった:^^;)し、デフォルトの言語設定(EUC)を追記。デフォルトのlatinでは、日本語をソートした場合順序が意味不明になってたんで(カタカナとかが全然順番に並ばない:^^;)
[mysqld]
default-character-set=ujis
language = /usr/share/mysql/japanese/
↑対策後のtop出力。この辺がピークではあるんですが、それでもデータベースエンジン(だけ)は重いっす。プロセスが4つ5つ同時起動されると、1つ1つのプロセス負荷は減ってるんですが全部合わせるとかなりヤバいレベル。
逆に、データベースエンジンが動いてないときはほぼ1パーセント以下なんですけどね負荷率(^^;)