fastcgi模式会缓存DNS
这个是昨天在查找一个PHP调用远程HTTP接口耗时较长问题时发现的。
背景介绍:
调用服务器(下面简称C)和远程接口服务器(S)在同一机房,通过域名访问
C绑hosts,设置S的内网IP,耗时几十ms
C绑hosts,设置S的公网IP,耗时几十ms
C不绑hosts,直接走DNS,耗时几百ms
问题好像很明显了,应该是DNS问题。
好的,那么看一下C上设置的哪个DNS。
cat /etc/resolv.conf 一查,发现是8.8.8.8…………厄,慢是有道理的~
好,换成自己的DNS服务器地址再测。
擦,为毛还是几百ms???
直接用CLI运行PHP代码……几十ms,没问题
果真哪里缓存了DNS信息?验证下:
直接删掉DNS信息再测
CLI运行……直接不通,OK
WEB运行……果然还是通的!
so,修改DNS后,还需手动重启fastcgi。