CentOS7のWordPress管理画面が「cURL error」で遅いときは

CentOS7のWordPress管理画面が「cURL error」で遅いときは

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

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

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

回避手順

# 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だと以下の設定になるようです。

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

あとがき

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

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

記事が役立ったらシェアしてくれるとうれしいです。

あなたにおすすめのコンテンツ