工作中经常需要排查接口性能问题, 特此记录
可以从Nginx请求日志中, 把时延高的请求筛选出来进行分析 Nginx access log 格式如下
log_format access '$remote_addr\t$remote_user\t[$time_local]\t$request\t$status\t$body_bytes_sent\t$http_referer\t$http_user_agent\t$http_x_forwarded_for\t$host\t$request_time\t$upstream_addr\t$upstream_status\t$upstream_response_time\t$upstream_response_length'
一. 关注access_log 倒数第二列:$upstream_response_time 即 接口返回时间 (可能位于13,14列)
二. 查询指定接口返回时间大于指定时间的请求, 例如查找返回耗时在500ms以上
shellgrep /v1/request_xxx /application/website/xxx.com-access_20230113* | awk '{if($14>0.5) print $13,$14,$15}'
可从以下几个方面进行分析
一. 若发生高时延的请求集中出现, 很可能是机器某方面指标遇到瓶颈, 可以从监控平台查看当时的机器指标, 例如cpu, 内存, I/O, 网络带宽使用率, 如果接口有第三方依赖, 亦要获取当时第三方请求的时延状态;
二. 若高时延的请求分散出现, 很可能是机器抖动, 可以先通过全链路分析工具, 判断是否某个环节时延过高导致;
本文作者:shining_finger
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!