php服务端 udp超时,PHP -fpm 引起的 udp 端口占用过多,导致 udp 出不去, DNS 无法解析...

背景:

收到 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 查询,但觉得这个也不是治本的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误表明在尝试启动 PHP-FPM (FastCGI Process Manager) 服务时遇到了问题,因为系统找不到名为 `php-fpm.service` 的单位。这通常意味着以下几个可能的情况: 1. **服务未安装**:可能是 PHPPHP-FPM 服务尚未在您的系统上正确安装或配置。请确认您已经安装了 PHP,并且 PHP-FPM 包也在相应的包管理器(如 apt、yum 或 dnf)中。 2. **服务配置文件缺失**:检查 `/etc/systemd/system` 或 `/etc/systemd/system.d` 目录下的 `php-fpm.service` 或 `.service.d` 文件是否存在。如果文件不存在,说明可能没有创建默认的服务定义。 3. **服务未启用**:即使服务文件存在,也可能是服务没有被系统自动启用。运行 `systemctl status php-fpm` 或 `systemctl list-unit-files | grep php-fpm` 来查看服务是否已经启用。 4. **权限问题**:确保您有权限执行 `systemctl` 命令来启动服务。如果不是 root 用户,可能需要使用 `sudo`。 为了解决这个问题,请按照以下步骤操作: 1. **确认安装**:运行 `php -v` 和 `php-fpm --version` 确定 PHPPHP-FPM 是否已安装。 2. **检查服务文件**:检查上述目录下是否有 `php-fpm.service` 或相关配置文件。 3. **启用服务**:使用 `systemctl enable php-fpm` 设置服务为开机启动。 4. **启动服务**:尝试 `systemctl start php-fpm` 或 `sudo systemctl start php-fpm`。 5. **查看日志**:如果启动失败,查看 `/var/log/php-fpm.log` 或 `/var/log/syslog` 中的错误信息,可能能获取更详细的错误原因。 6. **更新或重新安装**:如果问题依然存在,考虑更新或重新安装 PHPPHP-FPM
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值