难道真是程序导致Out Of Memory??

shuayang 2009-05-06 10:20:49
难道真是程序导致Out Of Memory??

软件环境: aix 5.3+weblogic9.2+oracle1023
系统每天在线人数2500左右,数据库的数据量有4张频繁操作的表数据记录在1千万,2千万,3千万以上,其它表至少有20个数据量在百万级别以上。
系统前段时间运行一直正常(已经运行了1年多,以前没有出现过OOM),只是从4月底出现OOM,最近差不多一个星期出现一次。
对weblogic产生的phd文件和javacore文件分析的不太清楚。。。
以下是weblogic的日志:
.
.
JAVA Memory arguments: -Xms768m -Xmx1536m
.
WLS Start Mode=Development
.
CLASSPATH=/usr/java5_64/lib/:/usr/java5_64/jre/lib/:/usr/java5_64/lib/dt.jar:/usr/java5_64/lib/tools.jar::/bea/patch_weblogic922/profiles/default/sys_manifest_classpath/weblogic_patch.jar:/usr/java5_64/lib/tools.jar:/bea/weblogic92/server/lib/weblogic_sp.jar:/bea/weblogic92/server/lib/weblogic.jar:/bea/weblogic92/server/lib/webservices.jar::/bea/weblogic92/common/eval/pointbase/lib/pbclient51.jar:/bea/weblogic92/server/lib/xqrl.jar::
.
PATH=/bea/weblogic92/server/bin:/usr/java5_64/jre/bin:/usr/java5_64/bin:/usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:/usr/java5_64/jre/bin:/usr/java5_64/bin
.
***************************************************
* To start WebLogic Server, use a username and *
* password assigned to an admin-level user. For *
* server administration, use the WebLogic Server *
* console at http://hostnameort/console *
***************************************************
starting weblogic with Java version:
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build pap64dev-20080315 (SR7))
IBM J9 VM (build 2.3, J2RE 1.5.0 IBM J9 2.3 AIX ppc64-64 j9vmap6423-20080315 (JIT enabled)
J9VM - 20080314_17962_BHdSMr
JIT - 20080130_0718ifx2_r8
GC - 200802_08)
JCL - 20080314
Starting WLS with line:
/usr/java5_64/bin/java -Xms768m -Xmx1536m -Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0 -da -Dplatform.home=/bea/weblogic92 -Dwls.home=/bea/weblogic92/server -Dwli.home=/bea/weblogic92/integration -Dweblogic.management.discover=false -Dweblogic.management.server=http://xxx.xxx.xxx.xxx -Dwlw.iterativeDev=false -Dwlw.testConsole=false -Dwlw.logErrorsToConsole= -Dfile.encoding=GB18030 -Dweblogic.ext.dirs=/bea/patch_weblogic922/profiles/default/sysext_manifest_classpath -Dweblogic.management.username=weblogic -Dweblogic.management.password=weblogic -Dweblogic.Name=OASvrA03 -Djava.security.policy=/bea/weblogic92/server/lib/weblogic.policy weblogic.Server
<2009-4-30 下午04时03分51秒 GMT+08:00> <Notice> <WebLogicServer> <BEA-000395> <Following extensions directory contents added to the end of the classpath:
/bea/weblogic92/platform/lib/p13n/p13n-schemas.jar:/bea/weblogic92/platform/lib/p13n/p13n_common.jar:/bea/weblogic92/platform/lib/p13n/p13n_system.jar:/bea/weblogic92/platform/lib/wlp/netuix_common.jar:/bea/weblogic92/platform/lib/wlp/netuix_schemas.jar:/bea/weblogic92/platform/lib/wlp/netuix_system.jar:/bea/weblogic92/platform/lib/wlp/wsrp-common.jar>
<2009-4-30 下午04时03分51秒 GMT+08:00> <Info> <WebLogicServer> <BEA-000377> <Starting WebLogic Server with IBM J9 VM Version 2.3 from IBM Corporation>
<2009-4-30 下午04时03分53秒 GMT+08:00> <Info> <Management> <BEA-141107> <Version: WebLogic Server 9.2 MP2 Mon Jun 25 01:32:01 EDT 2007 952826 >
<2009-4-30 下午04时03分56秒 GMT+08:00> <Info> <WebLogicServer> <BEA-000215> <Loaded License : /bea/license.bea>
<2009-4-30 下午04时03分56秒 GMT+08:00> <Notice> <WebLogicServer> <BEA-000365> <Server state changed to STARTING>
<2009-4-30 下午04时03分56秒 GMT+08:00> <Info> <WorkManager> <BEA-002900> <Initializing self-tuning thread pool>
<2009-4-30 下午04时03分57秒 GMT+08:00> <Notice> <Log Management> <BEA-170019> <The server log file /bea/user_projects/domains/oa_domain/servers/OASvrA03/logs/OASvrA03.log is opened. All server side log events will be written to this file.>
<2009-5-4 上午10时06分19秒 GMT+08:00> <Critical> <Health> <BEA-310003> <Free memory in the server is 838,960 bytes. There is danger of OutOfMemoryError>
JVMDUMP006I Processing Dump Event "systhrow", detail "java/lang/OutOfMemoryError" - Please Wait.
JVMDUMP007I JVM Requesting Snap Dump using '/bea/user_projects/domains/oa_domain/Snap.20090504.100639.139302.0001.trc'
JVMDUMP010I Snap Dump written to /bea/user_projects/domains/oa_domain/Snap.20090504.100639.139302.0001.trc
JVMDUMP006I Processing Dump Event "systhrow", detail "java/lang/OutOfMemoryError" - Please Wait.
JVMDUMP006I Processing Dump Event "systhrow", detail "java/lang/OutOfMemoryError" - Please Wait.
JVMDUMP006I Processing Dump Event "systhrow", detail "java/lang/OutOfMemoryError" - Please Wait.
JVMDUMP007I JVM Requesting Snap Dump using '/bea/user_projects/domains/oa_domain/Snap.20090504.100641.139302.0002.trc'
JVMDUMP010I Snap Dump written to /bea/user_projects/domains/oa_domain/Snap.20090504.100641.139302.0002.trc
JVMDUMP007I JVM Requesting Snap Dump using '/bea/user_projects/domains/oa_domain/Snap.20090504.100641.139302.0003.trc'
JVMDUMP010I Snap Dump written to /bea/user_projects/domains/oa_domain/Snap.20090504.100641.139302.0003.trc
JVMDUMP007I JVM Requesting Snap Dump using '/bea/user_projects/domains/oa_domain/Snap.20090504.100641.139302.0004.trc'
JVMDUMP010I Snap Dump written to /bea/user_projects/domains/oa_domain/Snap.20090504.100641.139302.0004.trc
JVMDUMP007I JVM Requesting Snap Dump using '/bea/user_projects/domains/oa_domain/Snap.20090504.100641.139302.0005.trc'
JVMDUMP010I Snap Dump written to /bea/user_projects/domains/oa_domain/Snap.20090504.100641.139302.0005.trc
JVMDUMP006I Processing Dump Event "systhrow", detail "java/lang/OutOfMemoryError" - Please Wait.
JVMDUMP007I JVM Requesting Heap Dump using '/bea/user_projects/domains/oa_domain/heapdump.20090504.100641.139302.0006.phd'
JVMDUMP010I Heap Dump written to /bea/user_projects/domains/oa_domain/heapdump.20090504.100641.139302.0006.phd
JVMDUMP013I Processed Dump Event "systhrow", detail "java/lang/OutOfMemoryError".
JVMDUMP007I JVM Requesting Heap Dump using '/bea/user_projects/domains/oa_domain/heapdump.20090504.100641.139302.0007.phd'
JVMDUMP010I Heap Dump written to /bea/user_projects/domains/oa_domain/heapdump.20090504.100641.139302.0007.phd
JVMDUMP013I Processed Dump Event "systhrow", detail "java/lang/OutOfMemoryError".
Exception in thread "Timer-1" java.lang.OutOfMemoryError
JVMDUMP007I JVM Requesting Java Dump using '/bea/user_projects/domains/oa_domain/javacore.20090504.100641.139302.0008.txt'
JVMDUMP012E Error in Java Dump: /bea/user_projects/domains/oa_domain/javacore.20090504.100641.139302.0008.txt
JVMDUMP013I Processed Dump Event "systhrow", detail "java/lang/OutOfMemoryError".
at weblogic.utils.collections.Stack.<init>(Stack.java:18)
at weblogic.utils.collections.Stack.<init>(Stack.java:13)
at weblogic.kernel.ThreadLocalStack$StackInitialValue.initialValue(ThreadLocalStack.java:159)
at weblogic.kernel.FinalThreadLocal$FinalThreadStorage.<init>(FinalThreadLocal.java:183)
at weblogic.kernel.AuditableThread.<init>(AuditableThread.java:13)
at weblogic.work.ExecuteThread.<init>(ExecuteThread.java:63)
at weblogic.work.RequestManager.create(RequestManager.java:304)JVMDUMP007I JVM Requesting Java Dump using '/bea/user_projects/domains/oa_domain/javacore.20090504.100641.139302.0009.txt'
JVMDUMP012E Error in Java Dump: /bea/user_projects/domains/oa_domain/javacore.20090504.100641.139302.0009.txt
JVMDUMP013I Processed Dump Event "systhrow", detail "java/lang/OutOfMemoryError".
...全文
1113 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
eproe 2009-06-17
  • 打赏
  • 举报
回复
建议生成一些GC文件来分析,先看看是否是碎片问题!如果是的话,可以通过调整虚拟机参数来解决!
guolimin1118 2009-05-07
  • 打赏
  • 举报
回复
挺难得问题
学习
shuayang 2009-05-07
  • 打赏
  • 举报
回复
谢谢各位! 通过分析phd文件发现一点问题,修改了代码准备这周更新到生产机试试。
tdy218 2009-05-07
  • 打赏
  • 举报
回复
***WARNING*** Java heap is almost exhausted : 0% free Java heap.
内存不足,这里是Java堆内存不足(几乎耗尽).
我在itpub上也看到了你发的与这个相同的帖子了。
但你附件中只是javacore文件,请提供heapdump.20090504.100641.139302.0007.phd和heapdump.20090504.100641.139302.0006.phd这两个HeapDump转储文件和JVM的GC日志,GC日志输出需要在MEM_ARGS变量值后面加两个参数:
-verbose:gc -Xverbosegclog:<path to file><filename>

通过使用IBM专业的线程转储文件分析工具,已经找到一个可疑的执行线程,为了更加准确的定位问题,请提供我上面说的两个HeapDump转储文件和JVM的GC日志,那两个HeapDump转储文件加起来应该比较大了,可以上传到一个空间里或者使用QQ的文件中转站功能,将下载的链接地址贴到这里或者发我公司的邮箱里:
E-Mail:tiandy@ultimatech.cn
MSN:tdy218@gmail.com
顺便贴出来我们技术总监的联系方式把,我上午可能有点忙。

北京奥盟合创科技有限公司

专业的Oracle数据库,WebLogic中间件维保服务公司...

技术支持热线(7x24): +86 13910980424

Email:wayne.li@ultimatech.cn

http://www.ultimatech.cn


fredy1111 2009-05-06
  • 打赏
  • 举报
回复
连接肯定用weblogic里配的池呀。楼上说的两个-1我去单位看看:)
不过不知道会不会影响正常应用。
牛麦康纳 2009-05-06
  • 打赏
  • 举报
回复
把Weblogic的页面自动更新设置成-1
Servlet的更新也设成-1
多用池技术建立连接,代码没有大问题基本不会出现溢出的
fredy1111 2009-05-06
  • 打赏
  • 举报
回复
呃,感觉weblogic是挺容易内存泄漏的。我管的一个系统也是这样,hpunix+weblogic8.0+oracle9i。数据规模和你的系统差不多,在线人数没那么多,大概1000人左右,但是业务量很频繁,除了网页访问之外,还需要平均每秒处理大概10多个报文。

现在也是一周左右就要out of memory,除非主动重启一次。调大内存和永久堆栈确实可以延缓一些out of memory但是不能根本解决。请了oraclebea的人来看,跟踪了半天也没看出个什么名堂,就说是程序内存泄漏,根本找不到具体原因。只能说程序一复杂就很难找到泄漏的原因了。现在也只能这样撑着,弄个计划任务,每个凌晨三点重启一次,基本也就能顶着用了。

期待这个帖子有高手光顾,推荐点适用于weblogic跟踪内存泄漏原因的好办法。
little06 2009-05-06
  • 打赏
  • 举报
回复
典型的内存泄露

而且死机是一周一次
可以用一些专门的内存跟踪工具,跟踪看看

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧