查找 nginx 在请求处理的每个步骤中花费的时间

查找 nginx 在请求处理的每个步骤中花费的时间

我们使用 Nginx 作为服务 .NET WCF 应用程序的 IIS 后端服务器的反向代理。

最近我注意到开销响应时间有所下降。我的意思是,我以前看到 $request_time 和 $upstream_response_time 之间的差异为 6ms,现在则是 22ms。

活动连接数没有增加,请求数、大小和响应大小也没有增加。CPU 和磁盘 IO 非常低。网络流量似乎也很好。

我试过了 :

  • 禁用 SSL,没有变化。
  • 将 nginx 的配置改回默认值,没有变化。
  • 机器是从头重建的,没有任何变化。
  • 采用原始配置的虚拟机速度要慢得多,而且开销非常低,+/-6ms。

我该如何调查这个问题……?

有没有办法查看 nginx 在请求处理的每个步骤中花费了多少时间?在调试模式下查看 error.log 无法找到此答案。

谢谢

答案1

(据我所知) 没有简单的方法可以做到这一点:

  • nginx + lua
  • hack ngx_log-模块
  • 创建你自己的自定义 ngx_module

取决于你需要深入 nginx 的程度,luad 解决方案可能还行,也可能不够;使用 lua,你可以访问/修改(从而计量)请求的不同阶段

  • 使用权
  • 改写
  • 内容生成

从你写的内容来看,我不想成为必须调试你的问题的人:)

答案2

由于我无法评论,所以添加答案。

速度变慢的原因可能与 nginx 完全无关。

我认为您应该尝试对磁盘读取延迟进行基准测试,因为恢复默认配置不会改变任何事情。

相关内容