• MODXが重くなってしまいました・・・#

  • komaru Reply #1, 2 years, 9 months ago

    Reply
    フォーラムのみなさん、いつもありがとうございます。

    さて本題ですが、MODXがものすごく遅くなってしまいました。

    データを入れる前は普通の速さだったのですが、
    HIKIDASさんのCsv2Docを使って、3000件ほどドキュメントを
    流し込んだところ、表示にすごい時間がかかるようになってしまいました。

    管理画面は普通に動くのですが、サイトを表示するのに10秒くらいかかってしまいます。
    キャッシュまわりのことは大抵やってみたのですが、改善はみられませんでした。

    ためしに、[*content*]のみを入れたテンプレートを作り、
    それを使った、Modxの機能は使わない簡単なhtmlを書いて表示させてみましたが
    それも、鬼のように時間がかかりました。

    助けてください・・・他に施すような手はありますでしょうか?

    よろしくお願いします。



  • sama55 Reply #2, 2 years, 9 months ago

    Reply
    こんにちは
    Quote from: komaru at Aug 17, 2009, 06:04 AM
    データを入れる前は普通の速さだったのですが、HIKIDASさんのCsv2Docを使って、3000件ほどドキュメントを流し込んだところ、表示にすごい時間がかかるようになってしまいました。
    Csv2Docからの調査は、恐らくkazuikeさんからコメントがあると思いますので置いといて・・・
    Quote from: komaru at Aug 17, 2009, 06:04 AM
    管理画面は普通に動くのですが、サイトを表示するのに10秒くらいかかってしまいます。キャッシュまわりのことは大抵やってみたのですが、改善はみられませんでした。
    経験上、3000件ぐらいドキュメントが入ると、相対的に管理画面も気持ち重くなることがありますが、それがないということは、ハードウェアと回線は除外して良さそうに感じます。キャッシュまわりでは、恐らくページが非キャッシュ扱いになっていないことを主に管理画面から確認されたと思うのですが、もしPHPの理解があるようでしたら、cache/siteCache.idx.phpをダイレクトに見てみることをお勧めします。キャッシュクリア時のファイルのタイムスタンプの変化、ファイルサイズや配列の深さ、項目数などから何か分かるかもしれません。
    Quote from: komaru at Aug 17, 2009, 06:04 AM
    ためしに、[*content*]のみを入れたテンプレートを作り、それを使った、Modxの機能は使わない簡単なhtmlを書いて表示させてみましたが、それも、鬼のように時間がかかりました。
    上記でスニペット関係で長大なループが発生してる可能性は低い気がします。
    Quote from: komaru at Aug 17, 2009, 06:04 AM
    他に施すような手はありますでしょうか?
    1.性能測定(パフォーマンス)タグ

    ご存知かもしれませんが、インストールパッケージのminimum templateのフッター部分に記述されてます。細かいボトルネックの判定まではできませんが、負荷が掛かってる部分をザックリ切り分けることはできます。これを、"[*content*]のみを入れたテンプレート"のフッタ部分に追記して、以下の情報を分析してみてください。
     1.キャッシュの稼動状況
     2.PHPのパース時間
     3.DBのリクエスト数
     4.DBのレスポンス時間

    2.プラグインの動作検証

    何かサードパーティ製プラグインは使ってますでしょうか?プラグインは、イベントドリブンに動きますので、テンプレートの内容(どれほど複雑か)に関わらず相応の処理時間を必要とします。プラグインを一つづつ無効化してグイっと速くなればそれがボトルネックであることが分かります。


  • komaru Reply #3, 2 years, 9 months ago

    Reply
    ご回答ありがとうございます。

    sama55さんのアドバイス通り、一旦プラグインをはずして試してみましたが、結果改善はみられませんでした。

    結局、案件に間に合わないため記事数を100程度に戻してみたところ、普段どおりの速さで動きました。

    今回は、苦し紛れでwordpressで間に合わせましたが、もう一度、再現して原因を探っております。

    また、わかったら結果を報告したいと思います。


  • sama55 Reply #4, 2 years, 9 months ago

    Reply
    komaruさん

    samaです。お役に立つことができてないようで、、、すみません。
    komaruさんの報告から、ドキュメント数に比例して性能が悪化してることは間違いないようですね。
    ウェブサーバ寄りの原因も否定できませんが、私がパフォーマンスチューニングを行う際に最も力を注ぐのは、DBへのリクエスト回数を削減することです。パフォーマンスタグが出力するページあたりのリクエスト回数はどのぐらいの数値を示してますでしょうか?サーバ単体のパフォーマンスやウェブサーバとデータベースサーバの距離などにもよりますが、この数値が百から数百というオーダーになってくると、目に見えて性能が劣化することがあります。

    報告は、あとで結構です。^^


    余談)
    Evolutionでキャッシュのパフォーマンス改善を行う予定があることを本家ライアン氏から聞いてます(恐らく進行中と見てます)。細かい仕様は不明ですが、キャッシュのライト性能はsoushiさんが上げてくれたので、リード性能が更にアップすることを期待してます。


  • yama Reply #5, 2 years, 9 months ago

    Reply
    グローバル設定のフレンドリーURLの設定はどうなってますか?
    もし「フレンドリーURLを利用する」設定になってる場合は、試しにオフにしてみてください。


  • kazuike Reply #6, 2 years, 8 months ago

    Reply
    亀レス(って死語かな?)ですみません。
    Csv2Docが話題になっているとは気付いていませんでした。 もう、遅いかもしれませんが…

    Csv2Docは、機能としては、単純にDBを更新するだけ(のはず)なので、バグがなければ、Csv2Docを使っても、延々とドキュメントを作っていっても、同じ結果になるはずだと思っているのですが、もし、バグならごめんなさい。

    もし、テンプレート変数を多用されているようでしたら、それでmodx自体が重くなる話は聞いた事があります。
    ドキュメントのフィールドで使っていないフィールドがあれば、できるだけ代わりにそちらを使うと多少は軽くなるかもしれません。
    たとえば、テンプレートを自前で作るときなど、説明とかリンク属性とかメニュータイトルとか、けっこう使わないフィールドがあるので、私なんか、ManagerManagerでタイトルを変えて、他に利用したりしちゃってます。(邪道かもしれませんが)