大規模サイトにおけるアンケートレポートの集計

2013年2月15日 at 15:25

現在5.4.2.2で、大規模なサイトを運営しているのですが、ページの多くに公式ブロックによりアンケート(このページの情報は役に立ちましたか?という趣旨のもの)を1ページあたり2ブロック挿入しています。

アンケートを挿入しているページ数が多すぎるのか、http://【base_url】/dashboard/reports/surveys/view/を開こうとすると、表示に非常に時間がかかります。(おおむね2〜3分程度)

全部で2000ほどアンケートがある状況なので、一覧を生成するのに時間がかかっているのではないかと推測しているですが、一度に表示されるのは10件なので、この辺りなんとか表示を高速化させられないでしょうか?

どなたか知恵をおかしください。
よろしくお願いします。

タグ:

Re: 大規模サイトにおけるアンケートレポートの集計

2013年2月15日 at 20:06
件数が増えてくると、ある程度どうしようもないのですが…。myisamchk コマンドなどでメンテナンスを行えば解決するかもしれません。ただ、何かメンテナンスをする場合は必ずバックアップを取り、復旧できる状態で行なってください。
 

Re: 大規模サイトにおけるアンケートレポートの集計

2013年2月16日 at 5:19
concrete5のアンケート機能は、実は裏側はフォーム機能と一緒で、項目を自由に追加削除できるかわりに、その中身はかなり正規化されまくってます。
そのため、通常の一覧では5、6個のテーブルを結合してデータを表示させているためにかなり重くなります。
2000件程あるという事ですから、その処理量はさらにすごいと思います。

まず試すべき事はMySQLのクエリキャッシュの設定を適正な設定にする事です。
あとはAPCの導入ですね。

それでもダメな場合は、DBサーバを増強するか、アンケート結果を表現するMySQLのviewを作成し管理画面でそれを参照する様にカスタマイズすると良くなると思います。

それでもダメならクソ早いアンケートブロックを0から書くしかないですね...
 

Re: 大規模サイトにおけるアンケートレポートの集計

2013年2月18日 at 11:11
hissyさん、taoさん、ご返答ありがとうございます。

データベースについては現在InnoDBを利用しており、既に最適化はしている状態です。

クエリキャッシュは過去にも増やしたことがあるのですが、改善が見られないので、これ以上の効果は見込めないように感じます。

APCについては導入自体はできそうです。
phpコードのキャッシュを行うモジュールというのは理解しましたが、導入に際して注意事項などあればご教示いただきたいです。
APCの利用においてはアンケートブロックやview.phpファイルのオーバーライドなどカスタムを行う必要はないという認識で間違いないでしょうか?