web-dev-qa-db-ja.com

スピードアップする方法Drupal 7リモートDB(DNS解決ではない)

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専用にインストールするものは何もありません。

2
Gnudiff

この質問はまだ答えを集めているので、私はそれを解決したので、私自身で答えます。

基本的に、MysqlをDrupalと同じVMに移動するとすぐに、すべてが非常に高速になりました。したがって、問題は膨大な数のSQLクエリDrupalがページの読み込みごとに発行されていた=アーキテクチャが悪いことでした。

0
Gnudiff

私はあなたがあなたのサイトを最適化することができる2つの領域があると思います:

  1. MySQLデータベースを調整して、個々のクエリを減らします。 mysqltuner.pl から始めます。これにより、インストールに関する明らかな問題が示され、チューニングのヒントが提供されます。
  2. クエリの数を減らします。 Webサーバーホストでmemcacheを使用してこれが行われた1つの大きなDrupalインストールを知っています。

Drupal.orgで サイトパフォーマンスの管理 を確認しましたか?

0
Oliver

同じ問題が発生し、Google Chrome PageSpeedとYSlowを使用して問題を見つけました。

基本的に、私は以下の手順を実行していました。

インストールしてみてくださいPHP APC、APC shmサイズを256Mbに設定します(ガイドはたくさんあります)。次に、KeepAliveがApacheに対してオンになっていることを確認し、Apache圧縮もアクティブにします(Apache mod_deflateを介して)。

0
Bonn
0
alexus

私の疑いは、PHPを実行するのに十分なメモリがないことです。PHP.INIファイルのmemory_limitを確認してください。パフォーマンスを確認するには、-1(無制限のメモリ)に変更してください改善します。そうでない場合は、長距離を移動します。パフォーマンスの改善に関する私の公開記事へのリンクは次のとおりですDrupal Performance

  1. Drupalのパフォーマンスを向上させるためにLAMPスタックを調整する
  2. Drupalサイト のパフォーマンスの向上