前段时间NDI(数据接口系统)测试环境出现被客户方系统全量同步调用时出现失败的情况,所幸问题不是出现在生产环境,不然问题的解决就变得很急。
该系统的功能层(或者说服务层。这里以视图层、功能层、数据层三层架构划分)的处理量是非常小的,主要是SQL查询语句处理后通过ORM框架输出为bean实体而已。正常而已不应该出现太多异常。
开始看日志,确实发觉找到了错误日志,但是日志很含糊,很难摸清原因(有时候报数据库连接超时、网络适配器错误)。后来
后百般尝试,发觉由于测试环境的数据库连接查询处理时间很久,之后报错。应该与测试环境处理速度慢了后有关系的,后多番查找定位到超出了jta事务的超时时间(300秒,5分钟),强制断开导致的。如下代码。
类似异常:
java.lang.IllegalStateException: wrong state: ABORTING
心得:还好此前刻意为测试环境准备了同架构,更小资源的服务环境,并且该测试环境有被运用,这样才能把问题及早暴露于测试阶段,而不是在生产环境中救火。
近期评论