2012-07-09 65 views
-1

我正在EC2上运行批处理引擎(BE)以及Jboss实例,内存为16GB。两者都由WrapperSimpleApp管理。为什么在AWS EC2上运行的JVM挂起?

BE正在不断处理大量的信息。为了有一个想法,数据库每天增长大约10到15 GB。从日志中,BE每天下降1到7次。我将最大Java堆大小从8GB减少到4GB。它没有效果。作为最后一招,我退回了EC2服务器,错误消失了。我想知道是否有任何方法可以找出JVM为什么没有响应。 BE使用相同的工作量进行相同的过程。这是EC2服务器的已知问题吗?我没有任何证据证明有过错。

下面是一些包装器设置:

#初始Java堆大小(以MB)
#wrapper.java.initmemory = 256
#最大Java堆大小(以MB为单位)
包装。 java.maxmemory = 4096
wrapper.ping.timeout = 600

错误日志文件:
信息| jvm 6 | 2012/07/03 05:46:12 | BE在这里做一些事情。
错误|包装| 2012/07/03 05:57:14 | JVM挂起:超时等待来自JVM的信号。
错误|包装| 2012/07/03 05:57:14 | JVM没有按要求退出,终止
INFO |包装| 2012/07/03 05:57:14 | JVM在等待杀死应用程序时自行退出。
状态|包装| 2012/07/03 05:57:14 |响应信号SIGKILL(9),JVM退出。
状态|包装| 2012/07/03 05:57:19 |启动JVM ...
信息| jvm 7 | 2012/07/03 05:57:19 | Wrapper(版本3.2.3)http://wrapper.tanukisoftware.org
信息| jvm 7 | 2012/07/03 05:57:19 |版权所有1999-2006 Tanuki Software,Inc.保留所有权利。
信息| jvm 7 | 2012/07/03 05:57:19 |
信息| jvm 7 | 2012/07/03 05:57:19 | BE继续做东西

谢谢大家提前。

+0

嗯,哪个Java?哪个OS?哪个JBoss?与EC2相比,它更可能涉及这些事情。 – JasonPlutext 2012-07-12 07:39:56

+0

@JasonPlutext JAVA版本= 1.6最新更新。操作系统:Ubuntu 10.04.4 LTS 64bit。 Jboss:4.0.5.GA – Ali 2012-10-17 06:02:21

回答

0

使用jstack或kill -3捕获线程转储将有助于查找问题。

如果您要启动批处理文件而不是java.exe,这可能有助于解释问题。

http://wrapper.tanukisoftware.com/doc/english/troubleshooting.html#10

的问题是,你可能会直接wrapper.java.command属性设置为 一个批处理文件,而不是到的java.exe。当请求 线程转储时,“BREAK”信号正在发送到进程 command.exe/shell而不是Java进程。然后它将 信号转发给JVM,同时还设置了一个内部标志,CTRL-C已经按下了 。当Java退出时,它立即询问用户 是否希望停止或继续批处理脚本。

+0

首先,这是完全不同的问题。再看一下日志,并在特定的位置比较它们:“JVM挂起:超时等待来自JVM的信号。”批处理引擎不是批处理脚本。它是一个Java应用程序。其次,我将wrapper.java.command和java设置在wrapper.conf文件中。这会将信号发送给JVM本身。 – Ali 2012-07-13 01:44:37