|
本帖最后由 寂静如风 于 2011-8-3 17:17 编辑
回复 31# itmomo
1.window客户端指定进程的资源占用是怎么监控的?有没有好用的工具
windows性能计数器,系统自带,很不错了。还有就是spotlight,开源但强大的工具。
2.资源泄漏或者溢出如何测试?
资源泄露和溢出不知道你说的是不是就是指内存泄露?从系统测试角度讲还是从白盒测试角度进。如果是系统测试内存泄露的话,那么我们可以分类讨论下windows和linux平台的一些不同的做法。
windows下一般监控的参数是系统可用物理内存,可用虚拟内存,进程占用物理内存和进程占用虚拟内存,并且监控进程句柄数(Handle Count)和工作集(working set).
一般如果只出现虚拟内存涨或者物理内存单方面涨,不代表一定有内存泄露,也有可能是系统进行了资源位置转存,将物理内存中的数据移动到了虚拟内存中,或者反过来;如果出现在某一操作中,内存占用升高,这个操作结束后,内存恢复到原来的水平,也不会是内存泄露。
工作集是一个非常 重要的指标,如果发现进程working set 和进程占用的物理内存都有提高,并且一直没有降下来,那么说明可能存在内存泄露,这个时间可以写脚本重复执行这个动作,重点观察,并取得数据,验证结论。
再谈linux下面,一般是通过valgrind,nmon(IBM的工具,非常牛逼非常好用,强力推荐),或者自己用shell脚本配合free指令,来统计内存情况,然后进行分析。linux下面一般都是采用内存预分配的策略,所以你会发现一个进程在启动时申请了一大块内存,然后在这块内存里做操作,有时候监控下来,发现曲线几乎是水平的。因此一般情况下,linux下的程序,最好使,valgrind进行内存方面的测试,对代码和调试方面的能力要求高一些。
3.测试程序稳定性如何测试?使用什么工具?
稳定性这个影响的情况比较多,上面提到的资源泄露会引起不稳定,软件兼容性会引起不稳定,硬件兼容性也容易引起不稳定,网络模块不够健壮,也会引起不稳定。。。所以这个问题我感觉很难全面回答,说下几个注意事项吧:
1).内存泄露一定要查。
2).软件兼容性,一定要兼顾所有常用软件,比如各大下载站排行前20的软件,重点关注各大安全厂商的软件,尤其是垃圾360(虽然很多不明真相的群众还是用得很多)。
3).尽可能多的在不同的硬件配置机器上进行程序运行。
4). 换个网络模块程序写得好的程序来写通信模块程序,把原先的写得不好的,拉出去打。
4.网络通信性能如何测试?
网络通信性能一般还是考察server端负责管理TCP连接、接收/发送模块的性能(客户端就只负责自己的数据如果还出问题那真的可以打程序员了),一般来说考察以下几个方面:
1).小包,但高频率的通讯包的处理情况,比如一次发只有5个字节的包,但一秒总共有10W请求,统计每个包的处理时间,以及被测试目标的CPU占用情况。
2).大包,但稍低频率的处理情况。比如一次发20字节的包。
3).如果时间充裕,再测试大包高频率的处理情况。
以上三个用例,一般情况下,用例2的效率会是最好。 |
|