Hyperf框架Failed to open stream: DNS Lookup resolve timeout[35]
07-19 14:48
字数 2006
阅读 1296
已编辑
解决办法
// server.php的settings指定dns server
'settings' => [
Constant::OPTION_ENABLE_COROUTINE => true,
Constant::OPTION_WORKER_NUM => swoole_cpu_num(),
Constant::OPTION_PID_FILE => BASE_PATH . '/runtime/hyperf.pid',
Constant::OPTION_OPEN_TCP_NODELAY => true,
Constant::OPTION_MAX_COROUTINE => 100000,
Constant::OPTION_OPEN_HTTP2_PROTOCOL => true,
Constant::OPTION_MAX_REQUEST => 100000,
Constant::OPTION_SOCKET_BUFFER_SIZE => 2 * 1024 * 1024,
Constant::OPTION_BUFFER_OUTPUT_SIZE => 2 * 1024 * 1024,
// dns server设置,可设置其他可用的
Constant::OPTION_DNS_SERVER => '8.8.8.8',
]
问题分析
以下就用file_get_contents测试分析,已知的影响是有请求域名大概都有这个问题(curl没影响),比如连接阿里云数据库,redis等
$content = file_get_contents('https://www.baidu.com');
file_get_contents直接堵塞了,等超时结束,控制台输出Failed to open stream: DNS Lookup resolve timeout[35],原因是dns解析超时,这里觉得很奇怪,dns解析不是依赖操作系统设置的dns server嘛 先排除一下是否为框架的问题
// 原生swoole,因为hyperf开启了协程,所以原生也用协程
\Swoole\Coroutine\run(function () {
\Swoole\Coroutine::create(function () {
$content = file_get_contents('https://www.baidu.com');
var_dump($content);
});
});
请求正常返回,并没有出现dns解析超时的情况,再看看swoole dnsLookup的结果
// 原生swoole
\Swoole\Coroutine\run(function () {
$ip = \Swoole\Coroutine::dnsLookup('www.baidu.com', 5);
if (!$ip) {
var_dump(swoole_strerror(swoole_last_error()));
}
var_dump($ip);
});
// hyperf
$ip = Coroutine::dnsLookup('www.baidu.com', 5);
if (!$ip) {
var_dump(swoole_strerror(swoole_last_error()));
}
var_dump($ip);
原生swoole输出ip,hyperf输出false,错误信息是DNS Lookup resolve failed。最后只能试试设置dns server,这里被坑了很久,问了AI swoole是否可以设置dns server,AI表示不可以,于是修改操作系统dns server,仍旧无法解析,困扰半天偶然看到open swoole的文档,才知道dns_server这个设置,还是要认真看看文档呀。
Coroutine::set(['dns_server' => '8.8.8.8']);
$ip = Coroutine::dnsLookup('www.baidu.com', 5);
if (!$ip) {
var_dump(swoole_strerror(swoole_last_error()));
}
var_dump($ip);
输出ip,dns解析成功,再调用file_get_contents也正常了。通过设置dns_server解决了问题,但是根本原因是什么并没有找出来,原生可以框架不行,有时间再深究一下。
1人点赞>
0 条评论
排序方式
时间
投票
快来抢占一楼吧
请登录后发表评论
相关推荐
文章归档
最新文章
最受欢迎
10-30 12:05
23-09-27 17:00
23-09-03 10:57
23-09-02 17:11
3 评论
2 评论
2 评论