1週間くらい前からだろうか、次のバージョンのJBackup(早くしなきゃ)の最終テストとしながら、ダミー記事20,000タイトル(1タイトル、2000ワード。SQLデータで260MBにもなる。)をテスト用Joomla!1.5に入れ何度もテストを行っています。ところが、何度やってもなかなかサイトが表示されない。おかしい。あまりにも遅い(表示に5分以上かかる)のでプラグインをオフにしてみた。・・・でも、遅いではないか。えっ!これってJoomla!の限界!?
20,000タイトルごときで、と思う方もいるかもしれない。・・・まあ、20,000タイトルなんてそんなサイトなかなか無いと思うが、記事としてではなく、データとして20,000以上あるものは、ざらにあるのではないか。
そこで、何が原因か少し設定を変えて試してみた。
- 全モジュール(メインメニュー以外オフ)
あら、あっさりと、速くなったではないか・・・。そこで一つずつオフにしたモジュールをオンにしていった。で、オンにしたら極端に遅くなったモジュールを列挙。
- mod_latestnews
ちなみにこのモジュールの入り口から出口までの所要時間は、なんと104秒もかかりました。 - mod_mostread
これもほぼ同じです。
対策を考えて、そしてその対策を行った結果、104秒かかっていた処理時間が、1秒になった。なんと104分の1です。んだこれ。mod_latestnewsもmod_mostreadも同様なので208秒(3分28秒)くらいかかっていた時間が、2秒です。3分もサイトが表示されるのを待っている人なんてクリックしてから、「ご飯だよ~。」と呼ばれた人くらいのものだ。
で、その対策は以下
$query = 'SELECT a.*,' .
を
$query = 'SELECT a.title, a.access, a.sectionid,' .
のように変更するだけです。
念のため、phpMyAdminでも変更前のクエリで実行してみたらほぼ同じように104秒前後の結果でした。
クエリは、必要なフィールドだけにしましょう。(気をつけようっと)
これってJoomla!1.5(もしかしたらうちの1.0.xも・・)を使っている方すべてに言えることなのでこの対策をするだけで少しはみなさんのサイトも速くなるかもしれませんね。しかし、もっと効率の良い方法が、無いものなのか考えどころですね。もっとHackしてしまったらもう少し速くなると思いますが、Hackする部分が多くなってしまいますのでこのあたりにしておきます。
実は、JBackupのプラグインでは以前に記事にしたように同じデータで5000タイトル以前で破綻してしまいますが、新しいバージョンでは今回テストしている20,000タイトルでも処理する事ができます。新しい機能も追加したので現在のものより格段に使いやすいと思います。ま、バックアップ行為自体Joomla!のスクリプト上で行うことは、正直どうなの?感はありつつもせっかく公開したものなのでせめて使えるようにしたつもりです。もうすぐ公開です。
あ・・・今コンテンツマネージャーを開こうとしたら、メモリー不足のエラーで停止しちゃいました。ちなみにメモリーは現在32Mに設定しています。20,000タイトル260MBでは、32Mで無理なようです。(ちなみにリストの表示数を5に設定を変えたらいけました。)









80codeにサーバーを戻しました。一時的に見られない人がいるかもしれない。 なぜ戻したかというとそもそもCORESEVERに移転した原因が私であったこと、CORESERVERで奇妙な現象(私...