CentOS 7のWordPressで管理画面が異常に遅いときの対処方法

CentOS 7のWordPressで管理画面が異常に遅いときの対処方法

自宅のCentOS 7+Wordpressサーバーで、管理画面の動作が遅く、デバッグ用プラグイン「Query Monitor」をいれて通信状況を確認したところ、「cURL error 28: Resolving timed out after XXXXX milliseconds.」というエラーが頻発していました。

そこでここでは、CentOS 7のWordpress管理画面が「cURL error」で遅いときの、原因と対処方法を紹介します。

この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
CentOS Linux7.4.1708

cURLエラーの原因

「cURL error 28: Resolving timed out after XXXXX milliseconds.」というエラーの原因は、RHEL6系から、AレコードとAAAAレコードは同一ソケットで問い合わせを⾏うため、対応していないファイアウォールやブロードバンドルータ配下のホストでは名前解決で遅延が発⽣したためでした。

名前解決時にAレコードとAAAAレコードの⼆つのレコードの結果が両⽅揃うまで待ち続けるため、タイムアウトにより5秒の遅延が発⽣するようです。

対処方法

# nmcli con modify eth1 ipv4.dns-options single-request-reopen
# nmcli con show eth1 | grep ipv4.dns-options
ipv4.dns-options                                  : "single-request-reopen"
# systemctl restart network.service

上から「AレコードとAAAAレコードでそれぞれ別ソケットを利用して問い合わせる設定」>「設定確認」>「設定を有効化するためにネットワークサービスを再起動」を実行しています。

問い合わせ状況は「tcpdump port 53 -n」コマンド等で確認すると、設定の前後で使用するソケットが変わっているのが分かります。

「dns-options」の値を既定値に戻すには「vi /etc/sysconfig/network-scripts/ifcfg-eth0」で該当行を削除で既定値に戻ります。

CentOS6の場合

CentOS6だと以下のように設定します。

# vi /etc/sysconfig/network
RES_OPTIONS="single-request-reopen"

あとがき

自宅のCentOS 7+WordPress環境で管理画面の動作が遅かったのは、まさにこれが原因でした。これを設定してからサクサクです。

未確認ですが、IPv6そのものを無効化する方法や、IPv4とIPv6の優先度を変える(IPv4の優先度を上げる)方法も有効かもしれません。