51Testing软件测试论坛

标题: 大家是如何定位系统瓶颈的 [打印本页]

作者: test7    时间: 2008-8-10 11:15
标题: 大家是如何定位系统瓶颈的
我在做负载,压力测试时,发现的大多数问题都是程序代码的设计的问题,一般都是在加压时报错,或速度特别慢,然后让程序员去检查代码,想问一下你们都是怎么定位系统瓶颈的,有经验的都说两句最好是举个例子
作者: test7    时间: 2008-8-10 21:35
自己顶一下
作者: bzcyer    时间: 2008-8-11 11:12
这个,我现在也是比较迷茫,服务器监控不了,除了问题都不知道发生在哪,然后数据库也没法看。上周测定时候,并发300+的时候就大量的出现了拒绝服务的情况,根本无法定位,只能是估计连接池满了或数据库出了问题。
很悲剧。
作者: 森林一木    时间: 2008-8-11 11:56
根据错误判断性能呀,拒绝服务,可能是连接池满了,也可能是内存不足了,也可能是系统本身的连接数超了,很多地方可以检查,把可能出现的错误,一个个列出来,一一排查。

性能测试工作要是好做,那么性能测试工程师就不值钱啦,呵呵。
作者: test7    时间: 2008-8-11 20:35
大家继续
作者: fpbaggio    时间: 2008-8-12 09:02
go on
作者: cntester_com    时间: 2008-8-12 10:59
对于联机事务处理的应用系统,首先观察事务的每秒吞吐量曲线,找到最大的吞吐量拐点```
确定硬件环境下的,最大事务吞吐量,找到最大吞吐量下的最佳响应时间,可知道事务处理能力。
然后确定事务响应时间是否合理,定位事务在负载压力下是否满足预期目标```
然后分析未达标事务执行状况,监控执行的程序方法以及数据库执行语句状况```
进行微观分析,采用单用户或双用户模式下的监控跟踪,定位效率较低的程序方法,定位事务产生的SQL语句,并TUNING。
搞定程序方法执行与SQL生成执行效率,微观分析每条SQL语句的执行解析物理逻辑读结果扫描等等问题后``
进行容量测试,可查看索引合理性问题,大并发压力测试观察监控锁争用是否造成死锁和阻塞问题。
同时在大并发负载压力下观察数据库资源消耗是否合理的问题,以此判断数据库的配置设置的合理性。
以上需要了解数据库设计,数据库体系结构,业务事务与数据库设计的关联,数据库SQL语句执行效率分析关键点等等。

可通过监控JVM来追踪HTTP线程与JVM其他的资源消耗,从线程中分析方法,从方法关联调用中追踪最底层的程序方法
定位出最消耗CPU与内存和占用处理时间最高的方法,联机事务处理应用系统,程序逻辑方法中的页面展示与逻辑处理如果占用了太高的时间和CPU,则绝对存在问题。假如为数据库执行的程序方法占用较高的时间则为正常,且跟踪该方法内的数据库执行语句,回到上面的过程就是监控每一条方法内生成的SQL语句,以及语句执行效率。

等等等,以上只针对J2EE下的联机事务处理的数据库应用为中心的信息系统,其他的另谈。
作者: cntester_com    时间: 2008-8-12 11:07
原帖由 bzcyer 于 2008-8-11 11:12 发表
这个,我现在也是比较迷茫,服务器监控不了,除了问题都不知道发生在哪,然后数据库也没法看。上周测定时候,并发300+的时候就大量的出现了拒绝服务的情况,根本无法定位,只能是估计连接池满了或数据库出了问题。
...


善意的提醒,缺乏有效的跟踪监控的性能测试,等于没做性能测试。

未出现错误前,事务的响应时间和资源消耗状况是怎么样的呢?很多问题得综合进行分析,单纯因为拒绝服务而断定连接满了是不太理智的。

大多性能的问题,宏观讲是程序架构设计,以及数据库设计的问题,微观讲是程序方法执行效率与SQL生成与执行效率的问题。

如果只找出连接不够而出现的问题,那么可以说你的应用是很牛的了,但一般来讲90%不是配置出现问题,而是设计和编码实现出现问题。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2