nginx + tomcat 架构的 Web 服务中,用户感觉响应很慢,如何排查呢?可以第一时间查看 nginx 的 access.log。log_format 中定义了 $request_time 字段,它指的是从接受用户请求数据到发送完回复数据的时间。
那究竟是慢在了 nginx、tomcat 还是其它?
log_format 同 时 提 供 了 $upstream_response_time 字段,它是指从 nginx 向后端建立连接开始到接受完数据然后关闭连接为止的时间。
那就是说:
如果 $request_time 与 $upstream_response_time 相 差 不 大, 则 需 要 通 过Btrace(Java 应 用 ) 等 手 段 定 位 上 游 服 务tomcat 的慢请求。
如 果 两 者 相 差 很 大, 也 即 是$upstream_response_time 数 值 比 较 小, 则需要查看 nginx 模块配置或 nginx 与客户端的网络是否有性能瓶颈了。