当前位置:软件学习 > 其它软件 >>

WebLogic 报out of memory

2台服务器 1台放ejb(weblogic部署) 1台放应用(非web)
应用是一个多线程发送邮件的程序现在出现一个问题就是从数据库获取某些运营商如(test.com)数据时 

会出现下面的错误

在ejb服务器上可以看到被此处调用的sql语句 返回记录集结果为0 而且后台没有任何报错

而其它运营商(163.com)调用ejb后可以返回最多200条数据 反而没有报这个错
我们一共设置取9个运营商 每个运营商都是一个线程启动单独取对应数据

我们另外还有2台服务器部署和上面2台一样,但对应的数据库中数据比较少,不管什么类型运营商都不会

报这个错

目前查看数据库 各类运营商最多的也就10万条记录 最少的几千条记录 但我们的取数sql是有条数限制的

每次<200条


错误如下:这个错误是从放应用服务器的日志中看到的
ERROR] 2009-03-27 14:18:38 smtp.thread.GetEmailThread - 获取新Mail失败:; nested exception 

is: 

        weblogic.utils.NestedException - with nested exception:

[java.lang.OutOfMemoryError]

weblogic.rjvm.PeerGoneException: ; nested exception is: 

        weblogic.utils.NestedException - with nested exception:

[java.lang.OutOfMemoryError]

        at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)

        at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:284)

        at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)

        at core.ejb.gwData_6xfme4_EOImpl_815_WLStub.searchMessage(Unknown Source)

        at smtp.ejb.EJBClient.getSendMessage(EJBClient.java:143)

        at smtp.thread.GetEmailThread.getEmail(GetEmailThread.java:515)

        at smtp.thread.GetEmailThread.doGetEmail(GetEmailThread.java:222)

        at smtp.thread.GetEmailThread.run(GetEmailThread.java:174)

Caused by: weblogic.utils.NestedException - with nested exception:

[java.lang.OutOfMemoryError]

        at weblogic.rjvm.RJVMImpl.gotExceptionReceiving(RJVMImpl.java:817)

        at weblogic.rjvm.ConnectionManager.gotExceptionReceiving(ConnectionManager.java:919)

        at weblogic.rjvm.t3.T3JVMConnection.hasException(T3JVMConnection.java:829)

        at weblogic.socket.SocketMuxer.deliverExceptionAndCleanup(SocketMuxer.java:565)

        at weblogic.socket.SocketMuxer.deliverHasException(SocketMuxer.java:521)

        at weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java:303)

        at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:32)

        at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)

        at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)

大家帮忙看看 会是什么原因?
--------------------编程问答-------------------- 我们之前在测试环境的机器上做过压力测试 程序连续跑 每天最多发送36万封邮件 没有任何问题 程序导致内存泄漏可能性不大 关键我们这个问题是在正式环境机器上刚开始运行就抛出来的 --------------------编程问答-------------------- 可可能是程序本身的bug如果确定数据量不大的话是不是什么地方出现死循环倒是内存溢出了呢 --------------------编程问答-------------------- 生成HeapDump去分析一下看什么东西在里面
还有分析GC的过程是否有异常

数据库是否返回巨大的ResultSet导致? --------------------编程问答-------------------- 什么操作系统呢?那个虚拟机? --------------------编程问答-------------------- 会不会在生产上空间占用过多
补充:企业软件 ,  中间件
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,