java - AWS EC2挂起,为什么运行 JVM?

  显示原文与译文双语对照的内容
0 0

我正在运行一个批处理引擎( BE ) 以及一个带有 16GB 内存的EC2实例。 两者都由WrapperSimpleApp管理。

是不断处理大量的信息。 只是想知道,数据库每天增长大约 10到 15 GB 。 从日志中,每天在 1到 7之间的时间间隔。 我将最大Java堆大小从 8GB 减少到 4. 它没有效果。作为最后的手段,我反弹了EC2服务器,错误消失了。 我想知道是否有什么方法可以找出为什么JVM没有响应。 be正在执行相同的工作量相同的进程。 它是EC2服务器的一个已知问题? 我没有任何证据显示。

以下是一些包装设置:

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

日志 file: 出错
信息| jvm 6 | 2012/07/03 05:46:12 | 在这里做一些事情。
错误| 包装器| 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 | JVM响应信号 SIGKILL ( 9 ) 而退出。
状态| 包装| 2012/07/03 05:57:19 | 启动一个 jvm 。
信息| jvm 7 | 2012/07/03 05:57:19 | 包装( 版本 3.2.3 ) http://wrapper.tanukisoftware.org
信息| jvm 7 | 2012/07/03 05:57:19 | 版权 1999 -2006 Tanuki软件。 保留所有权利。
信息| jvm 7 | 2012/07/03 05:57:19 |
信息| jvm 7 | 2012/07/03 05:57:19 | 继续做

提前感谢大家。

时间: 原作者:

0 0

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

如果你正在启动批处理文件而不是 java.exe,这可能会帮助解释问题。

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

问题是,你可能将 wrapper.java.command 属性设置为批处理文件,而不是直接向 java.exe. 请求线程转储。"中断"信号被发送到进程命令。exe/shell 而不是Java进程。 然后它将信号转发到 JVM,但也设置了一个内部标志,ctrl键已经被按下。 当子进程退出时,它立即询问用户是否希望停止或者继续批处理脚本。

原作者:
...