这几天在容器中运行curl时,发现了都要5秒的延时,抓包显示,域名解析服务器访问和目标服务器连接都很正常,但是curl在发起域名解析后,硬是等待5秒后才执行服务请求。找了下资料,发现如果系统开启了ipv6支持,则curl优先进行ipv6的域名解析,失败后才进行ipv4的解析。而解析失败重试时间被限制在5秒,于是就出现了这个延时。
解决方法:
curl -4 baidu.com #强制要求使用ipv4地址
php方面:
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );