mysqlに限らず,同時にデータベースに接続できるユーザ数を制限できます.
linuxの場合,my.cnfに
set-variable = max_user_connections=4
のような1行がある場合があります. これは単純に,コンソール/php-mysql経由問わず,同時に接続できる人数の上限を制限しています.
パスワードは合っているはずなのに,コンソールに入れたり入れなかったりする事態に遭遇しましたが,原因はこれでした.
私がここまで厳しい制限をかけているのは,過去にmysqldが何度もダウンする事態に遭遇した為です.
/var/log/messagesによると,
1. mysqlにクエリが殺到
2. mysqldが1.5GBの物理メモリと2.0GBのスワップ領域を食いつぶす
3. OOM Killerがmysqldをkillする
という流れだったようです.制限のない状態では,毎日のようにこれが繰り返されていましたが,適切に制限する事でとても安定するようになりました.
1つのデータベースで500MBあり,これに対して " * "のような処理を掛けたりすると,かなり負担になっているのかもしれません.WindowsXPと同程度のサイズです.
もともと研究のデモ実装目的で自宅サーバを用いて,何度となく役に立っては来ましたが,やはり時代はクラウド. 信頼性にも欠けますし,そろそろGAEとかにシフトさせようかと思います.
OOM Killer
OOM Killerは,仮想メモリ空間を使いすぎてOSやアプリケーションがmallocできない危険性が迫ったとき,OSの安定可動を守る為にヒューリスティックなアルゴリズムでアプリケーションやサービスデーモンを停止させる仕組みです.
悪い子を刈り取るデスサイズというわけです.
ブログ「PHPに惚れました。」(Xephy氏)
PHPからTwitterのAPIを叩く方法等について紹介されています.
web系の方は実用的な情報が多いので,ぜひ見てみてください.