我在 Nginx 后面运行了几个 fastcgi 服务器。我运行了 3 个 Nginx 工作器和 6 个 fastcgi 服务器作为上游后端。
当我运行每秒 1 个请求的负载测试时,我可以清楚地看到平均回复时间为 0.1 秒,但有时会有 3.1 秒的响应。
这是一个可疑的确定性数字,即使在非常小的负载下也会不时发生。CPU 和内存都完全没有问题。
知道延迟可能来自哪里吗?有什么建议可以调试吗?
非常感谢,巴里。
答案1
如果服务器没有响应,则 3 秒是 tcp 超时。检查您的 nginx 日志以了解连接超时情况。
答案2
您是否正在运行并行请求?如果是,请参见下文。如果不是,我建议您查看后端服务器。也许您的环境有某种分析工具,您可以使用它来查看从收到请求到发送响应的时间。
如果您正在并行运行:如果您的所有 6 个 fastcgi 服务器都在忙于处理请求,则下一个请求必须等到一个 fastcgi 服务器准备好处理它。如果您在试验中发出的请求性质有些相似,并且响应时间也相似,那么您会一遍又一遍地看到相同的模式。
你的后端是什么?它是线程化的吗?
以下是我的建议:
- 设置一些监控,这样你就可以查看一段时间内的响应时间,甚至可以创建一个漂亮的图表
- 如果适合您的环境,请尝试增加 fastcgi 进程的数量和/或使用线程。
- 检查响应时间,返回步骤2。
顺便说一句,只使用一个 nginx 工作器,除非有大量流量,否则不需要多个。