环境:一个基于B/S的MIS系统,硬件为2个CPU、8GB内存的HP系统,服务器是WebLogic9.2(就是第二个案例中的那个系统)。正常运行一段时间后,最近发现在运行期间频繁出现集群节点的虚拟机进程自动关闭的现象,留下一个hs_err_pid###.log文件
后,进程就消失了,两台物理机里的每个节点都出现过进程奔溃的现象。从系统日志中注意到,每个节点的虚拟机进程在奔溃前不久,都发生过大量相同的异常。
分析:这是一个远端断开连接的异常,通过系统管理员了解到系统最后一个OA门户做了集成,在MIS系统工作流的待办事项变化时,要通过Web服务通知OA门户系统,把待办事项的变化同步到OA门户之中。通过SoapUI测试了一下同步待办事项的几个Web
服务,发现调用后竟然需要长达3分钟才能返回,并且返回的结果都是连接中断。
由于MIS系统的用户多,待办事项变化很快,为了不被OA系统的速度拖累,使用了异步的方式调用Web服务,但由于两边服务的速度完全不对等,时间越长就积累了越多Web服务没有调用完成,导致在等待的线程和Socket连接越来越多,最终超过虚拟
机的承受能力后使得虚拟机进程奔溃。通知OA门户方修复无法使用的集成接口,并将异步调用改为生产者/消费者模式的消息队列实现后,系统恢复正常。