一些测试软件及相关配置

27. 
压力测试loadRunner 
压力测试 jmeter 
内存分析jmap  
内存分析多线程分析,代码覆盖率jprobe

这些我们测试人员用得多,我们开发人员用得可能少


28.  典型的中国奥运的一个网站给瘫痪了,他可能当时就没有想到中国人这么多来订票的。他肯定也做了压力测试啊。


29.  我们以前做的3G的一个系统,主要是管理网络,为了支撑中国的3G运行的设备,电信这种指标要求还比较高,肯定是不能   down机的,但是我们这个才运行几天就死了,这个问题就分配给我们组了,我们当时在平台组,当时分配 了好多 组,大概50个从左右,有做客户端的,10来个,有做业务逻辑层的,因为业务逻辑比较复杂,还有数据库将近10个,另外还有我们平台的,我们平台主要做公共的部分,所以说这个问题就分配给我们组了,什么问题就是运行几天就不行了,动不了了,服务器就得重启,总报什么内存溢出,


30.  jvm内存配置

a.  如果不存在内存泄露,java.lang.OutofMemory解决方案是加大jvm内存,默认jvm最大内存为64M.  即堆区,你创建的对象太多,可能是这个原因,即堆区太上,你创建的对象太多。

b.  独立的java应用程序,可以采用java Server -Xms512 -Xmxl1024m
一般的商业性的项目,都会设置这个东西,我们当时已经加大了这个东西,但是问题还是没有解决,512m他都运行满了,所以可以肯定他肯定是内存泄露了。


31.  loadRunner如果你不是专业人员的话,你不太好用,jmap这个其实在java版本中就有,但是得是unix版本的java里面才有。通过他能看到垃圾收集的一个情况。


32.  我们交给测试部去一个一个模块一个模块去测,最终我们就定位到了模块,最终还真是发现了,他那个程序是这样写的,往map里面放东西,他还有一个判断,如果这个map中不存在,我就往里放,这很正常啊,但是你要判断map中的key到底存不与不存在,根据什么hashcode和equals   而他map中的key就是用他自定义的类,他忘了覆盖hashcode  和  equals ,所以
偶尔执行到他那,他就判断存不存在,每次判断都不存在。因为他没有覆盖这两个方法啊,所以每次就往里面放一下,执行到他那放一下,执行到他那放一下,这就给放满了,,把内存给撑爆了,溢出了,


33.  这叫内存泄漏了,不叫内存不够,内存不够我加大就可以了,但是现在是我加大了,他也不行,这叫泄漏,我们说c++   有泄漏,这也有泄漏,你做不好的话了泄漏,


34.  我们以前测试部也使用过Jprobe,,这个工具也比较强大,可以进行内存分析,以前能与过工具的一个培训,就是这个工具的产家在北京的一个培训,他公司在国外,就用String不停地相加,他给我们演示了,String啊,你一加,他就不停地产生对象。你对java不熟你也不好用。


35.  通过Jprobe还可以看到你到底测试了多少行代码,比如说你这个方法有100行代码,你只测试了60行,你交上去,说你测试过了,你一交上去,测试部一集成全是问题,他能够看到你的40行没有测试,这个工具对程序员不好,那你就必须得测了,你想偷懒都不行。没办法,有这样的工具,但是你也不能完全通过工具来衡量一个人的标准。


36.  你给客户部署都是直接在tomcat的脚本 里面启动的。


37.  这个测session,当前浏览器 是一个session,你如果想看session加1的情况,你再开一个就可以了


38.  一启动tomcat在运行的界面上  点status进去,就可以看到JVM   在这里可以看到jvm的最大内存之类的信息。通常我们要设置这个东西,除非你项目很小,项目大肯定要加大 这个内存,不加大肯定就会内存的溢出,因为对象太多,放不下,还没等垃圾收集呢?


40.  你还可以在界面上看到什么  最大线程200,其实这个界面读的都是一些配置文件里面的信息,你到server.xml里面去可以看到相关的一些信息。


41.  即tomcat同时并发的线程数,这些东西都是可以配置的。


42.  加tomcat内存的用法,到那个培训日志里面去看吧。现在运行的效果是  打开资源管理器,目前使用是1.72G   ,一启动现在变成 了2.25G了。他的经验太丰富了。

猜你喜欢

转载自xiechao240.iteye.com/blog/739954
今日推荐