请教如何检测web系统的性能,如何进行web系统优化

最近在做一个b/s项目的性能测试,忘前辈们指点一二。公司有个系统很慢,尤其是连续操作一个多小时之后慢的要死,主管让我找出原因。
我是这样做的,先用jmeter做了个并发登录,超过19个用户就会出问题。然后使用Jprofiler查看了操作此系统时各类cpu占用情况,doFiter(权限过滤)占用了绝大部分内存,每次操作都会创建rolemodule的对象,也就是说每次操作都会进行权限过滤。然后我用sql的事件过滤器跟踪了每次操作时sql语句和存储过程占用的cpu和执行时间。暂用cpu最大的是93,Duration是375ms,不知道这个数据算不算异常呢?
我这样做可以吗?不知道前辈们在测试系统的性能时是怎么做的,因为我感觉我这样测试出来的数据没有具体的参考价值。jmeter我也是初学,只是并发了个登录,前辈们在压力测试时一般并发什么功能呢?认为有可能出现问题的功能都并发?还有jprofiler一般是如何操作的呢?我使用它时只能看到做哪个操作时创建了什么类的对象、创建了多少,占了多少空间,什么占的cpu比较多。事件探查器我也是只查看哪个语句执行时占的cpu比较多,但我还不知道占多少算是比较正常的。希望做过系统性能测试或优化方面的前辈们指点一下,谢谢了

你这样做可以初步分析出瓶颈所在,但是系统优化不是那么简单的事情,更深层次的问题还是需要从以下几方面来继续深入解决。
1)从代码层面,像你前面说的,每次操作都会创建roleModule对象,是不是有必要? 是否在用户以登录以后就缓存起来?这样就没必要每次都去访问数据库,数据库的I/O的性能代价是非常大的。
2)从数据库层面考虑,既然检测到耗时的SQL,是否有优化的空间? 比如加索引,改善SQL语句等等。
3)从系统本身考虑,是否JVM的配置有问题?是否数据库连接池的配置有问题等等?

简单写这些,希望能帮助到你。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-06
看情况是可能有内存泄露,jvm耗尽了当然会慢,问题是为什么不释放。
你可以做到的是用jprofiler分析出占用内存的是哪些资源,可能属于哪个模块。
然后交给代码开发人员处理,你的任务基本就完成了,如果你很强,那你就自己优化代码。
还有就是jvm是否配置的过低了。
测试过程中不要用jprofiler,这个东西本身就耗很多资源,分析时候用。
相似回答