自宅のCentOS 7+Wordpressサーバーで、管理画面の動作が遅く、デバッグ用プラグイン「Query Monitor」をいれて通信状況を確認したところ、「cURL error 28: Resolving timed out after XXXXX milliseconds.」というエラーが頻発していました。
そこでここでは、CentOS 7のWordpress管理画面が「cURL error」で遅いときの、原因と対処方法を紹介します。
この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。
ソフトウェア | バージョン |
---|---|
CentOS Linux | 7.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の優先度を上げる)方法も有効かもしれません。