阿里妹导读
性能优化是降低成本的手段之一,每年大促前业务平台都会组织核心链路上的应用做性能优化,一方面提升系统性能,另外一方面对腐化的代码进行清理。本文结合业务平台性能优化的经验,探讨一下性能优化的思路及常用工具及手段。
性能优化是降低成本的手段之一,每年大促前业务平台都会组织核心链路上的应用做性能优化,一方面提升系统性能,另外一方面对腐化的代码进行清理。现结合业务平台性能优化的经验,探讨一下性能优化的思路及常用工具及手段。
性能优化本质上是对资源的合理利用,将更珍贵的资源用在更重要的业务上,从而实现资源的充分利用,资源的合理利用。性能优化的对象包括业务运行的容器、业务依赖的中间件、业务依赖的数据库存储的优化,性能优化包括两部分:一、发现需要性能优化的点;二、改造代码设计实现性能优化;
对于业务容器来说,需要性能优化的点,往往是对系统开销最大的业务方法,这部分代码功能上并没有任何问题,但在性能上并不是最优,在资源比较充足的情况下,这部分逻辑并不会导致性能问题,但当系统压力比较大,或者业务流量比较高的情况下,这部分就会成为压力最大的点。
将流量在部分容器上做放大,利用工具采集系统中的堆栈及性能数据。放大系统流量的情况下,需要提前关闭应用及容器的限流,可以利用Sentinel脚本调整。
### 取消限流 2.X
curl http://localhost:8719/switchSet?value=false
### 取消限流 3.X
curl http://localhost:8718/setSwitch?value=false
一、Duct引流验证
Duct引流, duct调整某一台机器的CS权重,将其他容器的流量引流到对应的ip上,从而实现压力的放大。
二、Amazon构造压测数据验证
Amazon压测,根据特定的业务场景,构造压测压测数据,压测模型,在gray4环境中打一部分压测流量,利用压测流量将系统的负载打高。Amazon更适用于大促场景下的性能优化,能确定某些接口的比例,及场景的比例。
系统负载流量增加后,各个环节的系统性能消耗都会被放大,此时利用工具可以分析系统的性能情况。
系统分析工具会带来系统压力增加,非必要情况下,尽量在隔离环境统计数据。
Arthas提供了非常多的工具脚本,其中一部分数据组合起来使用,可以很方便的辅助做性能分析及线上问题排查,这里对其中常用的指令及使用场景做汇总。
安装方式:curl -sLk http://ops.jm.taobao.org:9999/pandora-web/arthas/install.sh | sh
图 1.1 Arthas指令集合列表
性能分析及问题分析工具说明
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
场景一、CPU资源开销分析
利用profiler指令采集应用容器的性能,profiler start 默认采集的CPU的数据, profiler stop 自动dump对应的文件数据。
[arthas@2093]$ profiler start
Profiling started
[arthas@2093]$ profiler stop
OK
profiler output file: /home/admin/ump2/bin/arthas-output/20230213-191902.html
[arthas@2093]$ exit
场景二、JVM内存中分配了比较多的对象,但很快回收,希望找到临时对象创建比较频繁的堆栈。
[arthas@2093]$ profiler -e alloc start
Profiling started
[arthas@2093]$ profiler stop
OK
profiler output file: /home/admin/ump2/bin/arthas-output/20230213-192148.html
[arthas@2093]$ exit
场景三、应用启动速度比较慢,希望找到原因。
[arthas@2093]$ profiler start -e wall
Profiling started
[arthas@2093]$ profiler stop
OK
profiler output file: /home/admin/ump2/bin/arthas-output/20230213-192812.html
[arthas@2093]$
场景四、利用JFR分析JVM整体的运行情况,采集数据用作分析。
[arthas@82348]$ jfr start -n test
[arthas@82348]$ jfr stop -r 1 -f /tmp/1.jfr
Stop recording 1, The result will be written to:
/tmp/1.jfr
图1.2 JFR数据示例
工具地址: https://explorer.alibaba-inc.com/perf/#/profile
图1.3 天巡白屏化采集性能数据
天巡功能采集指标说明
注意: 指标采集功能从实现上基本都是在运行的JVM进程上挂载agent,随后对部分代码进行增强及注入,会引起类的退优化及C2编译,本身会导致程序的CPU增高,对于性能的采集不能在系统高负载的情况下执行。必要时在仿真环境里执行。
| ||
| ||
| ||
| ||
| ||
|
特殊的环境下,可能无法使用配套的工具,此时应尽量利用JVM及Linux系统中自带的工具,采集数据后,在本地利用工具进行数据分析。
一、利用Perf分析系统性能,Perf是linux内核提供的性能分析工具,利用该工具可以很方便的分析整机的性能数据CPU消耗来自非Java程序的场景,或者希望结合Java程序整体分析系统情况的场景
perf-map-agent.compiled.tgz:https://yuque.antfin.com/attachments/lark/0/2024/gz/8526/1704162543426-7fcb3be9-4465-475e-8518-4cf6449ca3c8.gz-
sudo yum -y install perf
sh create-java-perf-map.sh
# 采集性能数据
sudo perf record -ag
# 分析性能数据
sudo perf report
图1.4 利用Perf结合perf-map-agent 分析高CPU消耗数据
二、利用jstack分析应用的启动情况分析应用在启动过程中,应用运行的堆栈,进而分析出启动过程中,应用执行耗时最多的热点代码,进而针对性的做启动优化
$cat 1.sh
for i in `seq 10000`
do
/opt/taobao/java/bin/jstack $1 > /tmp/$1.$i.log
done
三、利用jmap、jcmd dump数据,相关数据dump出来后,可以进一步通过工具进行分析
/opt/taobao/java/bin/jcmd 82348 help
/opt/taobao/java/bin/jcmd 82348 help CodeCache.dump
/opt/taobao/java/bin/jcmd 82348 help Compiler.CodeHeap_Analytics
/opt/taobao/java/bin/jcmd 82348 JVMTI.data_dump
/opt/taobao/java/bin/jcmd 82348 help Metaspace.dump
/opt/taobao/java/bin/jmap -dump:format=b,file=/tmp/heap.bin 82348
图1.5 jcmd 分析CodeCache的大小及区间数据
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
经常会出现同样是8C16G的容器,但表现出来的性能确差异很大,这个在集团内表现尤为明显,这种情况实际和集团内部的编排策略有一定的关系。也可能和集团内部的机型差异存在关系。一、由于机型原因引起性能差异目前集团存在多种不同的机型,F4x、F5x、F6x、M机型等。不同的机型单核性能上表现会有差异。
| ||
二、由于编排方式带来的性能差异
在X86架构下,由于超线程的存在,业务容器实际使用的是物理核心上的超线程,当一个8C16G的容器独占8个物理核的时候,性能会最好。当8C16G的容器占用4个物理核的时候,性能会相对最差。结合跨Numa、跨socket等编排方式,也会带来性能的差异。
图1.5 应用容器编排示意
编排方式**说明**8C16G容器,独占使用同一个Socket上的8个物理核(P4-P11 未编排容器)此时容器的性能表现最好,应用独占整个CPU8C16G容器,独占使用跨Socket上的8个物理核(P20 - P28)Socket可以简单对应到主板上的Cpu插槽,跨soeck后,会导致Cpu之间跨socket访问内存及cache,性能相比前一种场景要差,具体差异还和应用特性有关,大内存带宽的应用性能会相对更差8C16G容器,使用同一个Socket上的8个超线程,物理核对端被其他应用占用由于超线程之间会存在L1、L2cache的共享,两个超线程之间会存在资源争抢,此时性能也会受到影响8C16G容器,使用同一个socket上的4个物理核此时应用的表现比较稳定,不会收到外部性能的差异产生影响。一般情况下性能表现最差,但比较确定
数据库侧的性能问题,主要有以下集中情况导致,常见的优化手段为:
一、合理利用前置的缓存,降低对数据库的访问量。缓存从效率及成本上都优于数据库。
二、清理数据库中的数据,对过期的数据、访问量少的冷数据进行清理及迁移。降低数据库的存储大小,对在线的查询会有帮助,对离线的存储、引擎、缓存等场景也会有收益。
三、合理调整索引,结合业务场景丰富查询条件,提高数据库的执行效率。
四、利用数据库聚合特性,调整主键的组成,提高数据的聚合度,降低逻辑读。
| |
| |
| |
|
缓存类存储对随机的访问上效率上都非常高,在日常及大促的核心场景中发挥比较大的作用。缓存类常见的问题:
| |
| |
| |
|
应用间链路依赖,一般是在单应用容量优化完成后,从整个链路上考察,优化链路的RT及链路的CPU开销。一般应用链路的优化,需要结合应用链路分析来考虑,这里主要利用鹰眼的数据进行分析。
| |
| |
|
图1.6 利用鹰眼查找核心接口上耗时比较大的链路最后
本文由微信公众号阿里云开发者原创,哈喽比特收录。
文章来源:https://mp.weixin.qq.com/s/MsqqFFkb1L4T8LlHIS97Kw
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。