複数のdrupal 7つのサイトが共有ホスティングで実行されています。突然、ほとんどすべてのdrupalサイトの実行が非常に遅くなりました。検索した後、 140Mクエリの132kの遅いクエリが実行されます。
だから私はDevelモジュールでde debug queryオプションをオンにしてこれを得ました:
Executed 230 queries in 18868.24 ms. Queries exceeding 5 ms are highlighted.
Page execution time was 21632.34 ms.
Memory used at: devel_boot()=2.61 MB, devel_shutdown()=47.54 MB, PHP peak=48 MB.
SELECTクエリリストを調べたところ、実行速度が遅いキャッシュクエリがたくさんあることに気づきました。
SELECT cid, data, created, expire, serialized FROM cache_views WHERE cid IN (:cids_0)
'cache_views'だけでなく、他のキャッシュテーブルも対象:
PHPMYADMINでは、多くのクエリがキャッシュから削除されていることにも気づきました。
Qcache_lowmem_prunes: 35.2M (of 143M queries)
DBで有効になっているモジュールがあるかどうかはすでに確認しましたが、drupalサイトで削除しました。
これが助けを得るのに十分な情報であることを願っています。
上記の問題は、もう使用しないMySQL DBを削除すると解消しました。
MySQLのような音を調整する必要があります。 InnoDBバッファープールサイズから始めます。この回答にはinnodb_buffer_pool_sizeに関する情報があります: Do Drupal Webサイトのパフォーマンスが悪いか重いですか?
Innodbバッファープールが適切なサイズであり、MySQLが毎秒3k以上のクエリを実行する球場にあり、実行中のMySQLバージョン5.1以下の場合、クエリキャッシュのバグの影響を受ける可能性があります。仕事で、私はこのバグを読み、実行中のMySQLのバージョン(5.1)にこの修正がないことを確認した後、MySQLクエリキャッシュを無効にしてしまいました http://bugs.mysql.com/bug.php? id = 43758 (5.5で使用可能)。バグは、多くのクエリが「アイテムの解放」状態で動かなくなることです http://dev.mysql.com/doc/refman/5.1/en/general-thread-states.html#id770305 =(スレッドがコマンドを実行しました。この状態の間に行われたアイテムの解放にはクエリキャッシュが含まれます。通常、この状態の後にクリーンアップが行われます)。このコマンドを発行しましたSET GLOBAL query_cache_size = 0;
とクエリ時間の瞬時の改善を見た。