Mamboのサイトがとても遅い
去年から取り組んでいるサイト移行。ようやく東京のサーバで本格稼働開始。ところが、試験で使っていたときにはあまり感じなかったのですが、mamboがプロバイドしているサイトの表示がとても遅い。クリックしてから1分以上かかったり、Mamboのエラーが表示されたり。
コンテンツはMySQLへ入っていて、クエリで取り出して表示しているはず。ログ出力を有効にして調査してみる。
まず時間がかかっているクエリを調査
my.cnf中の[mysqld]セクション中にこんなディレクティブを入れる。
long_query_time=3 log-slow-queries=/tmp/slow.log
これで答えを返すまでに3秒以上かかったクエリがログにでる。
結果参照
こんなのがいっぱいでていました。
# Time: 110126 17:18:59 # User@Host: root[root] @ localhost [] # Query_time: 175.163659 Lock_time: 157.735721 Rows_sent: 0 Rows_examined: 0 SET timestamp=1296029939; UPDATE mos_core_log_items SET hits=(hits+1) WHERE time_stamp='2011-01-26' AND item_table='#__content' AND item_id='668';
mos_core_log_itemsってのをupdateしようとしてそれにやたら時間がかかっているみたい。175秒って。
このテーブルってなに?
Googleで検索しても大した情報はないなあ。中身をみると、日付とコンテンツ、それと表示された回数がストアされているテーブルみたい。hits=(hits+1)ってのでインクリメントしているんですね。
2005年からのデータがはいっていてやたら件数が多い。そりゃおそくなるよ。
indexを作って上げよう
いっそ全部消しちゃおうかなとおもったんですが、グッとこらえてindexを作ることで我慢。
mysql> create index mos_core_log_items_index on mos_core_log_items (time_stamp,item_table,item_id) ;
これでなんとか普通に表示できるようになりました。
このテーブルのデータ消していいのかなぁ、どうだろう。