课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
性能优化对于程序员来说是常态了,而今天我们就通过案例分析来了解一下,软件开发后端服务性能优化方法都有哪些。
1、性能指标
用来衡量一个系统的性能指标通常有:
TPS/QPS:TransactionPerSecond,每秒处理事务数量;QueryPerSecond,每秒请求数据量。这两个指标反应的是系统吞吐量,往往用于描述系统在一定的并发压力下的性能表现。
RT:ResponseTime,响应时间,执行一个请求从开始到后收到响应数据所花费的总体时间,即从客户端发起请求到收到服务器响应结果的时间。它反应的是系统的响应速度。
2、资源消耗
CPU负载/利用率:如果CPU负荷过高说明目前CPU资源是不足的。那么在后续的[分析程序的数据结构与算法]阶段,你需要优化运算逻辑如设计更合理的并行线程数量(通常是cpu核数×2);或者你可以直接增加CPU资源(scaleup);
内存占用:如果内存占用过高,可能会导致交换到swarp区,进而导致性能下降。那么在后续的[分析程序的数据结构与算法]阶段,你需要优化程序设计,比如减少缓存使用,及时释放内存等;或者你可以直接增加内存(scaleup)。
磁盘IO:磁盘IO过多会导致性能表现下降,严重时会导致相关线程阻塞。那么在后续的[分析程序的数据结构与算法]阶段,你可以考虑优化程序设计,减少IO量,减少小文件读写频率,增加缓存等等;或者你可以直接置换磁盘为SSD(scaleup)。
网络IO:网络IO过多可能会被网络带宽限制,导致传输速度受限。那么在后续的[分析程序的数据结构与算法]阶段,你可以优化程序设计比如减小通信量;或你可以直接增加带宽(scaleup)。
3、应用层面的优化
从应用层面考虑,我们应该对逻辑处理的数据结构与算法进行优化:
如果资源有瓶颈,参考[3.2分析硬件资源监控的统计数据,确定资源有无瓶颈]中的相关记述对程序本身逻辑进行优化分析;
如果资源无瓶颈,则需要分析程序本身的数据结构与算法有无优化空间。
4、运维层面的优化
运维层面的优化主要是各种组件服务器的性能相关参数优化。
这里列举了常见的组件服务以及linux内核等参数优化的例子:
DB参数优化:对于DB服务器,有无性能相关参数可以优化。比如存储引擎,缓冲池大小等等。
JVM参数优化:对于java应用,JVM参数是否可以优化。如GC算法,堆栈分配等等。同时,可以增加GC日志分析是否发生了过多的fullGC。
linux内核参数优化:对于linux服务器的内核参数,应当根据业务环境特性及服务器硬件配置来设置合理的值。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。