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

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

(一)宏观与微观相结合
  (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编译选项即可。
 
   如果要用一句话来概括两者的话,那就是:
  白盒测试能极大的保障程序逻辑功能层面的正确性(正常与异常流程均能检测到),而黑盒测试则能有效保障程序运行的稳定性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值