java 父进程_java服务包装器父进程挂起

在使用Tanuki Wrapper运行Java程序时遇到生产问题,报告指出Wrapper进程(C代码)被挂起。子进程Java程序在数小时前被SIGKILL (9)终止,而`stopit`函数的`kill $pid`操作陷入无限循环。尝试直接kill $pid无响应,必须使用kill -9 $pid强制结束。寻求解决SIGTERM (15)无法有效停止进程的问题,怀疑可能是C代码层面的挂起,考虑通过检查/proc/$pid找出挂起原因。
摘要由CSDN通过智能技术生成

我正在运行Tanuki Wrapper(并且已经持续了很长时间)。在生产中,它工作的很好,但是在那几个星期里,我得到报告说封装器进程(C代码)被挂起并且不会死,这会导致生产问题。

当我收到警报,我看看这里是我所看到的:

1)子元素java程序在几个小时前被SIGKILL / 9杀死

STATUS | wrapper | 2016/02/08 03:49:20 | JVM received a signal 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已经很长时间了),并发出一个直接kill $ pid,然后等待......什么也不做。 possible code?

4)最后放弃并发行kill -9 $ pid,并最终杀死它,并且一切都清理干净并恢复活力。

问题:

如何解决kill $ pid(SIGTERM / 15)不起作用的问题?这对于YEARS非常有效,并且仍然处于其他许多过程中,但仅有少数失败。

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

帮助我Obi-Wan Kenobi,你唯一的希望

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值