Rocketthemeのテーマでdrupalサイトを使用しています。
ユーザーはメンバーユーザーです。問題は、サイトが非常に遅い理由は不明です。ページを開くのに約20秒かかります。
VPSを切り替えてみましたが、パフォーマンスは向上しませんでした。
私は多くのモジュールを使用していません、それはサイトを動かなくなるでしょう。
通常の時間でサイトを開くためにサイトの速度を上げるために、どのような解決策を検討すべきですか.
113.52ミリ秒で120のクエリを実行しました。 5ミリ秒を超えるクエリと複数回実行されたクエリは強調表示されます。ページ実行時間は2534.15ミリ秒でした。
24.6ミリ秒で87個のクエリを実行しました。 5ミリ秒を超えるクエリと複数回実行されたクエリは強調表示されます。ページ実行時間は2609.59ミリ秒でした。
41.05ミリ秒で123個のクエリを実行しました。 5ミリ秒を超えるクエリと複数回実行されたクエリは強調表示されます。ページ実行時間は1282.27ミリ秒でした。
これらは正常ではないと思います。
ページの読み込みが20秒の場合、どこかに大きなボトルネックがある可能性があります。 APCはそれを5〜10秒に短縮するかもしれませんが、それでもサーバー側にとってはまだ十分ではありません。また、ボトルネックがSQLクエリである場合は役に立ちません。
モジュールはサイトを少し遅くすることができますが、それだけではありません。それぞれを順番に無効にして、大きな改善があるかどうかを確認してください。
速度をそれほど改善できない場合の別の解決策は、可能な限りページをキャッシュすることです。さまざまなサイト(CodeIgniterを使用)を使用すると、大きな違いが生じることがわかりました。サーバーは即座に応答し、クライアント側で時間を過ごすことができます。
20秒の遅延に含めるものに応じて(つまり、サーバー側のみまたはクライアント側も)、 Yahooのベストプラクティス ページが役立つことがあります。
ボトルネックがどこにあるかを判断するには、Drupal(存在する場合)のプロファイラーモジュールを探して、コードが遅い部分を教えてくれます。または、テンプレートに独自のタイミングコードを追加できます。
$time1 = microtime();
// some chunk of code
$time2 = microtime();
// another chunk of code
$time3 = microtime();
echo 'First chunk: ', ($time2-$time1/1000), ' seconds';
echo 'Second chunk: ', ($time3-$time2/1000), ' seconds';
さまざまな場所でそれを繰り返し、10〜20秒間実行されているセクションまたは2つに絞り込むことができるはずです。
PHPアプリを構築するとき、FirefoxまたはChromeの開発者ツールを使用して、低レベルのボトルネックを取り除くことができることがわかりました。 [リソース]タブをクリックして、ページの要素が読み込まれるのを確認します。 XHRリクエスト(AJAX)で作業している場合に特に役立ちます。
サーバーにpingを実行することから始めます。先日同様の状況にあったDevマシンがあります。..Devマシンがクロールしており、ロードに10秒以上かかります。しかし、別の同一(ただし専用)サーバーに同一のコードがあり、高速で実行されます。 pingテストを行うと、非常に遅くなります。マシンは共有されており、サーバー上のアカウントを持つ他のユーザーの1人が超広帯域サイト(おそらくアダルトサイト)を実行しているため、他のすべてのユーザーの速度が低下しています。その違反サイトは、ホストによって現在移動されています。
前述のように、Xdebugは確かに優れたオプションです。ただし、エラーがスローされない場合は、常に問題の原因に到達するとは限りません。最初にエラーログから始めて、それ以上作成されていないことを確認します。次に、Xdebug。
機能を1つずつ無効にしていきます。また、サーバーの負荷を監視して、無関係なものがMySqlまたはApacheプロセスを滞らせないことを確認する価値があります。
最後に、問題がまだ修正されていない場合、問題の原因と思われる領域を分離し、ログまたは電子メールに出力する開始/終了のマイクロタイムタイムスタンプを挿入します。簡単に聞こえますが、この方法を使用すると、コードのパフォーマンスが200%以上向上することがわかりました。
/admin/settings/performance
?でキャッシュがオンになっています
より複雑なソリューションに入る前に、ダブルチェックする価値があります。
Postgresqlを使用することをお勧めします。drupalがサポートしています。