背景: 收到 Unknown: php_network_getaddresses: getaddrinfo failed: Name or service not known 错误提示。这个提示显然是域名解析出现问题了。
检查: dig 域名 提示:dig: isc_socket_bind: address in use
nslookup 域名 提示: nslookup: isc_socket_bind: address in use
通过上面提示都可以看到,udp
netstat -anulp|grep php-fpm|head -n20、 udp 0 0 0.0.0.0:10240 0.0.0.0:* 13522/php-fpm: pool udp 0 0 0.0.0.0:10241 0.0.0.0:* 13704/php-fpm: pool udp 0 0 0.0.0.0:10244 0.0.0.0:* 13269/php-fpm: pool udp 0 0 0.0.0.0:10249 0.0.0.0:* 13435/php-fpm: pool udp 0 0 0.0.0.0:10250 0.0.0.0:* 13546/php-fpm: pool udp 0 0 0.0.0.0:10254 0.0.0.0:* 13330/php-fpm: pool udp 0 0 0.0.0.0:10257 0.0.0.0:* 13668/php-fpm: pool udp 0 0 0.0.0.0:10259 0.0.0.0:* 14203/php-fpm: pool udp 0 0 0.0.0.0:10261 0.0.0.0:* 13748/php-fpm: pool udp 0 0 0.0.0.0:10262 0.0.0.0:* 13412/php-fpm: pool udp 0 0 0.0.0.0:10263 0.0.0.0:* 14182/php-fpm: pool udp 0 0 0.0.0.0:10264 0.0.0.0:* 13879/php-fpm: pool udp 0 0 0.0.0.0:10265 0.0.0.0:* 14208/php-fpm: pool udp 0 0 0.0.0.0:10267 0.0.0.0:* 13391/php-fpm: pool udp 0 0 0.0.0.0:10268 0.0.0.0:* 13664/php-fpm: pool udp 0 0 0.0.0.0:10270 0.0.0.0:* 13727/php-fpm: pool udp 0 0 0.0.0.0:10271 0.0.0.0:* 13239/php-fpm: pool udp 0 0 0.0.0.0:10280 0.0.0.0:* 14023/php-fpm: pool udp 0 0 0.0.0.0:10283 0.0.0.0:* 13562/php-fpm: pool udp 0 0 0.0.0.0:10284 0.0.0.0:* 13514/php-fpm: pool
发现 php-fpm 拉起了过多的 udp,占用大量临时端口,很可能是这个问题造成的。
但是目前只能通过 crontab 脚本重启 php-fpm,释放这些 udp,但是依旧不知道具体造成的原因是什么。
以前使用 nginx+php-fpm 的时候也没有遇到这个问题。
不知道有没有彻底根治的更加的解决方案。 看网上有人说搭建 dnsmasq 来 cache,减少 udp 查询,但觉得这个也不是治本的方法。