调用互联网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”错误