最近公司的新版本的系统开发完成了,交付给客户使用之前,正式将其升级到我们正在使用的系统,升级后的三天,系统频繁down机,三天时间已经超过15次。自己才真正感觉到频繁down机的后果。
后来第三天下午,公司组织了几个人研究系统,我研究数据库,一个看jboss 4.2.3, 另外两个看新加的代码。看看哪个地方出了问题。
一以前系统升级前运行很好,也很正常,但一升级到新的版本后,就出现系统慢,最后就down机。一开始因为是在程序里使用了循环里调用数据库查询,后来发现不是的。
经过大家的分析和测试,最后发现了问题。
原来在程序里,一个程序员没有使用声明式编程,而是手工使用了编程式事务,但是在使用过程中,程序里在一个逻辑判断中,不符合条件直接返回,对事务没有提交也没有回滚。这是由于事务没有提交,其他用户就不能提交数据。时间一长,系统就很慢,到最后就down机。
总结:
对编程式事务,在异常中或者在处理时,一定要别忘记提交和回滚事务。