解决多线程性能问题技巧分享

本文分享了如何解决多线程性能问题,包括通过业务方法耗时跟踪、同步日志输出分析、线程数量控制和避免线程空跑来定位问题。同时介绍了性能分析工具如top、vmstat和jstack的使用,强调在面对线上故障时要保持冷静,从CPU、内存、IO和网络四个维度进行分析。
摘要由CSDN通过智能技术生成


最近工作中在使用多线程处理业务逻辑时遇到了问题,程序运行期初,与之前未使用多线程没有任何差别,但是当对应的线程处理队列开始拥堵时,处理速度开始愈来愈慢,为解决该性能问题,投入多日并作出如下总结

问题定位

业务方法耗时跟踪

判定原因:某方法耗时较长,拖垮整个业务流程,导致性能下降
验证过程:在整个业务流程的主方法中加入方法耗时日志,发现所有方法耗时整体偏慢,且耗时颇长的方法并不唯一,存在随机性(正常方法耗时在3ms左右,异常时方法耗时平均90ms,更有甚者耗时上百上千毫秒)

同步日志输出

判定原因:同步日志输出拖慢系统整体性能
验证过程:针对日志输出方式,分别对同步和异步日志进行两次压测,但是效果虽有改善但是整体影响不大,整体还是偏慢,该原因并不是导致系统问题的主要原因,压测数据如下

日志输出方式 速率(5min) 速率(10min) 速率(15min) 速率(20min) 速率(25min) 速率(30min)
同步 34972 9628 11485 15927 1758 ~
异步
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值