使用 php-fpm、nginx 每天处理 40M 请求时出现平均负载问题

使用 php-fpm、nginx 每天处理 40M 请求时出现平均负载问题

我的服务器装有 FreeBSD(16 核,带 HT、SSD、32GB RAM),每天大约有 40M 个 http 请求。所有请求均由nginx+处理php-fpm

在此处输入图片描述 在此处输入图片描述

通过这些图表您可以看到我们在流量高峰期间遇到了问题。我不是系统管理员,请解释一下什么是“活动连接”、“写入”、“等待”、“读取”,以及为什么当服务器无法快速处理请求时“写入”会增加?

这里还有一些有关 CPU、内存和平均负载的图表。

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

可以看到,CPU和内存并没有发生什么异常,但是平均负载也出现了峰值。

在此平均负载峰值期间,我注意到 php-fpm.sock 上有一个未服务的队列

netstat -Lan | grep php-fpm unix 2525/0/32246 /tmp/php-fpm.sock

队列中的成员数量从 0 到 12000 不等。当值为 0 时 - 一切正常,我会在 60-100 毫秒内收到 http 响应。当值为 5000-12000 时,可能需要 3-10 秒。

我还检查了是否有任何异常进程top,但未能发现任何东西。

这是top几分钟前的截图(目前一切正常,没有流量高峰): 在此处输入图片描述

我的结论:根据 CPU 和内存图表,我可以说该服务器可以满足越来越多的请求,但是由于 php-fpm 的工作不理想,在流量高峰期间这是不可能的。

关于如何解决这个问题有什么建议吗?

相关内容