Linux服务器程序性能测试的一些思考

来源:互联网 发布:可免费下载的数据库 编辑:程序博客网 时间:2024/05/17 21:54

 工作中对项目压力测试的一些心得,先自我作一个小结吧!

(一)宏观与微观相结合
  (1)宏观层面
       即系统的一些关键性能指标,如:各进程所占CPU的百分比、内存消耗、网络包量、磁盘IO等等,详细指标列举如下:

名称

描述

参考值

CPU useage

CPU 的使用时间百分比。

平均值小于70%

Process virtual memery size

进程使用的内存空间总量,包括物理内存和swap内存

进程长时间运行后该值不能大幅度的改变,否则是内存泄露

Disk rate

磁盘传输速率

一般少于2M/s, 日志级别太低时硬盘io会是瓶颈。

Bytetrans rate

网络发送速率

少于200Mbps

Bytereceive rate

网络接收速率

少于200Mbps

Pages swap in

每秒钟读入到物理内存中的页数

长期大于0表示物理内存不足

Pages swap out

每秒钟写入页面文件页数

参考上面

Context switches rate

每秒钟在进程或线程之间的切换率。

少于5000*cpu个数

Interrupt rate

每秒内的设备中断数。

该指标代表了本地向CPU引起的本地中断,例如IO端口引起中断,系统时钟引起中断。

一个巨大的中断值,同时伴随着缓慢的系统性能表现,指示存在硬件问题。 

    测试工具:nmon
 
  (2)微观层面
       这里是指具体到Server程序的逻辑功能模块,包括函数消耗CPU周期、函数调用次数等资源占用情况,以及系统内核哪一部分最忙等。
       测试工具:oprofile、gprof
 
(二)黑盒与白盒相结合
  (1)黑盒测试
       我们目前的压力测试程序,其实是归于黑盒测试范畴的,它模拟玩家的一些行为,应用具体项目的实际协议与被测游戏Server通讯,通过同时产生大规模机器人,来模拟与实际运营中相似的场景。这里编写的测试用例,其功能就是要尽可能真实地模拟client的功能,并能方便的配置化和部署client行为;
  (2)白盒测试
       我理解的白盒测试包括两部分,一是单元测试,它能有效地解决BUG回归测试的问题,二是代码覆盖率检查,它能有效检查到每个函数分支的执行情况。前者可借助业界成熟的自动化测试框架,如:cppunit、gtest;后者也有许多第三方工具,比较方便的有GNU自带的gcov,只要在编译程序时,加入-fprofile-arcs -ftest-coverage编译选项即可。
 
   如果要用一句话来概括两者的话,那就是:
  白盒测试能极大的保障程序逻辑功能层面的正确性(正常与异常流程均能检测到),而黑盒测试则能有效保障程序运行的稳定性。
原创粉丝点击