Files
ykxmz/_build/rp_pc_long.tsv
T
xmz7891 cc5891e6d0 修局域网/中转对比基准:它自己有两个 bug,害产品背了黑锅
这个基准一直是红的(中转那条路报「连接阶段失败: timed out」),
而且报告里写着"这是中转链路的产品 bug"。**查下来不是产品的问题。**

== bug 1:两条路用了同一个配对码 ==

基准为了排除互相干扰,给两条路**各起一台全新被控端**(设计是对的),
但两台都用了写死的 code="246813"。

中转有「一个配对码只属于一台设备」的规则:
  第 1 台(跑局域网)注册成功
    -> stop_agent 杀掉进程,但**中转还以为它在线**(last_seen 没过期)
  第 2 台(跑中转)用同一个码注册 -> **被拒**
     中转日志:配对码 246813 已被 ... 占用,拒绝 ...
  而 start_agent 只检查"有没有设备在线" —— 第 1 台僵尸还挂着,
  于是**以为新的一台登记成功了**
  -> 没有任何进程在回包 -> 超时

对照实验(新增 _build/verify_code_reuse.py):
  场景 A 同一个码   -> **不通**
  场景 B 各用不同码 -> 通

修法:两条路各用不同码;start_agent 的判据从"有没有在线设备"
      改成"有没有**配对码正好是这一台要用的码**的在线设备"。

== bug 2:attach 用的还是旧码(我第一版补丁也漏了这处)==

relay_connect() 里 `client.attach(code)` 用的还是局域网那个码 ——
attach 到一台已经死掉、但中转以为在线的设备上,pair 自然没人回。

修成 `attach(relay_code)`。

== 顺带更新一段过时注释 ==

原文写着「当前版本经中转只稳定支撑前 1~2 次交互……这是中转链路的
产品 bug」,并据此把中转的轮数调小、超时调短。

那个 bug **已经修好了**(根因:一条 HTTP/1.1 连接被长轮询和发命令
两个线程同时用,撞状态机抛 CannotSendRequest("Idle"),
异常冒到 _client_loop 外面把 client-relay 线程打死)。
注释不更新会误导后人以为产品还有这个问题。

== 修好之后的实测(本地中转,30 次/路)==

    局域网  握手 16ms  成功 30/30 (100%)  中位  0ms  P90  0ms  最大  1ms
    中转    握手 46ms  成功 30/30 (100%)  中位 15ms  P90 29ms  最大 32ms

这是本地中转,量的是**协议本身的开销**(长轮询往返 vs 直连 TCP);
真实跨网络那条腿的 1.0~1.5 秒来自隧道和 4G,是另一回事。

结论:局域网确实是"毫秒级、不耗流量"的那条根本路径 ——
中位 0ms vs 15ms,而且不走任何外网。

踩坑记录:这两处都是"看起来像产品 bug、实际是测试自己的 bug"。
先怀疑测量工具,比先怀疑产品更省时间 ——
上一次(管理页缓存头)也是我拿 curl -I 测 GET 白查了半天。
2026-10-07 18:20:57 +08:00

4.5 KiB

1timecodems
22026-10-07 17:29:202001150
32026-10-07 17:29:362001404
42026-10-07 17:29:522001319
52026-10-07 17:30:092001421
62026-10-07 17:30:252001503
72026-10-07 17:30:412001125
82026-10-07 17:30:582001136
92026-10-07 17:31:142001039
102026-10-07 17:31:302001350
112026-10-07 17:31:462001418
122026-10-07 17:32:032001752
132026-10-07 17:32:202001383
142026-10-07 17:32:362001316
152026-10-07 17:32:522001347
162026-10-07 17:33:092001450
172026-10-07 17:33:252001393
182026-10-07 17:33:412001019
192026-10-07 17:33:572001159
202026-10-07 17:34:132001132
212026-10-07 17:34:302001152
222026-10-07 17:34:462001113
232026-10-07 17:35:022001488
242026-10-07 17:35:182001167
252026-10-07 17:35:342001174
262026-10-07 17:35:512001429
272026-10-07 17:36:072001337
282026-10-07 17:36:242001305
292026-10-07 17:36:39200878
302026-10-07 17:36:55200850
312026-10-07 17:37:11200813
322026-10-07 17:37:282001854
332026-10-07 17:37:442001172
342026-10-07 17:38:00200837
352026-10-07 17:38:162001050
362026-10-07 17:38:32200876
372026-10-07 17:38:48200911
382026-10-07 17:39:052001850
392026-10-07 17:39:21200953
402026-10-07 17:39:36200871
412026-10-07 17:39:52200848
422026-10-07 17:40:08200845
432026-10-07 17:40:4620022347
442026-10-07 17:41:01200723
452026-10-07 17:41:3920022449
462026-10-07 17:41:552001748
472026-10-07 17:42:3220022048
482026-10-07 17:43:0320015949
492026-10-07 17:43:19200881
502026-10-07 17:43:35200929
512026-10-07 17:43:51200858
522026-10-07 17:44:082001490
532026-10-07 17:44:242001351
542026-10-07 17:44:402001125
552026-10-07 17:44:562001030
562026-10-07 17:45:122001285
572026-10-07 17:45:282001101
582026-10-07 17:45:452001327
592026-10-07 17:46:012001540
602026-10-07 17:46:182001340
612026-10-07 17:46:352002030
622026-10-07 17:46:512001050
632026-10-07 17:47:072001079
642026-10-07 17:47:232001126
652026-10-07 17:47:39200977
662026-10-07 17:47:552001414
672026-10-07 17:48:122001145
682026-10-07 17:48:282001311
692026-10-07 17:48:442001292
702026-10-07 17:49:012001383
712026-10-07 17:49:172001013
722026-10-07 17:49:332001378
732026-10-07 17:49:492001373
742026-10-07 17:50:052001013
752026-10-07 17:50:212001168
762026-10-07 17:50:382001238
772026-10-07 17:50:542001140
782026-10-07 17:51:102001281
792026-10-07 17:51:262001131
802026-10-07 17:52:0420022346
812026-10-07 17:52:4120022329
822026-10-07 17:53:042007874
832026-10-07 17:53:202001221
842026-10-07 17:53:36200863
852026-10-07 17:53:532001721
862026-10-07 17:54:08200844
872026-10-07 17:54:24200775
882026-10-07 17:54:40200830
892026-10-07 17:54:56200849
902026-10-07 17:55:122001329
912026-10-07 17:55:28200836
922026-10-07 17:55:44200779
932026-10-07 17:56:00200884
942026-10-07 17:56:57042093
952026-10-07 17:57:13502674
962026-10-07 17:57:28200756
972026-10-07 17:57:44200700
982026-10-07 17:58:00200831
992026-10-07 17:58:162001551
1002026-10-07 17:58:57025818
1012026-10-07 17:59:13200794
1022026-10-07 17:59:29200880
1032026-10-07 17:59:45200792
1042026-10-07 18:00:022001894
1052026-10-07 18:00:3920022561
1062026-10-07 18:01:1720022565
1072026-10-07 18:01:5420022281
1082026-10-07 18:02:3120022183
1092026-10-07 18:03:0220016014
1102026-10-07 18:03:18200890
1112026-10-07 18:03:34200805
1122026-10-07 18:03:50200844
1132026-10-07 18:04:06200851
1142026-10-07 18:04:21200688
1152026-10-07 18:04:37200920
1162026-10-07 18:04:53200908
1172026-10-07 18:05:09200841
1182026-10-07 18:05:25200896
1192026-10-07 18:05:412001008
1202026-10-07 18:05:56200654
1212026-10-07 18:06:12200829
1222026-10-07 18:06:28200777
1232026-10-07 18:06:44200866
1242026-10-07 18:07:002001003
1252026-10-07 18:07:16200815
1262026-10-07 18:07:32200748
1272026-10-07 18:07:47200802
1282026-10-07 18:08:042001272
1292026-10-07 18:08:202001260
1302026-10-07 18:08:362001009
1312026-10-07 18:08:522001104
1322026-10-07 18:09:33026128
1332026-10-07 18:09:502001393
1342026-10-07 18:10:062001104
1352026-10-07 18:10:222001328
1362026-10-07 18:10:38200980
1372026-10-07 18:10:542001109
1382026-10-07 18:11:112001513
1392026-10-07 18:11:272001417
1402026-10-07 18:11:432001351
1412026-10-07 18:12:002001493
1422026-10-07 18:12:162001078
1432026-10-07 18:12:332002194
1442026-10-07 18:12:492001179
1452026-10-07 18:13:062001443
1462026-10-07 18:13:222001180
1472026-10-07 18:13:382001307
1482026-10-07 18:13:542001166
1492026-10-07 18:14:102001126
1502026-10-07 18:14:272001385
1512026-10-07 18:14:432001401
1522026-10-07 18:14:592001089
1532026-10-07 18:15:15200987
1542026-10-07 18:15:31200999