首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tomcat java.util.logging过程

tomcat java.util.logging过程
EN

Stack Overflow用户
提问于 2012-08-17 07:20:37
回答 2查看 3.6K关注 0票数 3

我有一个运行tomcat7的linux (ubuntu)服务器。服务器有1 1GB的内存,我收到了java抛出的堆空间错误。

基本上,我的tomcat服务器(运行我的servlet代码)抛出了异常,因为没有更多的内存可分配。我的代码非常精简,所以我不认为这是问题所在。

当我查看htop时,我看到了许多java日志记录进程,我看到了大约30个这样的进程:

代码语言:javascript
复制
ps ax | grep java
 7412 pts/0    Sl     0:02 /usr/bin/java -Djava.util.logging.config.file=/usr/share/tomcat/apache-tomcat-7.0.29/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/share/tomcat/apache-tomcat-7.0.29/endorsed -classpath /usr/share/tomcat/apache-tomcat-7.0.29/bin/bootstrap.jar:/usr/share/tomcat/apache-tomcat-7.0.29/bin/tomcat-juli.jar -Dcatalina.base=/usr/share/tomcat/apache-tomcat-7.0.29 -Dcatalina.home=/usr/share/tomcat/apache-tomcat-7.0.29 -Djava.io.tmpdir=/usr/share/tomcat/apache-tomcat-7.0.29/temp org.apache.catalina.startup.Bootstrap start
 7426 pts/0    D+     0:00 grep --color=auto java
25937 ?        Sl    13:12 /usr/bin/java -Djava.util.logging.config.file=/usr/share/tomcat/apache-tomcat-7.0.29/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/share/tomcat/apache-tomcat-7.0.29/endorsed -classpath /usr/share/tomcat/apache-tomcat-7.0.29/bin/bootstrap.jar:/usr/share/tomcat/apache-tomcat-7.0.29/bin/tomcat-juli.jar -Dcatalina.base=/usr/share/tomcat/apache-tomcat-7.0.29 -Dcatalina.home=/usr/share/tomcat/apache-tomcat-7.0.29 -Djava.io.tmpdir=/usr/share/tomcat/apache-tomcat-7.0.29/temp org.apache.catalina.startup.Bootstrap start

随着时间的推移,这些java进程会慢慢地泄漏内存,而且因为我只有1 1gb的内存可用,所以tomcat服务器开始抛出堆空间异常。

我已经摆弄过log4j (但它应该被关闭),并且我已经尽我所能关闭我能找到的配置中的登录。

任何帮助都将是伟大的,我只需要摆脱这些过程-他们是贪婪的方式。谢谢!

~丹

编辑:更多信息:

这可能是一个足够大的提示来完全解决这个问题-我检查了一些启动调试,并提出了以下内容:

代码语言:javascript
复制
    Oct 02, 2012 8:50:08 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads

SEVERE: The web application [/NMVServer] appears to have started a thread named [http-bio-8080-exec-53] but has failed to stop it. This is very likely to create a memory leak.
Oct 02, 2012 8:50:08 AM org.apache.catalina.loader.WebappClassLoader 
clearReferencesThreads

SEVERE: The web application [/NMVServer] appears to have started a thread named [http-bio-8080-exec-54] but has failed to stop it. This is very likely to create a memory leak.
Oct 02, 2012 8:50:08 AM org.apache.catalina.loader.WebappClassLoader 
clearReferencesThreads

SEVERE: The web application [/NMVServer] appears to have started a thread named [http-bio-8080-exec-62] but has failed to stop it. This is very likely to create a memory leak.
Oct 02, 2012 8:50:08 AM org.apache.catalina.loader.WebappClassLoader 
clearReferencesThreads

SEVERE: The web application [/NMVServer] appears to have started a thread named [http-bio-8080-exec-64] but has failed to stop it. This is very likely to create a memory leak.

根据一些论坛的说法,我发现的一个泄漏问题是由于JDBC Driver http://bugs.mysql.com/bug.php?id=36565的一个bug。这解决了我收到的另一个信息。

我一直在四处寻找,我发现这是非常有用的:

http://wiki.apache.org/tomcat/MemoryLeakProtection

现在我正在试着处理你所有的建议,谢谢!

~丹

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-24 17:45:02

一般来说,我希望用java编写的日志代码已经过了良好的测试。如果您的日志记录配置没有生成日志输出,则它的开销较低。您的htop结果可能在tomcat中显示了一些空闲线程状态。

它可以是日志记录,但您可能想要考虑all the ways your application or another component may be leaking memory

所有的JVM都有非常好的工具来诊断内存泄漏。像this这样的帖子讨论了发现正在发生的事情的好方法。

编辑:更多想法

如果有很多请求在使用HttpServletRequest.getSession(),你可能需要检查你的配置是否有太多的会话。Context内部的Manager组件配置默认为-1,表示会话不受限制。

使用the current issue fix list检查您的tomcat版本,以防您遇到已知的内存泄漏。

最后,Tomcat7包含一个JreMemoryLeakPreventionListener,它可能会显示未发布的资源。

票数 3
EN

Stack Overflow用户

发布于 2012-10-01 06:37:55

Tomcat通常有一个线程池。Java规范要求启动一个单独的线程来处理每个HTTP请求。Tomcat有一个线程池,并重用该池中的线程,而不是创建和终止它们。有关更多详细信息,请访问here

您可以通过修改setenv.sh (或setenv.bat )来设置Tomcat的最大内存限制,例如:

代码语言:javascript
复制
CATALINA_OPTS='-Xms512m -Xmx1024m'

有关Oracle JVM的更多详细信息,请访问here

但在实践中,最重要的事情是跟踪JVM中的内存分配。为此,您需要使用Java VisualVM

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11996788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档