我们使用 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 完全无关。
我认为您应该尝试对磁盘读取延迟进行基准测试,因为恢复默认配置不会改变任何事情。