1Panel-dev / webkubectl

Run kubectl command in Web Browser.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

Lionelpang opened this issue · comments

在使用当前容器后,发现非法关闭浏览器中的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。

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

Fixed in release v2.2.

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

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

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