原因二:
1、运行的用户数过多,对服务器造成的压力过大,服务器无法响应,则报HTTP500错误。减小用户数或者场景持续时间,问题得到解决。
2、该做关联的地方没有去做关联,则报HTTP500错误。进行手工或者自动关联,问题得到解决。
3、录制时请求的页面、图片等,在回放的时候服务器找不到,则报HTTP500错误,若该页面无关紧要,则可以在脚本中注释掉,问题将会得到解决。例如:有验证码的情况下,尽管测试时已经屏蔽了,但是录制的时候提交了请求,但回放的时候不存在响应。
4、参数化时的取值有问题,则报HTTP500错误。可将参数化列表中的数值,拿到实际应用系统中进行测试,可排除问题。
5、更换了应用服务器(中间件的更换,如tomcat、websphere、jboss等),还是利用原先录制的脚本去运行,则很可能报HTTP500错误。因为各种应用服务器处理的机制不一样,所录制的脚本也不一样,解决办法只有重新录制脚本。
6、Windowsxp2 与ISS组件不兼容,则有可能导致HTTP500错误。对ISS组件进行调整后问题解决。
7、系统开发程序写的有问题,则报HTTP500错误。例如有些指针问题没有处理好的,有空指针情况的存在。修改程序后问题解决。
查找后台日志发现报了很多0ra-01000错误,这是oracle达到最大游标参数值,google了下,最大原因可能是JDBC连接没关闭。有可能是中间件连接池出了问题,很多连接没关闭。
通过日志查找解决:
如下文字转自:http://kaixin322.blog.sohu.com/114120249.html
这两天测试并发修改采购收货时,录制回放正确,运行脚本,集合点3个并发时,却老是出错
如下:
Action.c(30): Error -26612: HTTP Status-Code=500 (Internal Server Error) forhttp://192.168.100.88:88/Purchase/stockin_action.asp?Oper=Edt
解决过程:按Help提示在浏览器输入原地址,发现提示“请重新登陆系统”。
被此误导,偶以为是Session ID、或Cookie失效,于是尝试找关联,花了N多时间。可是脚本里确实不存在需要关联的地方呀,系统默认关联了。
与程序员沟通,证实此过程不会涉及到Session ID 或Cookie。那为什么?
因为集合点下一站就是修改的提交操作,于是查找web_submit_data-->定位查找Log文档
注意点:怎么找log文件
-->Controller-->Results-->Results Settings 查找本次log文件保存目录-->到该目录下查找log文件夹-->打开
惊喜的发现其中竟然有所有Vuser 的运行log。-->打开Error 查找报错的Vuser-->打开相应的log文件
查找error,然后偶发现了一段让偶热泪盈眶的话:
Action.c(30): <p>Microsoft OLE DB Provider for ODBC Drivers</font> <font face="宋体" size=2>错误 '800040
Action.c(30): 05'</font>\n
Action.c(30): <p>\n
Action.c(30): <font face="宋体" size=2>[Microsoft][ODBCSQLServer Driver][SQL Server]事务(进程 ID 53)
Action.c(30): 与另一个进程已被死锁在 lock 资源上,且该事务已被选作死锁牺牲品。请重新运行该事务。</font>
Action.c(30): \n
Action.c(30): <p>\n
Action.c(30): <font face="宋体" size=2>/Purchase/stockin_action.asp</font><font face="宋体" size=2>,行
Action.c(30): 205</font>
Action.c(30): Error -26612: HTTP Status-Code=500 (Internal Server Error) for "http://192.168.100.88:88/Purchase/stockin_action.asp?Oper=Edt" [MsgId: MERR-26612]
Action.c(30): t=37758ms: Closing connection to 192.168.100.88 after receiving status code 500 [MsgId: MMSG-26000]
Action.c(30): t=37758ms: Closed connection to 192.168.100.88:88 after completing 43 requests [MsgId: MMSG-26000]
Action.c(30): t=37760ms: Request done "http://192.168.100.88:88/Purchase/stockin_action.asp?Oper=Edt" [MsgId: MMSG-26000]
Action.c(30): web_submit_data("stockin_action.asp") highest severity level was "ERROR", 1050 body bytes, 196 header bytes [MsgId: MMSG-26388]
Ending action Action. [MsgId: MMSG-15918]
Ending iteration 1. [MsgId: MMSG-15965]
Ending Vuser... [MsgId: MMSG-15966]
Starting action vuser_end. [MsgId: MMSG-15919]
解决了。。。。。。。
很寒。由此可以看出,查看日志文件是件多么重要的事情啊!!!!!
其实并发死锁本来就是本次的重点,之前是写事务,但没有做整个页面的锁定,只是写在SQL里。程序员说这样容易出现页面错误,
又改成页面锁定,具体怎么锁偶没看懂asp外行。之前事务冲突,偶让他写个标志,定义个数值字段增一,偶就可以直观看出来了。
这次改成页面就删掉这些标志了,于是出错就无处可寻。
这次最大的收获就是知道怎么查找Controller的log文件。以后看到Error就不会被牵着鼻子走了~~~~
-------------------------------------
血的教训~~
再次碰到26612错误,此次偶没认真查看log,又重蹈覆辙。
找了N久,还是没发现问题所在。后来索性又打印出所有log。真理就显示出来了。。
so偷懒不得~~
ction.c(208): <p>Microsoft OLE DB Provider for SQL Server</font> <font face="????" size=2>???? '80040e31
Action.c(208): '</font>\n
Action.c(208): <p>\n
Action.c(208): <font face="????" size=2>?????????</font>\n
Action.c(208): <p>\n
Action.c(208): <font face="????" size=2>/net_qq/call_Scan.asp</font><font face="????" size=2>???? 24</fon
Action.c(208): t>
Action.c(208): Error -26612: HTTP Status-Code=500 (Internal Server Error) for "http://192.168.30.20/net_qq/call_Scan.asp" [MsgId: MERR-26612]
End auto log messages stack. [MsgId: MMSG-10544]