调用互联网API接口(腾讯、阿里)等出现"未知名称或服务(Name or service not known)"

一、问题

开发反馈程序调用api.mch.weixin.qq.com时,时不时出现"[Errno -2] Name or service not known"错误。

二、排查

1、DNS地址配置为114.114.114.114,偶发出现解析慢的现象

2、可能原因

CentOS 6/7的DNS解析器在解析地址时会同时发出解析ipv4和ipv6的请求,且使用同一个socket接口,当只收到一个ipv4的解析响应时,socket出于“等待”状态,等待ipv6的解析响应,因此会导致解析缓慢;

3、优化方法

cat /etc/resolv.conf
options timeout:1 attempts:1 rotate single-request-reopen
nameserver 210.22.70.3
nameserver 114.114.114.114

timeout:查询一个nameserver的超时时间,单位是秒。系统缺省是5,最大可以设为30;
attempts:这个是查询的整个都尝试一遍的次数;
rotate:随机选取一个作为查询的dns server,默认为按照顺序从上往下;
single-request-reopen:超时时可以重新打开一个新的socket接收ipv6的解析响应,而不影响ipv4的解析响应。

4、问题

应用还是偶发出现问题,发现ping解析出来的ipv6地址同样会出现“Name or service not known”错误

 

 


posted @ 2020-11-17 18:02  suminem  阅读(4000)  评论(0编辑  收藏  举报