今天接到用户投诉说不定期会收到Unknown Host的错误,怀疑是应用服务器的DNS配置有问题,上应用服务器看了下/etc/resolv.conf,发现配置的第一行是:
options attempts:1 timeout:1
nameserver 10.10.10.10
查询相关配置说明发现DNS这块的逻辑是:
内网的DNS服务器的地址是10.10.10.10,应用服务器到内网的DNS去解析域名,内网DNS会在缓存中查找对应的域名解析,如果缓存中没有找到对应的,就会去上一级DNS域名解析器去查询,这个过程比较复杂,我改天写一篇详细的文章来仔细说明。
目前的配置的意思是应用服务器去获取域名的这个动作只尝试一次,超时时间是一秒。也就是说服务器去DNS服务器查询域名的时候,如果服务器没有在1秒之内收到应答就直接给应用程序报错。当本地DNS缓存没有请求域名的信息的时候,会去外网查询域名,这个过程会比较不稳定。很明显超时时间设置为1秒并且不重试的情况出现解析域名超时的情况会比较常见。下面是这两个参数的详细解释。把这行设置去掉,使用默认设置后,问题消失。
options