系统程序优化实战(上)

文章讲述了在特定硬件条件下,通过软件优化提升系统登录性能的过程。首先减少数据库读写,然后优化磁盘操作,接着增加vCPU以减轻CPU压力,最后通过减少网络传输量显著提升性能,成功达到TPS大于300的目标。
摘要由CSDN通过智能技术生成

系统优化是每个IT同行都有的经历,当系统出现性能问题时,提升性能的方式通常有三个方面:提升硬件、系统调优、软件优化,三种方式各有优缺点:
1、提升硬件:实现方式简单,但成本高,一般是后两种优化还满足不了的情况下采用的模式。
2、系统调优:在系统上线开始运行阶段,随着系统访问量增加,通常由运维人员根据实际情况调谐系统参数(包括系统参数、数据库、应用服务器、web服务器等等)来满足。到一定阶段后,这种方式基本就达到极限。
3、软件优化:每个软件系统在实现过程中,都不可能采用性能最优情况来设计实现,一般做法是在功能达到后,随着实际运行需要,不停进行软件优化来满足系统性能要求。
本文主要讲述笔者一次软件优化经历,希望给马上要进行优化的同行一定的参考经验,也期望抛砖引玉,能看到更多好的案例。

优化对象

系统登陆。

目标

特定硬件条件的单服务器情况下,达到如下要求:
1、TPS>300
2、平均响应时间3秒内
3、10分钟10000用户

环境及工具

1、硬件:
Dell poweredge R430型号:Inter® Xeon® CPUE5-2603 v3@1.70GHz,32GRAM。用Citrix虚拟化出应用服务器和数据库服务器。
应用服务器参数:3-5vCPU,20GRAM,
数据库+Redis服务器:4vCPU,6GRAM
同数据库网络收、发带宽实测均为:2.4-2.5Gbps。
2、应用服务用Docker部署
3、性能测试工具:jmeter5.4.1
4、Zabbix3观察服务器CPU、内存、网络、磁盘等情况
5、其它辅助工具:nethogs、iperf3、RedisDesktopManager等

优化步骤

分析优化对象

1、测试对象所在流程,确定优化主要访问服务链接。
2、分析对象涉及类及方法,以便优化过程中随时修订完善。
3、分析可能受影响的功能。

准备环境

搭建需要用的软硬件环境。
验证测试环境全部准备就绪,使用的测试账号能正常登陆。

单账户测试

初始性能

先测试没优化前具备的性能。
在这里插入图片描述
如图所见,系统TPS和响应时间离目标较远。

减少数据库读写

首先排除数据库可能问题。优化方式:所有登陆所需信息,除第一次外均不从数据库读。
在这里插入图片描述
如图所见,性能稍微有提升,主要原因是登陆时数据库数据库相关查询少,基本没耗时。

减少磁盘耗时

磁盘读写肯定是性能优化重点考虑的一个方面,需找出优化对象所有涉及磁盘读写的地方进行优化,本次优化涉及:关闭所有日志输出(正式上线提升日志级别)、保存日志到数据库、tomcat不记录localhost_access_log等。
在这里插入图片描述
如图所见,很明显TPS和平均响应时间得到近1倍的提升,但还是没达到目标。

提高硬件-增加vCPU

性能优化时,其它方式已试过了,需测试硬件变化带来性能改变情况。硬件主要考虑如下几个方面:网络带宽、磁盘、CPU、RAM。当然,无论哪个方面,都是基于测试过程中,哪个方面反映存在压力才做哪个方面的改变,同时也得具备改变硬件条件才能进行。
具体到本次测试中,观察发现CPU Utiliztion的使用率会达到或超出100%,System Load会15分钟平均负载超过3(3个内核,最好在3以下)。网络带宽每秒读写各100M,读写实际网速测试为2.5Gbps。内存一直稳定,几乎无波动。本次登陆测试涉及到密码的加密,是耗CPU的,因此考虑提升到5vcpu,测试结果如下:
在这里插入图片描述
CPU情况改善如下:
在这里插入图片描述
如图所见,性能略有提升。

优化带宽

根据多方面分析,CPU、内存、磁盘读写都未达到瓶颈。只有带宽的数据比较大。现在最大带宽已固定,没办法提升,因此考虑减少网络传输量。由于固定一个用户,因此返回值改为固定值,测试结果:
在这里插入图片描述
如图所见,性能提升非常夸张,且达到目标。
找到问题后,立即分析问题原因及如何优化。详见系统程序优化实战(下)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐享技术

每一个打赏,都是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值