0

我们在debian 8系统上使用php5-fpm (5.6)运行nginx/1.6.2 。

在过去的几天里,由于更多用户访问我们的服务器,我们的负载比平时更高。大多数游客在下午 6 点至午夜之间的晚上时间来。

几天后,运行上述设置的两台不同服务器在几个小时内显示响应速度非常慢。在 Munin 中,我们看到,突然有数百个处于“写入”状态的 nginx 连接,而以前一次只有大约 20 个。

在尝试访问这些服务器时,除了远程主机上的连接超时之外,我们没有收到任何错误。我看到的所有日志都很正常。

该问题可以通过重新启动 php5-fpm 来解决。

我现在的问题是:为什么突然有数百个进程声称它们正在编写?是否有一些已知问题或我们错过的配置设置可能导致这种情况?

以下是我们看到的完整症状列表:

  • 而不是 < 20 个非常快速的活动连接/秒,我们看到多达 100 到 900 个处于写入状态的连接(所有 nginx 连接都命中 php5-fpm,这些服务器不提供静态内容)php 脚本的脚本运行时间为 80 毫秒。
  • 仅当 nginx 请求/s 的总量超过 300/s 时才会出现问题,然后它会从 ~350 下降到 ~250 req/s 但这 250 个显示多达 900 个“写入”连接
  • 许多这些连接最终超时并且没有给出正确的结果
  • 我们的日志中没有错误
  • eth / 数据库流量以及 CPU 负载对应于 250req/s 的较低水平,总下降,因此没有“写入”发生 afaik。

对于设置:如上所述。我们使用 Zend 的内置操作码缓存,APCu 用于一些用户变量缓存,其中一个服务器运行一个 memcache 实例(在整个问题中运行良好),另一个运行 Redis 版本,它也运行良好,而出现问题。

任何人都可以阐明问题可能是什么?

谢谢!

4

2 回答 2

0

我们发现了问题:APCu 似乎在 PHP 5.6 中不稳定。

细节:

  • Debian 8
  • nginx/1.6.2
  • PHP 5.6.14-0+deb8u1
  • APCu 4.0.7(修订:328290、126M shm_size)

我们使用 xhprof 来分析服务器速度较慢时的请求(请参阅问题),并注意到 APCu 每次读/写操作花费 > 100 毫秒。清除 APCu 变量没有帮助。代码的所有其他部分都具有正常速度。

我们完全禁用了对 APCu 的使用,此后系统一直保持稳定。

看来,这个 APCu 版本在 PHP 5.6 的负载下是不稳定的。至少对我们来说。

于 2015-11-10T12:07:24.630 回答
0

我们遇到了同样的问题,原因是 Redis 中的数据超过了“maxmemory”,所以 redis 无法写入更多数据。我可以使用 redis-cli 登录但无法设置值,如果您遇到此问题,您可以使用 redis-cli 登录到 redis 并尝试设置一些内容,如果 redis 内存已满,您将收到错误消息。

于 2018-09-17T12:32:22.167 回答