1

如标题所述。之后,wrapper 无法启动另一个 JVM,我的 mule 服务停止了。和这方面的线索?

服务器上有一点负载,但负载不应该太多。

以下是相关日志:

发送数据包 PING : ok
读取数据包 PING : ok
从 JVM 得到 ping 响应
发送数据包 PING : ping
发送数据包 PING : ping
发送数据包 PING : ping
发送数据包 PING : ping
发送数据包 PING : ping
发送数据包PING : ping
发送数据包 PING : ping
JVM 出现挂起:等待来自 JVM 的信号超时。
JVM 没有按请求退出,终止了在端口 32002 上侦听的服务器
。在启动另一个 JVM 之前等待 5 秒。
信号被困。详细信息:
信号编号=17 (SIGCHLD),source="unknown"
收到 SIGCHLD,检查 JVM 进程状态。
JVM 响应信号 SIGKILL (9) 退出。
JVM 进程以代码 1 退出,但包装器退出代码已经为 1。
无法启动 JVM
<--包装器已停止

这是我使用以下命令重新启动 mule 时的日志:mule start。

Working directory set to: /root
Spawning intermediate process...
Spawning daemon process...
--> Wrapper Started as Daemon
Using tick timer.
server listening on port 32000.
Classpath element, wrapper.java.classpath.1, does not exist: %MULE_LIB%
Command[0] : java
Command[1] : -Dmule.home=/opt/skybus
Command[2] : -Dmule.base=/opt/skybus
Command[3] : -Djava.net.preferIPv4Stack=TRUE
Command[4] : -XX:MaxPermSize=128m
Command[5] : -Djava.endorsed.dirs=/opt/skybus/lib/endorsed
Command[6] : -Xms2048m
Command[7] : -Xmx2048m
Command[8] : -Djava.library.path=%LD_LIBRARY_PATH%:/opt/skybus/lib/boot
Command[9] : -classpath
Command[10] : %MULE_LIB%:/opt/skybus/conf:/opt/skybus/lib/boot/mule-module-boot-        3.2.1.jar:/opt/skybus/lib/boot/log4j-1.2.14.jar:/opt/skybus/lib/boot/mule-module-reboot-3.2.1.jar:/opt/skybus/lib/boot/wrapper-3.2.3.jar:/opt/skybus/lib/boot/commons-cli-1.2.jar:/opt/skybus/lib/boot/mule-module-logging-3.2.1.jar
Command[11] : -Dwrapper.key=XmncggXh3D4jnC8q
Command[12] : -Dwrapper.port=32000
Command[13] : -Dwrapper.jvm.port.min=31000
Command[14] : -Dwrapper.jvm.port.max=31999
Command[15] : -Dwrapper.debug=TRUE
Command[16] : -Dwrapper.pid=30321
Command[17] : -Dwrapper.version=3.2.3
Command[18] : -Dwrapper.native_library=wrapper
Command[19] : -Dwrapper.service=TRUE
Command[20] : -Dwrapper.cpu.timeout=10
Command[21] : -Dwrapper.jvmid=1
Command[22] : org.mule.module.reboot.MuleContainerBootstrap
Command[23] : start0
Launching a JVM...
Starting the Mule Container...
WrapperManager class initialized by thread: main  Using classloader: sun.misc.Launcher$AppClassLoader@192d342
Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
  Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.

Wrapper Manager: JVM #1
Running a 32-bit JVM.
Wrapper Manager: Registering shutdown hook
Wrapper Manager: Using wrapper
Load native library.  One or more attempts may fail if platform specific libraries do not exist.
Loaded native library: libwrapper-linux-x86-32.so
Calling native initialization method.
Inside native WrapperManager initialization method
Java Version   : 1.6.0_10-beta-b25 Java HotSpot(TM) Server VM
Java VM Vendor : Sun Microsystems Inc.

WrapperManager.start(org.mule.module.reboot.MuleContainerWrapper@192b996, args["start0"]) called by thread: main
Control event monitor thread started.
Startup runner thread started.
Communications runner thread started.
Open socket to wrapper...Wrapper-Connection
Opened Socket from 31000 to 32000
Send a packet KEY : XmncggXh3D4jnC8q
handleSocket(Socket[addr=/127.0.0.1,port=32000,localport=31000])
accepted a socket from 127.0.0.1 on port 31000
read a packet KEY : XmncggXh3D4jnC8q
Got key from JVM: XmncggXh3D4jnC8q
send a packet LOW_LOG_LEVEL : 1
send a packet PING_TIMEOUT : 30
send a packet PROPERTIES : (Property Values)
Start Application.
send a packet START : start
Received a packet LOW_LOG_LEVEL : 1
Wrapper Manager: LowLogLevel from Wrapper is 1
Received a packet PING_TIMEOUT : 30
PingTimeout from Wrapper is 30000
Received a packet PROPERTIES : (Property Values)
Received a packet START : start
calling WrapperListener.start()
Waiting for WrapperListener.start runner thread to complete.
WrapperListener.start runner thread started.
2012-04-01 14:53:42,297 INFO [org.mule.module.launcher.MuleContainer] - <
**********************************************************************
* Mule ESB and Integration Platform                                  *
* Version: 3.2.1 Build: 23380                                        *
* MuleSoft, Inc.                                                     *
* For more information go to http://www.mulesoft.org                 *
*                                                                    *
* Server started: 12-4-1 下午2:53                                    *
* JDK: 1.6.0_10-beta (mixed mode)                                    *
* OS: Linux (2.6.18-92.el5xen, i386)                                 *
* Host: localhost.localdomain (10.123.75.149)                        *
**********************************************************************>
4

2 回答 2

2

从第一个日志文件中,我可以看到 JVM 对 Wrapper 的 ping 请求没有响应:

send a packet PING : ping
send a packet PING : ping
send a packet PING : ping
send a packet PING : ping
send a packet PING : ping
send a packet PING : ping
send a packet PING : ping

因此 Wrapper 假定 JVM 已冻结,因此尝试停止并重新启动它。但实际上,由于负载过重,Wrapper 机器甚至无法启动另一个 JVM 实例。您可以扩展 wrapper.ping.timeout,如果您的机器上经常发生重负载,这将使 JVM 有更多时间处理 ping 请求。

http://wrapper.tanukisoftware.com/doc/english/prop-ping-timeout.html

希望这可以帮助你。

干杯

于 2012-07-20T03:22:14.530 回答
0

来自 https://wrapper.tanukisoftware.com/doc/english/prop-backend-type.html

我们最近在生产中遇到了这个问题,奇怪的是 3 个容器中有 2 个失败了。启用 JVM 日志后,除了 JVM 在 10 分钟后退出并尝试重新启动这一事实之外,没有太多关于发生了什么的信息。

在我们将 mule 配置 wrapper.backend.type=PIPE 更改为 AUTO 后,问题似乎已经解决。

我们还计划增加超时时间、增加内存等,但这对我们现在很有效。

于 2020-02-07T18:14:53.267 回答