标题: 使用LoadRunner进行性能测试的问题。求助! [打印本页] 作者: boathell 时间: 2004-9-3 16:09 标题: 使用LoadRunner进行性能测试的问题。求助! 两个脚本,同样是并发一个虚拟用户进行不间断访问。
录制第一个脚本,将登陆和注销操作放在vuser_init、vuser_end中,将查询操作放在action中,重放时发现服务器Oracle连接数不断上升,几分钟后达到最大线程数150,数据库over
录制第二个脚本,将登陆、查询、注销操作都放在action,定义为三个不同的事务,测试后发现,数据库连接数保持在20以下,但Tomcat出现out of memory错误,不能正常响应。
多次测试后,结果相同。
将两个脚本各执行一次循环后发现,查询和注销操作时间差别极小,分别为0.365 VS 0.361,0.075 VS 0.061,只有登陆操作是0.227 VS 0.354
请问如果是程序没有及时关闭数据库链接,那么为什么第二个脚本没有导致数据库连接数过多?能否根据结果断定是Tomcat的问题?又或是我录制的脚本有问题?
唉,各位辛苦一下,帮帮忙吧,bow作者: sunshinelius 时间: 2004-9-5 10:11
你的web程序的压力路线是这样的
lodrunner-〉tomcat-〉应用程序-〉数据库联接模块-〉oracle数据库
在第一种场景下,你的压力至少已经传递到了数据库联接模块,如果你的web程序中使用的web联接模块是torque(apache组织的开源项目,大多数tomcat服务器都使用它)的话,它负责创建数据库联接池,你看到的150个oracle连接数就是它创建的。你可以在torque配置文件中把联接池开得小一些,至少要少于oracle最大连接数。再试一下。
第二个场景下,你的施加在数据库联接模块的压力明显没有第一个场景大,数据库连接数为什么会下降,我从你现在提供的信息中无法得出结论。但是tomcat报出的错误,和tomcat的配置有关系,你可以查一下具体的log信息。可能是tomcat的session数过多,把tomcat搞垮了。因为你的退出脚本不能释放session,只有超时了,tomcat才会释放session.这样session在tomcat积压过多,而超过了tomcat配置文件中的配置最大数,引起的。具体的你看一下log,再看一下tomcat的配置吧
我做web测试脚本的经验:要是我的脚本运行导致了server端的什么超载或异常,那肯定不是我脚本的问题,而是各个server的问题。呵呵作者: boathell 时间: 2004-9-6 08:49
谢谢指教
最喜欢最后一句话了^_^
附部分Tomcat日志:
第一种情况:
dbcon:连接数据库失败java.sql.SQLException: ORA-00020: maximum number of processes (150) exceeded
java.sql.SQLException: ORA-00020: maximum number of processes (150) exceeded
……
第二种情况:
信息: Server startup in 23859 ms
2004-9-3 10:34:15 org.apache.jasper.compiler.Compiler generateClass
严重: Javac exception
Compile failed; see the compiler error output for details.
……
2004-9-3 10:52:54 org.apache.coyote.http11.Http11Processor process
严重: Error processing request
java.lang.OutOfMemoryError
……
Tomcat版本是5.0.19,使用连接池连接数据库,没有用torque
[ Last edited by boathell on 2004-9-6 at 10:02 ]作者: sunshinelius 时间: 2004-9-6 17:34
第一个情况:就在数据库连接池的配置文件中,把最大连接数配成低于150个
第二个情况:程序有问题,javac都报错了,你还测什么啊。找开发人员解决。作者: boathell 时间: 2004-9-7 16:22
因为压力更大的第一种情况没有出现编译出错的问题,所以才问大家作者: firemonth 时间: 2006-8-23 22:37
每帖必看!
看帖必回!