Tomcat Linux服务器失败问题

时间:2014-02-08 22:29:14

标签: java linux tomcat centos

星期五下午晚了,我的网络应用程序已停止响应请求。服务器仍可访问,并且Apache Tomcat进程未运行 - 日志中没有错误。你想回家但是你不能修复它。你做什么的?

网站将在我重新启动服务器后运行

服务器管理员告诉我,“在进一步调查中,我们了解到Tomcat应用程序无法处理在您网站的高峰工作时间或任何高流量时进入服务器的请求的大量数据在网站上。这就是Tomcat服务被挂起或崩溃的原因,然后只有解决方案是重启它,以便Tomcat服务运行。所以其他时间表示堆大小问题“

但我的网站每天最多只能产生250人。

请告诉我我该怎么做。

1 个答案:

答案 0 :(得分:0)

你需要加载测试你的代码,由于提供的信息有限,在这一端给出的答案,即stackoverflow的答案将非常有限。

是否启用了jmx? 如果是这样,然后通过jconsole连接到您的tomcat服务器并观察发生了什么,它听起来是堆转换,可能是内存限制然后崩溃。

您可以先将这样的内容添加到setenv.sh

-verbose:gc -Xloggc:/var/log/tomcatXX/gc.log -XX:+ PrintGCDetails -XX:+ PrintGCDateStamps

http://freddyandersen.wordpress.com/2009/07/14/how-to-enable-verbose-gc-in-tomcat/

然后,您可以查看gc日志,了解它执行完整gc的频率,以及是否确实存在当前配置方式的问题。

问题是您可以以不同方式配置它,并且由于代码中的内存泄漏仍然面临崩溃。这就是为什么负载测试和通过jconsole观看jvm很重要的原因 - 通常在一个完整的gc之后,内存使用率应该下降到默认的可用级别,如果它上升和上升,直到每个完整的gc之后可用的内存更少,你可以确保代码中存在内存泄漏。

看看你的tomcat进程上的Xms和XMx设置如果这是低的尝试增加这通常这是你的应用程序(tomcat)的整体内存配置这是当它在内存泄漏的帮助下达到其容量时会崩溃。

如果Xmx和Xms设置为低于512M,请务必尝试加倍,如果更好并且有更多内存,则可以使用2gig等等。

因此增加此值将增加其运行时间,但这也仅限于硬件的实际可用内存。

增加Xmx和Xms内存配置意味着它到达完整GC之前的内存量。假设您的解决方案具有高可用性并且您拥有强大的盒子,您可以使用堆栈A,让我们说40Gigs xmx xms设置,在对预期流量进行负载测试和测试之后,= 14小时的实际应用,没有完整的gc,之后它将完整gc - 这会给你14个小时不间断的应用程序使用 - 之后你将无法堆叠b并让堆栈做一个完整的gc

更多内存定义= gc实际发生的时间越长=
由于更高的内存配置而导致的gc越长,实际停机时间越长,而GC则越多。

一个例子:

它就像一个大跳跃 - 较小的跳过肯定会花费更少的时间来填充或空手动而不是更大的跳跃。所以更大的内存配置=更多的时间与更小的gc和更长的时间来获得一个完整的gc但是当它达到完整的gc时,它将需要更长的时间来清空,在此期间应用程序不响应请求。

正确的解决方案是运行多个tomcat服务器以及备用或循环并让它们共享流量 - 这是因为你有一个apache前端,或者不是像F5那样配置为负载平衡和标记节点等< / p>

这应该会给你一些关于要寻找什么以及修改

的想法