- ステータス
- 解決済み
- 報告対象
- WPML Multilingual CMS 3.1.9.7
- 解決されたバージョン
- 3.2
問題の概要
ページが使用できなくなるか、読み込みが非常に遅くなります。
実行されているクエリを監視できる場合、以下のクエリへの参照が見つかります。
SELECT meta_key FROM wp_postmeta GROUP BY meta_key ORDER BY meta_key LIMIT 1000;
回避策
WPMLのファイルを1つ、少し編集する必要があります。
このファイルを編集するには、FTPクライアントを使用できます。
wp-content/plugins/sitepress-multilingual-cms/inc/translation-management/translation-management.class.phpを開きます- 102行目に移動すると、次の行が表示されます。
$this->initial_custom_field_translate_states(); - 行の先頭に「//」を追加して、その行をコメントアウトします。
- ファイルを保存します
これを実行しても、(パフォーマンスが大幅に向上する可能性を除き)何も変わることはありません。この変更による副作用はありません。以前は何らかの処理を行っていましたが、現在は不要になったコードをコメントアウトするだけだからです。
バックエンドとフロントエンドの両方で、実行されるクエリが急増していることが確認されています。これは、(当社のサイトのように)数百万のpostmetaエントリを持つ非常に大規模なサイトにのみ影響します。
このクエリは古いロジックによるもので、現在では重要な処理を行っていません。WPML 3.2では完全に削除される予定です。
ページの読み込み時間が急増している場合は、この問題に該当する可能性があります。
ただし、WordPress 4.2で文字セットがUTF8-bytesに変更されたため、他の多くのプラグインやテーマでもパフォーマンスの問題が発生する可能性があることに注意してください。このアップグレードにより、(当社のサーバーで発生したように)インデックス作成が変更されたり、(当社が経験したように)MySQLと予期しない相互作用が発生したりする可能性があります。これにより、影響が非常に小さかった処理が突然重大な問題を引き起こすことがあります。
そのため、MySQLのスロークエリログを有効化し、どのクエリが実際にサーバーのパフォーマンスに影響を与えているかを確認することをお勧めします。