Nginx-php-fpm在高负载下会阻塞写入连接
我们在debian 8系统上使用php5 fpm(5.6)运行了nginx/1.6.2 在过去的几天里,由于有更多的用户访问我们的服务器,我们得到了比平常更高的负载。大多数游客都是在晚上6点到午夜之间来的 几天后,运行上述设置的两台不同的服务器在几个小时内显示出非常慢的响应速度。在Munin,我们看到,突然有数百个nginx连接处于“编写”状态,而以前一次只有20个 在尝试访问这些服务器时,除了远程主机上的连接超时之外,我们没有收到任何错误。我看到的所有日志都很正常 重新启动php5 fpm可修复该问题。 我现在的问题是:为什么突然有数百个进程声称他们正在编写?是否存在一些已知的问题或可能是我们遗漏的配置设置导致了这种情况 以下是我们看到的症状的完整列表:Nginx-php-fpm在高负载下会阻塞写入连接,php,nginx,debian,opcode-cache,Php,Nginx,Debian,Opcode Cache,我们在debian 8系统上使用php5 fpm(5.6)运行了nginx/1.6.2 在过去的几天里,由于有更多的用户访问我们的服务器,我们得到了比平常更高的负载。大多数游客都是在晚上6点到午夜之间来的 几天后,运行上述设置的两台不同的服务器在几个小时内显示出非常慢的响应速度。在Munin,我们看到,突然有数百个nginx连接处于“编写”状态,而以前一次只有20个 在尝试访问这些服务器时,除了远程主机上的连接超时之外,我们没有收到任何错误。我看到的所有日志都很正常 重新启动php5 fpm可修
- 与<20个非常快速的活动连接/s不同,我们看到最多100到900个连接处于写入状态(所有nginx连接都达到php5 fpm,这些服务器不提供静态内容)。php脚本的平均脚本运行时间为80ms
- 只有当nginx请求总量超过300/s时,问题才会出现,然后从约350个请求/s下降到约250个请求/s,但这250个请求/s显示多达900个“写入”连接
- 这些连接中的许多最终会超时,并且没有给出正确的结果
- 我们的日志中没有错误
- eth/数据库通信量以及CPU负载对应于总下降的较低级别250req/s,因此不会发生“写入”
谢谢 我们发现了问题:APCu在PHP5.6中似乎不稳定 详情:
- debian 8
- nginx/1.6.2
- PHP 5.6.14-0+deb8u1
- APCu 4.0.7(修订版:328290126m shmèU尺寸)
因此,这个APCu版本在使用PHP5.6加载时似乎不稳定。至少对我们来说是这样。我们也遇到了同样的问题,原因是Redis中的数据超过了“maxmemory”,因此Redis无法写入更多的数据。我可以使用redis cli登录,但无法设置值,如果您遇到此问题,您可以使用redis cli登录redis并尝试进行设置,如果redis内存已满,则会出现错误