php-fpm php_network_getaddresses 调用随机开始失败并出现错误的 udp cksum

Lia*_*ire 4 udp php-fpm amazon-web-services

我们在 AWS 上的 ubuntu 实例上运行了许多 Web 服务器(nginx、php5.6-fpm)。它们已经运行了好几个月,但在过去的几天里,我们开始遇到一些问题,在实例启动后一切正常,但在 12 小时左右后,网络调用开始失败(特别是在这个实例套接字 tcp 调用 redis)。

使用 tcpdump 进行了一些挖掘后,看起来 dns 查找由于 udp 校验和失败而被丢弃:

17:13:38.013346 IP (tos 0x0, ttl 64, id 46236, offset 0, flags [DF], proto UDP (17), length 103) 10.0.0.121.34071 > 10.0.0.2.2.50 -> 0x3ae1!] 25855+ Type20736?xxxxxxxx.us-east-1.rds.amazonaws.com。(75)

如果我使用 telnet 从同一个实例连接到 Redis 服务器,那就没问题了,它似乎只影响 fpm。同样奇怪的是,它只发生在实例启动后的一小段时间 - 最初所有请求都通过正常。同样,重新启动 php5.6-fpm 服务似乎可以暂时解决问题。

在这一点上,我几乎处于知识的尽头,所以希望有人能指出我正确的方向!

Mic*_*bot 7

您安装了有缺陷的安全修复程序——这听起来像是来自USN-3239-2的问题。

GNU libc 的安全更新解决了(除其他事项外)...

getaddrinfo()GNU C 库函数中的无限堆栈分配。

....包含回归 - 意外的 ABI 更改 - 似乎导致了与您描述的问题类似的问题... DNS 解析最终将停止工作,直到进程重新启动。

原始更新发布于 2017-03-20,修复发布于 2017-03-21。应用最新的操作系统安全修复程序应该可以解决这个问题,如果是这样的话。