面对一个架构设计繁复的linux服务器端应用,难于维护的局面,如何破局?其中,性能总是不达标怎么办?
一. 性能度量
1. 量化指标
并发连接数是一个量化指标,软件能不能达到或超过某个并发连接数是一个很明确的值。在达到客观需求的并发数时,CPU占用,内存占用,IO占用等等数据,是附带出的性能指标。
不同软件供应商提供的相同功能软件,在若干相同的量化指标下,可以进行对比。当然,前提是:测试内容一致,所用硬件条件相同。
2. 量化统计
有了指标,如何做统计工作,常常需要借助系统本身的一些软件工具。linux系统下统计网络并发数的工具软件都是现成的,不再冗述。
二. 性能分析
1. 寻找瓶颈
有了指标和统计数据了,还是需要进一步分析出瓶颈在哪儿。剖析瓶颈的形成原因,研究可能的优化方案。如何寻找软件瓶颈,是一个很大的话题。
2. 深度测量
寻找瓶颈不是一蹴而就的,往往是逐渐逼近的过程。在寻找的过程里,反复做深度的测量,看能是发现问题的关键。
3. 理论分析
每次拿到统计数据了,都要结合理论做分析,查找数据反映出的问题根源。理论结合实践,推动分析向深度进展。
三. 性能优化
1. 优化的方向
优化的办法往往就是那么几个,降低CPU占用,优化内存占用,优化IO性能等等几个反面。
四. 形成标准化测试
1. 如何从以上的一到三,形成标准化的自动化测试方案?
如果能形成一套自动化测试方案,不需要太多人参与,自动执行,获得测试结果和性能数据,是为之努力的理想状态。
只要形成固定的自动化测试方案,才能节省人力时间,留下可用,可追溯,可对比的历史性能数据。结合自动化构建,搭建自动化性能测试(另外一个大课题)。
2. 如何获得软件内部更详细的数据?
获得更多更详细的benchmark数据,深入到内部的线程CPU占用,函数调用次数和CPU占用,内存分配销毁次数等等,需要更强力的benchmark软件工具。