NGINX 缓存行为异常导致系统陷入混乱

NGINX 缓存行为异常导致系统陷入混乱

我们使用 CentOS/nginx fastcgi_cache 来缓存服务器上对 PHP 文件的请求。此文件访问非常频繁,更新也非常频繁,因此它有 1s 缓存。

通常当我们查看访问日志时我们会看到如下内容:

00:01 REQUEST 1 "EXPIRE"
00:01 REQUEST 2 "HIT"
00:01 REQUEST 3 "HIT"
00:02 REQUEST 4 "EXPIRE"
00:02 REQUEST 5 "HIT"
00:02 REQUEST 6 "HIT"

当问题发生时,nginx 会发生一些事情,突然日志开始看起来像这样(即使在同一秒,所有日志都会过期):

00:01 REQUEST 1 "EXPIRE"
00:01 REQUEST 2 "EXPIRE"
00:01 REQUEST 3 "EXPIRE"
00:02 REQUEST 4 "EXPIRE"
00:02 REQUEST 5 "EXPIRE"
00:02 REQUEST 6 "EXPIRE"

重要提示:就在发生这种情况之前,php-fpm 报告:警告:[pool www] 服务器已达到 max_children 设置 (35),请考虑提高它注意:正在终止...注意:正在退出,再见!注意:fpm 正在运行,pid 27544注意:已准备好处理连接

(这不是正常行为,而且非常罕见)

我尝试在工作中途重新启动 php-fpm,看看它是否会影响缓存 - 不行。我还尝试对经常调用的特定文件进行压力测试,但我不能让系统发疯。还验证了缓存键是否配置正确。

有人知道这里还存在什么其他可能性吗?我还能研究什么吗?

PS:当这种情况发生时,为了修复它,我们停止对文件的请求并重新启动服务,它就可以再次工作了。

谢谢你的帮助,Alon

相关内容