1/7用友股份-LE支持服务业务本部技术方案--《生成资产卡片时WAS宕机解决案例》建立日期:2013-07-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-JS-2013-00972/7文档控制创建记录适用范围审阅人日期审阅签字所属部门发布范围内部员工伙伴客户发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-7-01雷鹏产品支持部V1.0版本领域模块备注3/7目录生成资产卡片时WAS宕机解决案例.........................................................................4一、系统环境................................................................................................................4二、问题描述................................................................................................................4三、检查分析................................................................................................................4四、解决方法................................................................................................................6五、补丁74/7生成资产卡片时WAS宕机解决案例一、系统环境NC5.6,oracle11G,中间件是WAS单server二、问题描述在资产采购入库时点击生成资产卡片,前台浏览器死机,系统无法进入,WAS宕机,并且生成heapdump和javacore文件。生成少量卡片不会宕机,生成卡片数据较多时(卡片数量在1400以上),会宕机。三、检查分析先查看了javacore,发现outofmemory,估计是执行生成卡片操作导致jvm内存耗尽,查看jvm最大堆内存为1024m。让顾问调整到了2048m。5/7生成1400张卡片可以,但是生成更多张卡片时(2000张),会导致宕机。询问得知生成2000张卡片也属于他们的正常业务。进一步分析:打开nmc查看,发现内存确实已经耗尽。分析heapdumpnc.vo.ic.pub.sn.SerialVOnc.vo.ic.pub.bill.GeneralBillItemVO这两个方法导致。6/7四、解决方法代码问题,还原环境,问题转研发,研发出补丁。打上补丁后,执行生成卡片操作会报错。7/7Java.lang,arrayindexoutofboundsexceptionatoracle.jdbc.driver数据越界操作,atoracle.jdbc.driver。怀疑是ORALCEJDBC的问题。用11G的驱动替换后,操作成功。另外,不替换驱动,用NC中间件执行,不会报错。可能是WAS对数据库的操作的校验更高导致。五、补丁NC_SCM_PU-NC5.6-Patch-20130522-204548187.rar