gpt4 book ai didi

java服务包装器父进程挂起

转载 作者:行者123 更新时间:2023-12-02 03:57:34 29 4
gpt4 key购买 nike

我正在运行 Tanuki Wrapper(并且已经运行了非常非常长的时间)。在生产中,它运行良好,但在这几周内,我收到报告称包装器进程(C 代码)已挂起并且不会终止,这会导致生产问题。

当我收到警报并查看时,我看到的是:

1) 几个小时前,子 java 进程被 SIGKILL/9 杀死

状态|包装| 2016/02/08 03:49:20 | JVM 收到信号 SIGKILL (9)。

2) 然后我看到我自定义构建的内部观察程序进程发出了 wrapper.sh stop 来重置它,但这正在进入无限循环,如下所述:code link

stopit() {
[snip]
kill $pid
[snip]

# MY NOTE It never gets out of this, the kill doesn't work

# We can not predict how long it will take for the wrapper to
# actually stop as it depends on settings in wrapper.conf.
# Loop until it does.
savepid=$pid
CNT=0
TOTCNT=0
while [ "X$pid" != "X" ]
do
# Show a waiting message every 5 seconds.
if [ "$CNT" -lt "5" ]
then
CNT=`expr $CNT + 1`
else
eval echo `gettext 'Waiting for $APP_LONG_NAME to exit...'`
CNT=0
fi
TOTCNT=`expr $TOTCNT + 1`

sleep 1

testpid
done

[ SNIP ]
fi
}

3) 然后我登录到盒子上并找到包装器进程 pid(记住 JVM 早已死亡)并发出直接终止 $pid,然后等待...什么也没有。 possible code?

4)最后放弃并发出kill -9 $pid,这最终杀死了它,所有东西都清理干净并恢复正常。

问题:

如何对kill $pid (SIGTERM/15) 不起作用的应用程序进行故障排除?这在几年中非常有效,并且仍然在许多其他过程中有效,但只有少数过程失败了。

当然,Tanuki 上的大多数问题和文档都是关于如何操作/询问子 JVM,但我实际上看到了我假设的 C 代码的问题,并且我不确定如何询问挂起PID为C代码放弃 secret 。也许 /proc/$pid 中的某些内容可以告诉我它卡在什么上?

帮助我欧比旺·克诺比,你是我唯一的希望......

最佳答案

来自 Tanuki Software 的 Leif

JVM 被 SIGKILL 意外终止的最可能原因是操作系统资源不足并终止了进程。当这种情况发生时,Java 通常是内存的最大使用者,因此它会被钉住。请检查系统日志,因为如果这是原因,则应该同时有一个条目。

即使发生这种情况,Wrapper 也应该正确处理此问题并重新启动 JVM。听起来包装器已进入意外状态并且本身不响应正常信号。您使用的 Wrapper 版本是什么?我仔细检查了发行说明,但认为我们以前没有遇到过这个确切的问题。 http://wrapper.tanukisoftware.com/doc/english/release-notes.html

请让我知道 JVM 被终止时您在系统日志中发现的内容。

关于java服务包装器父进程挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35283549/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com