问题描述:
客户调用时20线程并发请求接口共1000次,部分请求发生超时(5s以上),以及15%的丢包率(很恐怖)
问题可能原因思考:
1、接口服务的系统延时。
2、调用方多线程代码执行延迟。
3、双方网络运营商不同导致网络延迟以及丢包。
排查过程:
接口服务的系统延时:
1、程序执行时间排查
刚好系统代码有记录一次接口请求代码从执行开始到返回接口的总耗时,对1000次请求的请求记录导出,发现只有850条记录,而且执行时间都在100ms以内。
说明接口服务代码没有问题,而且证实了15%的丢包率。
2、排查nginx负载路由的延迟
配置nginx的日志格式:
log_format main
'$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"
"$upstream_response_time request_time $request_time"';
新增了upstream_response_time 和 request_time
upstream_response_time:从