現在、さくらの専用サーバー(http://www.sakura.ne.jp/ss/02.shtml)で
duxi(http://duxi.jp/)というOpenPNEを利用したSNSを運営しているのですが、
最近、夜になるとアクセスが増えるせいか、めちゃくちゃサーバーが重くなります。
とりあえずMySQLのチューニングとしてmy-large.cnfをmy.cnfにコピったり
したのですが、それほど効果は見られていません。
次は何をするべきでしょうか?
パフォーマンスチューニングは一概に「これをすればよい」というのが存在しなく、ほとんど職人芸に近い世界です。
できればアクセスパターンを見てアプリケーションを変更するのが効果が大きいと思いますが、MySQL レベルで行えるチューニングとしては、
http://dev.mysql.com/doc/refman/4.1/ja/mysql-optimisation.html
こちらに載っている事を一つ一つ確認していく事になるでしょう。
なお、書籍ではこちらが最も詳しいと思います。
http://dev.mysql.com/doc/refman/4.1/ja/which-version.html
必要な言語モジュールだけ組みこんで、コンパイルし直せってこと。
なるべく文字コード変換が必要ない設定にする。
ありがとうございます。
問題解決する場合には現状を把握
された方がよいと思います。
(MySQL/CPU/MEMORY/DISK/LAN)
MYSQLに関してはMYSQLの性能測定ツール
mMeasure
があります。
http://mmeasure.sourceforge.jp/
http://www.timedia.co.jp/news/1608614249/@@index.html
mMeasure 利用ユーザのblog
http://www.multiburst.net/project-multiburst/archives/2006/07/31...
さっそくインスコしてみました。
当初、さくら専用サーバーの回線の問題ではないのかなぁと思ったのですが102Gbpsということなのでこれは原因ではないでしょう。しかし共有しているので他からの影響は否定できません。トラフィックレポートを見てみると22時ごろから数十Mbのトラフィックになっているのでその辺の理由ではないかなぁと思います。トラフィック制御がどうなっているか解りませんが単純に重いトラフィック(映像、音楽)が終わらないと次が処理されないようならサーバーが重く感じられると思います。
マシーンスペックもまず十分なレベルだと思います。これで『めちゃくちゃサーバーが重くなります』という状況を作ろうとすると相当なリクエストが必要と考えます。そうでなければ別な問題があるように思います。たまに重い処理が走っているとか。サーバの保守はご自身で行うということなのでapacheのログをみてレスポンスタイムはどの程度か確認する。ディスクの空き容量は十分あるか確認する。(空きが十分ないと使い回すために余計な処理が発生する)
単純な構成としてApache、PHPが動いていてリクエストに応じてphp scriptが実行されます。その中の更に一部にsql文があります。MySQLのチューニングで現在の1/2にもできないと思います。それにOpenPNEでは基本的にテキストを返すだけなので数秒で終わると思います。それを多少改善しても、体感として早くなったと感じるのは難しいように思います。
SQLを発行しないページに関してはそれほど重くもないので、おそらくMySQLまわりがネックになっているかと思われます…
MySQLのキャッシュなどを見直してみてはどうでしょうか。
できるだけキャッシュに回るようにしてみるのがいいかもしれません
http://itpro.nikkeibp.co.jp/members/ITPro/oss/20050213/156109/?P...
後はApacheを画像、HTML等のフロントエンドと、PHPの処理のみに利用するバックエンドサーバーと二つで振り分けるのも手かと思います。
それにより空きメモリが多少増えると思いますので、その分MySQLに振り分けるとかしてみるといいかもしれません。
ありがとうございます。