CentOS7:WordPressの管理画面の動作が遅い

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

原因をいろいろ調べた結果、RHEL6系から、AレコードとAAAAレコードは同一ソケットで問い合わせを⾏うため、対応していないファイアウォールやブロードバンドルータ配下のホストでは名前解決で遅延が発⽣するらしく、これが原因でした。(名前解決時にAレコードとAAAAレコードの⼆つのレコードの結果が両⽅揃うまで待ち続けるため、タイムアウトにより5秒の遅延が発⽣するようです。)

ここでは、この遅延をCentOS7のネットワーク設定で回避する方法をご紹介します

回避手順

nmcli con modify ens160 ipv4.dns-options single-request-reopen
nmcli con show ens160 | 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だと以下の設定になるようです。

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

まとめ

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

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