![查找 nginx 在请求处理的每个步骤中花费的时间](https://linux22.com/image/618633/%E6%9F%A5%E6%89%BE%20nginx%20%E5%9C%A8%E8%AF%B7%E6%B1%82%E5%A4%84%E7%90%86%E7%9A%84%E6%AF%8F%E4%B8%AA%E6%AD%A5%E9%AA%A4%E4%B8%AD%E8%8A%B1%E8%B4%B9%E7%9A%84%E6%97%B6%E9%97%B4.png)
我们使用 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 完全无关。
我认为您应该尝试对磁盘读取延迟进行基准测试,因为恢复默认配置不会改变任何事情。