压力测试异常
异常现象总结
1.??NumberFormatException之前大多出现在压力测试接近结束的时候,这时候是最有可能出现待办任务没有的时候。
2.??数据库操作出现大量异常,spring报Transaction rolled back because it has been marked as rollback-only,可能就是事务嵌套造成的原因。因为里面的事务已经标记事务必须回滚而外部事务还尝试提交。
3.??当出现大量事务rollback异常后,会有很多线程被阻止在需要启用事务的方法上,比如控制层调用一个服务层的方法,但始终进步了这个方法体内,一直到OutOfMemory。初步分析的情况是未提交事务的数据库连接不能使用或者是没有资源用于开启事务引起的。
4.??并发加载到35个服务器就停止响应,一段时间后报OutOfMemory异常,分析JavaCore文件大量线程停留在Page方法中的findAll方法,而此时查看数据库连接池,远未达到150条连接的上限,由此初步推断是数据量太大的原因。
?
?
1.? 更改了oracle的数据库驱动的版本为?10.2.0.1.0版本。原因参见http://forums.oracle.com/forums/thread.jspa?threadID=498046&start=15&tstart=0
Caused by: java.lang.NullPointerException
at oracle.jdbc.driver.T4C8Oall.getNumRows(T4C8Oall.java:876)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:831)
2.?修改?JSONDefaultAnnotationMethodHandlerAdapter?增加处理spring控制器抛出来的运行时异常,原来只处理了检查异常。?Spring可以配置HandlerExceptionResolver来处理异常,建议以后使用spring的方式来处理异常。