最新要闻
- 全球观焦点:消夏之夜购物节吸引百余商家汇聚 到场市民超过10万人次
- 每日讯息!OPPO Reno10影像称绝:全系标配长焦镜头
- 南宁路边停车一天收费上百 有车主欠费6.4万_当前快播
- 同调拼色设计辨识度拉满!小米Civi 3真机外观首秀来了 世界热闻
- 大内存大存储真香!新版真我GT Neo5官宣:16GB+1TB明日开售 报资讯
- 热点聚焦:国产视频剪辑软件取代PR?联想YOGA官宣与剪映独家合作
- 世界实时:【苗乡侗寨人物志】“想喝正宗酸汤,去凯里就对了”
- 时讯:出口货值增长近40倍!我国这个地方制造的汽车加速出口中亚→
- 焦点!拓邦发布钠离子电池:-40℃放电容量近80% 秒杀锂电
- 玩家化身手工耿血洗《塞尔达》:不仅造出了坦克飞机还要修仙
- 独悬变扭力梁、气囊也少了 新款丰田卡罗拉上市:11.68万起
- 国内营收占10%以上 美光成美国存储芯片独苗:内存全球第三_每日快看
- 新车下饺子!比亚迪宋Pro DM-i冠军版内饰官图发布:新配色真高级
- 优选营养素密度高的食物,合理膳食提升免疫力
- 没有5G卖4G的华为手机比苹果还牛:消息称逆势上调全年出货量目标 全行业第一家|天天精选
- 1499元!小度青禾学习手机开启预售:一机顶6台 立省1万元
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
rt下降40%?程序并行优化六步法|天天最资讯
1 背景
性能优化是我们日常工作中很重要的一部分,主要有以下原因:
- 降低服务器和带宽等硬件成本:用更少的资源处理更多的请求
- 提高现实世界的运行效率:人机处理效率存在数量级的偏差,同样机器世界的效率提升能带来现实世界效率提升的方法效果
- 提高用户的体验:解决响应缓慢、宕机等问题
而并行优化在改善程序接口响应时间和吞吐量指标方面是个利器,所以本次结合前段时间做的一段长链路执行逻辑代码的优化,给大家讲讲程序并行优化的步骤及方法论。
2 多线程优化六步法
2.1 定位优化点
一般是通过全链路监控、火焰图、自定义打点、生产报警等先找到耗时长的性能问题点,之后通过多线程并行化的方式达到优化程序响应时长和吞吐量的目的。
(资料图片)
2.2 执行链路分析
对问题点的执行链路进行分析,主要分几方面:
- 链路里涉及的操作节点;
- 节点自身的耗时;是io密集型还是cpu密集型;是否依赖和修改外部变量;此节点是否是核心路径;
- 节点间彼此依赖关系;
2.3 异步链路设计
- 将链路根据依赖关系进行重排,把被依赖的放在前面;
- 彼此不依赖有相同起点的节点并行化;设计并行任务结果获取及后续依赖节点的通知机制
- 如果有指定响应时间目标的链路,为核心路径节点设计降级方案;根据响应时间要求及已耗时数据对非核心路径节点调用进行舍弃;
- 将对变量修改的逻辑收拢,且尽量在主线程中处理,避免需要做的多线程变量可见性和时序性同步
2.4 并发框架选择
1.线程池
描述:具体业务任务继承接口 Runnable、Callable ,在调用 ExecutorService.submit 接口时,会提交任务到 ExecutorService 内部的一个任务队列中。同时,在 ExecutorService 内部还存在一个预先申请的线程池(Thread Pool),线程池中的线程会从任务队列中领取一个任务来执行。
优点:复用线程,减少线程创建销毁成本及减少请求时延
注意点:cpu密集型和io密集型任务应进行不同的线程池配置;为避免不同任务相互干扰重要业务最好独立使用线程池;不同线程之间要注意操作的有序和数据的可见性
2.AKKA
描述:每个 Actor 代表的是可以被调度执行的轻量单元。如图中所示,Actor A 和 Actor C 在向 Actor B 发送消息时,所有消息会被底层框架发送到 Actor B 的 Mailbox 中,然后底层的 Akka 框架调度代码会触发 Actor B,来接收并执行消息的后续处理。这样,基于 Actor 模型的这套并发框架,首先就保证了消息可以被安全地在各个 Actor 之间传递,同时也保证了每个 Actor 实例可以串行处理接收到的所有消息。
优点:不需要关注多线程之间并发同步和数据一致性;轻量级高并发
注意点:actor任务粒度要小,避免承接太多业务逻辑;计算密集型任务更能发挥出AKKA的优势
3.REACTOR
描述:输入流 Flux 就是 Reactor 中典型的异步消息流,它代表了一个包含 0 个到 N 个的消息序列。另外,图中的 Rule 代表的是一个基于消息的处理逻辑或规则,输入流中的消息可以被中间多个处理逻辑组合连续加工之后,再生成一个包含 0 个到 N 个的输出消息流 Flux。
优点:rule采用pull处理消息,避免消息积压;异步非阻塞io,避免阻塞当前线程
注意点:函数式编程,会有一定的语法学习成本和理解成本;针对消息流处理的、基于 IO 密集型的异步交互场景比较有优势
2.5 并发工具选择
多线程执行涉及到一系列细节问题,如共享变量可见性,执行顺序,结果的获取、后续操作的通知等,所以要结合需求使用一系列相关的并发工具类做多线程执行正确性的保障
2.6 效果验证
1.压测
一般通过jmeter、loadrunner等后端性能测试软件,不断对系统施加压力,并验证系统化处于或长期处于临界饱和阶段的稳定性以及性能指标,并试图找到系统处于临界状态时的主要瓶颈点。
注意点:
- 完全相同的环境以及测试负载
- 注意混部情况其他服务可能对验证服务造成的影响
- 通过加压减压调整请求量观察服务器处理能力的变化及稳定性
2.性能指标验证
- 验证并发用户数、响应时间及吞吐量这种调优目标量;
- 观察服务器的负载指标,防止因优化带来服务器超出负载能力;
- 观察上下游服务的业务指标和服务器负载,防止因优化带来上下游超出负载能力
3.业务结果验证
一般通过diff工具通过采集相同请求的响应对比判别是否影响业务;也可通过qa辅助构建针对改动的测试集去做验证
3 举例
以我们前段时间进行的商品主数据下发消费能力调优进行举例说明整个优化过程:
3.1 优化点定位
主数据程序接收商品批量下发处理缓慢,触发下发积压报警
3.2 执行链路分析
梳理各步骤对入参和保存时需要的变量的处理,分析各步骤相互依赖关系,是否可并行,进行执行过程优化调整。
商品主数据处理步骤分析:
3.3 异步链路设计
- 1、 3、4、5异步并行处理,且因对其他变量修改逻辑无依赖,放在最前面提交。
- 2、7、8、9、10、11根据依赖关系,把相关性的逻辑收拢,把被依赖的逻辑提前。
- 13也异步提交。最后通过completionService.take().get()遍历获取各任务执行结果进行合并返回最终结果
3.4 并发框架选择
出于团队知识栈及框架应用场景综合考虑,这里选择了线程池作为并发框架,并结合多io场景做了线程池参数配置。
/** * io任务线程池 */ public static ThreadPoolExecutor threadPoolExecutorForIO= new ThreadPoolExecutor(Runtime.getRuntime().availableProcessors(),Runtime.getRuntime().availableProcessors()*2,1, TimeUnit.MINUTES,new ArrayBlockingQueue(2014),new ThreadPoolExecutor.CallerRunsPolicy());
3.5 并发工具选择
这里使用CompletionService来获取多线程的执行结果,并进行结果归集。CompletionService通过在线程结果完成时提交到阻塞队列,避免通过遍历future结果的方式导致先提交的任务耗时长造成的阻塞等待。
CountingExecutorCompletionService completionService= new CountingExecutorCompletionService(ExecutorCollector.threadPoolExecutorForIO); //任务提交 completionService.submit(callableA);//结果归集 boolean result=true; for(int i = 0; i
3.6 效果验证
1.压测
采用jmeter对两台相同配置的服务器(分别部署优化版本和原始版本)加压,观察服务负载情况
2.性能指标验证
1)耗时和吞吐量异步版本要优于同步版本
异步版本耗时在80-100ms,同步版本耗时在120-160ms异步版本吞吐量在17000/5分钟,同步版本吞吐量在15000/5分钟
2)cpu使用率异步版本略高一点,线程数异步版本比较高线程数高的原因:用到了线程池,预置的核心线程数为逻辑核数64,因为涉及到io操作较多,最大线程数配成了128。
3.业务结果验证
因为公司框架不支持http的diff,此处采用了自己抽检请求结果及qa协助走查和code review的方式保证业务结果的准确性
4 总结
程序性能优化方法关系到方方面面,而多线程异步优化无疑是其中很重要的一种途径。它不光关系到并发框架的选择、多种线程工具类的使用,还关系到对整个处理链路的业务理解和编排分析。希望通过这一课可以帮大家理清相关的思路,作为日常优化工作的一个参考。
作者:京东物流 冯鸿儒
内容来源:京东云开发者社区
关键词:
rt下降40%?程序并行优化六步法|天天最资讯
为什么MySQL单表不能超过2000万行?_环球动态
05-译码器
全球观焦点:消夏之夜购物节吸引百余商家汇聚 到场市民超过10万人次
每日讯息!OPPO Reno10影像称绝:全系标配长焦镜头
南宁路边停车一天收费上百 有车主欠费6.4万_当前快播
同调拼色设计辨识度拉满!小米Civi 3真机外观首秀来了 世界热闻
大内存大存储真香!新版真我GT Neo5官宣:16GB+1TB明日开售 报资讯
热点聚焦:国产视频剪辑软件取代PR?联想YOGA官宣与剪映独家合作
世界实时:【苗乡侗寨人物志】“想喝正宗酸汤,去凯里就对了”
Android Studio源码导入与调试_环球新资讯
天天快讯:From Java To Kotlin:空安全、扩展、函数、Lambda很详细,这次终于懂了
GPS北斗校时服务器(时间同步装置)助力桥梁检测系统建设
微动态丨HTTP1.0、HTTP1.1、HTTP2.0 协议的区别
时讯:出口货值增长近40倍!我国这个地方制造的汽车加速出口中亚→
焦点!拓邦发布钠离子电池:-40℃放电容量近80% 秒杀锂电
玩家化身手工耿血洗《塞尔达》:不仅造出了坦克飞机还要修仙
独悬变扭力梁、气囊也少了 新款丰田卡罗拉上市:11.68万起
国内营收占10%以上 美光成美国存储芯片独苗:内存全球第三_每日快看
新车下饺子!比亚迪宋Pro DM-i冠军版内饰官图发布:新配色真高级
优选营养素密度高的食物,合理膳食提升免疫力
c语言程序设计知识点总结03-精彩看点
没有5G卖4G的华为手机比苹果还牛:消息称逆势上调全年出货量目标 全行业第一家|天天精选
1499元!小度青禾学习手机开启预售:一机顶6台 立省1万元
热门看点:400年前的画里有男孩穿耐克鞋 网友称穿越:还有百年前画作出现iPhone
全红婵的水花让物理学不存在了 网友点赞:物理学对她不适用|全球观热点
一个月没找到 美国30吨爆炸性化学品铁路运输时丢失:科普硝酸铵理化性质-世界热点
快报:中国抗体-B(03681.HK):SM17新药研究申请获国家药监局药品审评中心受理
天天精选!交易商协会发布4月债务融资工具业务量统计和主承分类统计
印为何收回2000卢比纸币?专家:缓解银行流动性危机和加息压力
BLG夺《英雄联盟》MSI亚军 B站:BLG粉丝赠送一年大会员 全球微动态
比亚迪汉DM-i冠军版/DM-p战神版爆火!3天订单破1.3万辆:女车主高达37.2%
盖茨再爆与20多岁俄女子发生婚外情 遭美国淫魔富豪威胁 全球速看料
学系统集成项目管理工程师(中项)系列24a_信息系统集成专业技术知识(上)-当前播报
世界快播:雅顿橘灿精华使用方法 雅顿橘灿精华用在哪个步骤
JDG战胜BLG夺《英雄联盟》MSI冠军!官方发福利:皮肤免费送 全球头条
《王国之泪》开发之初没有剧情:优先考虑游戏体验-环球热消息
全国首个DNA存储领域预训练大模型 ChatDNA发布 今日快看
最新消息:[工具/资源] Web应用开发的基础工具与资源
全球观察:Pytest - pytest 命令(2) - 命令参数及含义
计算机组成原理:控制器实验|全球今亮点
焦点播报:记录一次系统恢复的经历
linux 性能自我学习 ———— 理解平均负载 [一] 环球看热讯
焦点速讯:我们看腻了的电视剧 却在东南亚成了顶流
清华女生获选美冠军 回应质疑:打破对理工科女生的偏见 全球热文
音量调节器怎么在桌面显示_音量调节器不见
情定三生40集大结局_你都学会了吗_全球讯息
Netflix 网站架构学习
wps邮件合并功能无法打开数据源_wps邮件合并
三大运营商最新财报出炉:一天净赚4.2亿|每日消息
国内AI大模型 VS chatgpt (20)-- H265/H264有何不同,h265有什么优势?
Revit二次开发实战04(元素搜集过滤器FilteredElementCollector)
雅顿和珂润哪个好 珂润和雅漾哪个好
世界时讯:官方:美光在华销售产品 未通过网络安全审查!关键领域停止采购
DDR5内存之疯狂:频率突破11.2GHz!延迟惨不忍睹-全球观点
每日快看:完全自主知识产权 国产全新3D dToF芯片发布
伊拉克“抱脸虫”追着美国大兵跑!比你想象的还可怕|每日视讯
《GTA6》男主现身:和游戏画面一模一样|速读
期权即将到期 黄金重回区间还是下破?_环球快播报
世界报道:C++ Primer 5th 阅读笔记:字符串,vector 和数组
焦点热文:杂项·入门
AMD RX 7600公版卡曝光:双风扇也迷你可爱!国内会卖吗?|今日热讯
全国第一次!两条高铁的两座特大桥同时转体|焦点关注
大众CC开着开着天窗没了 车主:吓得腿发抖-世界聚焦
万科150亿元定增申请获深交所受理 当前快讯
独特多媒体旋钮设计瞩目:Keychron即将推出Q3 Pro SE机械键盘 观天下
环球时讯:锐龙7 7800X3D开盖“果奔”:60秒后 惨烈一幕出现
妇女能顶半边天下一句_我歌月徘徊下一句 全球信息
即时看!首批名额仅600名:魅族17系列迎来Flyme10内测招募
你的走路姿势 可能一直都错了!难看还伤腿
观速讯丨珍惜白菜价的电视吧 液晶电视面板价格继续大涨
武汉市三角路中学(关于武汉市三角路中学介绍)_世界今热点
499元新机竟敢对标苹果 看完真的有点香!
每日动态!凸六式扫把火了 商家剪坏扫把低价引流 男子将计就计下单
SpringBoot利用自定义注解实现多数据源
2尺2是多少毫米(2尺2多少厘米简介介绍)_今日热议
杭州现鸭屎香冰淇淋:味道揭秘!原来鸭屎香是一种乌龙茶
头条焦点:英国CMA或让步!微软收购动视暴雪新变动
天天关注:《英雄联盟》2023 MSI决赛JDG对战BLG!首发名单出炉:萍乡第一中单之争
青沼英二坦言自己老了:《王国之泪》将我逼到极限
银川市为500名女童免费接种HPV疫苗
IMU 积分进行航迹推算 天天快报
Win7经典“顽疾”:微软确认Win11硬盘可能被错误识别|全球今热点
“挖呀挖”黄老师开始转型:参与文旅宣传!曾否认辞职带货
焦点热文:小李子新片《花月杀手》M站91分 多家媒体给出满分
格致男排,夺冠! 每日速递
CesiumJS 源码杂谈 - 时间与时钟系统_前沿热点
《利益区间》冲击金棕榈大奖
4999元起!小牛MQiL电动两轮车开售:顶配能骑170km_世界动态
对话盛希泰:“专精特新”企业给二三四线城市带来发展机会_世界视点
快报:河南局地大暴雨!女子家中厨房窗户被暴风雨整个吹掉:庆幸无人受伤
每日关注!李想:汽车行业规模要求太苛刻 更容易出问题的不是成本而是销量
04-多路选择器
快报:我国南海发现两处古代沉船
我国深海考古重大进展!首次发现大型古代沉船:水下第一视角太壮观 环球热文
因为AI 让80%的职业原画师下岗
帮助Linux管理员简化任务并实现自动化的七大工具
自己办理深圳创业补贴难吗?创业开饭店有补贴吗深圳
爱驰汽车被曝经营困难:开通员工自费交社保通道 焦点热讯
中国取代日本成全球第一大汽车出口国 俄罗斯为最大买家|天天热门