1Panel-dev / webkubectl

Run kubectl command in Web Browser.
Apache License 2.0
854 stars 120 forks source link

关闭浏览器床后后容器中依然存在sh命令 #7

Closed Lionelpang closed 1 year ago

Lionelpang commented 4 years ago

在使用当前容器后,发现非法关闭浏览器中的tab后,查看容器中的sh命令依然存在,如下 所示: / # ps axu|grep sh 1 root 0:00 sh 134 root 0:00 sh 319 root 0:00 sh 329 root 0:00 grep sh 经过多次测试,发现正常输入exit后会自动退出,但是直接关闭浏览器则会多处类似319这样的sh。测试惊现使用busybox。

liqiang-fit2cloud commented 4 years ago

Fixed in Terminate zombie process.

liqiang-fit2cloud commented 4 years ago

@Lionelpang 感谢你提出的问题,我们已在本地重现并确认它是bug。 问题原因:正常情况下用户输入exit或关闭浏览器tab时都会有一个callback通知server端终止进程,非正常情况下比如网络突然断开时就无法触发callback通知server端终止进程,从而产生了僵尸进程。 解决方案:引入一个超时机制,如果在指定时长内server和client之间未收到ping pong,则认为连接已关闭,server执行中止进程。“指定时长”可以由环境变量LOST_PING_TIMEOUT_SECONDS指定,类型为int64,单位为秒,默认值为180。需要说明的是在超时时间范围内,断网并恢复网络之后,未关闭的窗口可以自动恢复连接继续使用,所以需要考虑多种情况合理设置超时时间。

liqiang-fit2cloud commented 4 years ago

Fixed in release v2.2.

Lionelpang commented 4 years ago

hello, i fix the issue, and commit the pr.

w7team commented 1 year ago

这个问题还是没解决,目前测还是有问题。关闭浏览器后没结束进程,超过180s后进程依然存在。 @liqiang-fit2cloud

比如我进入终端后,又执行了一次bash或者sh,然后关闭,这个时候第二次执行的sh不会结束