朋友公司因为马上元旦了, 要优化一下TPS.
web-flux, 8个接口施压, 目前QPS 140, 优化后QPS 550,保持和第三方返回时间一样, 链接越多QPS越高, 但施压机超过6个后, 就上不去了, rt响应时间变长.
因为http是长连接keeplive, 所以如果Server没有返回,客户端这个链接不会发起下一次请求. 导致QPS低,
后续加了业务线程(50个)调用redis, 能到300, 到300后业务现场全部用光了, 阻塞在redis.set上.
导致入队列了, rt响应时间变长.
1. 增加worker线程数量, 默认是CPU核数 (手工改为8个)
2. logback日志, 把worker线程阻塞了, 导致上不去. (改为了异步日志, 队列256, 但是还是满了, 满了后, 队列.put 会阻塞)
减少日志
3. 代码覆盖率 jacoco, 打日志把worker打满了, 导致阻塞worker (这个框架不在项目里,不受控制)
4. 下游调用第三方(滴滴,北汽,首汽出行等) , 响应时间在 500 ~700毫秒
5. 内部调用tair是阻塞调用, 会把线程打满(阻塞worker或阻塞http-client线程都不合适).
6. http-client 没有配置worker线程数量, 默认是CPU核数*2.
7. 部门评估 换tair reative