browser-harness:补「僵死态」的识别与处置(用户选 B)
用户令 B:⛔ 不动保活脚本,只把僵死态的识别写进常驻实例那节的排查里。 - 位置:「🔴 浏览器要由常驻后台任务开着」那节末尾(讲的就是那个常驻实例的健康) - 僵死态定义:**端口不应答、进程还活着**;判据**两条一起看**(netstat 无 LISTENING + tasklist 仍有那个 pid) - 处置:**只能重启实例**,⛔ 不在原地反复重试连接 - 记明**保活脚本兜不住它**:`bh_keep_chrome.py` 那类只做 socket 探端口,对僵死态既不判也不重启 (实测 2026-10-09 `06:56:11 port not answering (pid alive=True)` → `07:06:49` 进程才退出) 背景:2026-10-09 早上实例被反复开标签堆到僵死,用户手动关掉全部会话;同轮已加严标签纪律(见 `b7ba89d`)。
This commit is contained in:
1 parent
b7ba89dadc
commit
4ae1d0e79e
1 file changed
+6
@@ -67,6 +67,12 @@ Direct browser control via CDP. For task-specific edits, use `agent-workspace/ag
|
||||
|
||||
⇒ 做法:先起一个**常驻任务**把浏览器开着(守端口,掉了就写日志),之后每次操作**只连不起**。
|
||||
⛔ 别让每次调用各自起一遍浏览器 —— 父进程一退全没,而且多个实例会抢同一个 profile。
|
||||
- 🔴 **僵死态要会认**(2026-10-09 实测):共享实例被堆爆后会进入「**端口不应答、进程还活着**」的僵死态 ——
|
||||
连接探不通,但 `tasklist` 里那个 chrome 进程仍在。⛔ **别把「端口在」当成「浏览器可用」,也别拿「进程还在」当没事**。
|
||||
判据(**两条一起看**):① `netstat -ano | grep 127.0.0.1:9223` **无 LISTENING**;② `tasklist | grep -i chrome` **仍有那个 pid**。
|
||||
⇒ 处置:**只能重启实例**(关掉残留 chrome,再按第 2 节重起),⛔ 不要在原地反复重试连接 —— 那只会白等。
|
||||
⚠️ **保活脚本兜不住它**:`bh_keep_chrome.py` 那类只做 `socket.create_connection` 探端口,对僵死态既不判、也不重启,
|
||||
实测它连续十几分钟只在写 `port 9223 not answering (pid alive=True)`(2026-10-09 `06:56:11` → `07:06:49` 进程才退出)。
|
||||
|
||||
### 2. 起独立实例(端口 9223)
|
||||
|
||||
|
||||
Reference in new issue
Block a user