Drupal 7は、Ubuntu LTS仮想マシン(VMWare)にあり、MySQL 5.1サーバーは同じ物理サーバー上にありますが、異なる仮想マシン上にあります。
Drupal Webサイトは現在開発中であるため、トラフィックはほとんどありませんが、pingとShellアクセスが非常に高速であるにもかかわらず、Drupalサイトの実行速度は非常に遅くなっています(ページの読み込みに5秒以上) 。ここや他の場所で調査した結果、問題はネットワークインターフェイスを介してSQLにアクセスするという事実にあることがわかりました。これは、Drupalが本当にひどいことをしているようです。
DNS解決を確認しましたが、Drupal側(db Hostはipで指定され、/ etc/hostsファイルにdnsエントリがあります)からもMySQL側(skip-name-resolveがオン)からも存在しないはずです。 、drupalクライアントにはIPアドレスによるアクセスが許可されます)。
Drupal開発クエリログは次のように述べています。
5993.89ミリ秒で336クエリを実行しました。 5ミリ秒を超えるクエリが強調表示されます。ページの実行時間は7015.35ミリ秒でした。使用メモリ:devel_boot()= 5.53 MB、devel_shutdown()= 93.35 MB、PHPピーク= 94MB。
奇妙なことに、単一ページの読み込みでは、クエリの約2/3が高速で、他のクエリは非常に低速です。
1.765 DrupalDatabaseCache::getMultipleP A E
SELECT cid, data, created, expire, serialized FROM cache_bootstrap WHERE cid IN (:cids_0)
default
575.825 DrupalDatabaseCache::getMultipleP A E
SELECT cid, data, created, expire, serialized FROM cache_bootstrap WHERE cid IN (:cids_0)
default
13.585 DrupalDatabaseCache::getMultipleP A E
SELECT cid, data, created, expire, serialized FROM cache_bootstrap WHERE cid IN (:cids_0)
default
466.9914 DrupalDatabaseCache::getMultipleP A E
SELECT cid, data, created, expire, serialized FROM cache WHERE cid IN (:cids_0)
default
1.841 drupal_lookup_pathP A E
SELECT source FROM url_alias WHERE alias = :alias AND language IN (:language, :language_none) ORDER BY language ASC, pid DESC
default
Drupalキャッシュを有効にすることで、非アクセスの状況が改善されます。ただし、管理インターフェイス全体はまだ同じくらい遅いです。
DBサーバーを個別に使用することが現在の会社のポリシーです。 Drupalを高速化する他のオプションはありますか?
デフォルトのデータベース構成にはドライバー「mysql」と記載されていますが、「mysqli」または「pdo_mysql」に変更する必要がありますか?しかし、mysqliに変更すると、database.incは、関連するドライバーが存在しないと文句を言います。mysqliとpdoは両方ともPHP自体で有効になっているため、drupal専用にインストールするものは何もありません。
この質問はまだ答えを集めているので、私はそれを解決したので、私自身で答えます。
基本的に、MysqlをDrupalと同じVMに移動するとすぐに、すべてが非常に高速になりました。したがって、問題は膨大な数のSQLクエリDrupalがページの読み込みごとに発行されていた=アーキテクチャが悪いことでした。
私はあなたがあなたのサイトを最適化することができる2つの領域があると思います:
Drupal.orgで サイトパフォーマンスの管理 を確認しましたか?
同じ問題が発生し、Google Chrome PageSpeedとYSlowを使用して問題を見つけました。
基本的に、私は以下の手順を実行していました。
インストールしてみてくださいPHP APC、APC shmサイズを256Mbに設定します(ガイドはたくさんあります)。次に、KeepAliveがApacheに対してオンになっていることを確認し、Apache圧縮もアクティブにします(Apache mod_deflateを介して)。
できることはたくさんあります。
mysqld
のパフォーマンスを/etc/my.cnf
:で微調整します。以下も検討してみてください。
私の疑いは、PHPを実行するのに十分なメモリがないことです。PHP.INIファイルのmemory_limit
を確認してください。パフォーマンスを確認するには、-1(無制限のメモリ)に変更してください改善します。そうでない場合は、長距離を移動します。パフォーマンスの改善に関する私の公開記事へのリンクは次のとおりですDrupal Performance