客户端请求耗时分析

业务场景

客户端调用服务器接口返回耗时4~5秒,耗时太慢,用户体验太差

在这里插入图片描述

原因定位:

客户端排查,报超时问题,socketTimeOut,
服务器排查,查看接口日志调用耗时:250ms左右
原因分析:
服务器接口在正常时间内返回了结果,当时客户端却一直接受不到,可能是数据包传输过程中过于缓慢和丢包,可以采用抓包工具分析,经分析,是由于待传输包过大,导致传输缓慢,由于网络传输的包达到了四五百k,传递包太慢。

采取方法

  • 数据压缩:数据发送前,对要传输的包进行gzip压缩
  • CDN:使用内容分发网络CDN,加快访问速度

结果

耗时减少了一半

举一反三

当待传输的数据包过大时,可以采取多种策略来优化传输效率和减少延迟,以下是一些常见的处理方法:

1. 数据压缩

  • 在发送前对数据进行压缩,如使用GZIP或Brotli等压缩算法,减小数据体积,从而加快传输速度。
  • 确保客户端能够解压缩接收到的数据。

2. 分块传输

  • 将大数据分割成多个较小的数据包,分多次发送。
  • 这样做不仅可以降低单次传输的延迟,还可以更好地利用带宽,并且在网络不稳定时更容易恢复。
  • 对于文件传输,可以使用标准的分块传输技术,
### 如何测量和记录HTTP请求的响应时间 为了有效地测量和记录HTTP请求的响应时间,在Java环境中可以利用Spring框架中的拦截器机制来实现这一功能。通过自定义拦截器,可以在每次HTTP请求到达控制器之前以及响应返回之后执行特定逻辑。 下面是一个简单的例子展示如何创建一个用于计算HTTP请求处理时间的拦截器: #### 创建自定义拦截器类 ```java import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; @Component public class TimingInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { long startTime = System.currentTimeMillis(); request.setAttribute("startTime", startTime); return true; } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { Long start_time = (Long)request.getAttribute("startTime"); if(start_time != null){ long endTime = System.currentTimeMillis(); long duration = endTime - start_time; System.out.println("Request to " + request.getRequestURI() +" took "+duration+" ms."); } } } ``` 此代码片段展示了`preHandle()`方法会在实际业务逻辑前被调用,并设置当前时间戳作为属性存储于`HttpServletRequest`对象中;而`afterCompletion()`则是在整个请求完成之后触发,此时可以从请求对象获取到起始时间戳并与当前时刻对比得出总耗时[^2]。 另外一种方式是借助第三方库如Apache HttpClient或OkHttp等工具自带的功能来进行更详细的性能分析。这些客户端通常提供了内置的支持以方便开发者跟踪网络交互过程中的各个阶段所花费的时间。 对于其他编程语言环境下的解决方案,则可以根据具体使用的Web开发框架寻找相应的中间件组件或是API接口来达到相同目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值