diff --git a/docs/seckill-analysis-20261019.md b/docs/seckill-analysis-20261019.md new file mode 100644 index 0000000..976d7ab --- /dev/null +++ b/docs/seckill-analysis-20261019.md @@ -0,0 +1,122 @@ +# 2026-10-19 虎牙秒杀实战日志深度分析报告 + +> **数据源**:`/Users/yml/Downloads/logs/10.19`(4 台机器,10 个实例日志) +> **秒杀目标**:`sid=2277`,`pid=13433`(怪诞乔克服装礼包) +> **开抢时间**:`2026-10-19 17:00:00.000` +> **分析时间**:`2026-10-19 17:20` + +--- + +## 一、核心战果速览 + +| 指标 | 统计数据 | 评价/对比昨日 (10.18) | +| :--- | :--- | :--- | +| **部署机器与实例** | 4 台机器(pc-1~pc-4),10 个运行实例 | 部署结构清晰,单实例 28~30 账号 | +| **参与抢购总账号数** | **262** 个唯一账号 | 规模较昨日扩大 | +| **最终成功抢中账号** | **257** 个账号 | 斩获海量订单 | +| **全局账号成功率** | **98.09%** (257 / 262) | **历史最高**(昨日大量误判) | +| **有效竞争成功率** | **98.85%** (257 / 260) | 剔除 2 个开局即余额不足的账号 | +| **会话/未绑定误判率** | **0** 次误杀 (`unbound=0, session_lost=0`) | **100% 根治**昨日会话假死误杀 | +| **7.5s~8.7s 回流反扑战果** | **146** 个账号在 7s~8.7s 绝杀抢中 | **占总成功数的 56.8%**!战略完全正确 | + +--- + +## 二、各机器与实例运行表现 + +| 机器 & 实例 | 账号数 | 成功账号数 | 成功率 | 本机时钟偏移 | RTT | 成功轮次分布 (Loop) | 备注 | +| :--- | :---: | :---: | :---: | :---: | :---: | :--- | :--- | +| **pc-1 / default** | 30 | 19 | 63.3% | -289ms | 81ms | L1:1, L3:1, L5:3, L6:2, L7:12 | 11个账号与pc-3重跑,在pc-3成功 | +| **pc-1 / instance-2** | 30 | 28 | 93.3% | -287ms | 72ms | L2:1, L5:10, L7:12, L8:5 | 1个积分不足,1个抢光 | +| **pc-1 / instance-3** | 29 | 28 | 96.6% | -289ms | 76ms | L5:9, L6:3, L7:13, L8:3 | 极佳稳态 | +| **pc-2 / default** | 28 | 28 | **100.0%** | -15ms | 57ms | L4:1, L5:10, L6:2, L7:11, L8:4 | **全员满贯**,时钟极准,RTT最低 | +| **pc-3 / default** | 30 | 11 | 36.7% | +265ms | 86ms | L1:1, L4:2, L5:1, L7:6, L8:1 | 19个账号在pc-1已抢中,回包货币不足 | +| **pc-3 / instance-2** | 30 | 26 | 86.7% | +260ms | 76ms | L5:9, L6:2, L7:14, L8:1 | 3个与其它实例重跑并在别处抢中 | +| **pc-3 / instance-3** | 30 | 30 | **100.0%** | +260ms | 77ms | L1:3, L4:1, L5:13, L6:1, L7:9, L8:3 | **全员满贯** | +| **pc-4 / default** | 30 | 28 | 93.3% | +67ms | 76ms | L5:6, L6:1, L7:18, L8:3 | 1个积分不足,1个在别处成功 | +| **pc-4 / instance-2** | 30 | 30 | **100.0%** | +63ms | 61ms | L1:1, L3:1, L4:1, L5:11, L7:13, L8:3 | **全员满贯** | +| **pc-4 / instance-3** | 30 | 29 | 96.7% | +63ms | 85ms | L4:1, L5:12, L6:1, L7:12, L8:3 | 仅1个抢光 | +| **汇总去重** | **262** | **257** | **98.09%** | - | - | - | 真实未中仅3个 | + +--- + +## 三、今日核心证据与重大发现 + +### 1. 证实「双峰库存释放」模型(9 秒反扑狂斩 146 个订单!) + +在昨日报告与优化路线中,我们推测虎牙系统存在「7~10秒回流释放 / 积压队列延迟开闸」,并据此在 v0.5.4 引入了紧凑快速超时(1.5s)与 7.5s~10.5s 黄金反扑策略。 + +今日实测秒级时间轴(服务端时间 `H:17:00:xx`)彻底坐实了这一机制: + +```text +时间轴 (服务端时间) 总请求数 成功数 (Success) 限流数 (TooFreq) 秒级成功率 +--------------------------------------------------------------------------------- +17:00:00 579 6 571 1.0% (首发拥堵激战) +17:00:01 301 3 294 1.0% (限流拦截) +17:00:02 270 6 264 2.2% (限流拦截) +17:00:03 94 0 87 0.0% (排队低谷) +17:00:04 185 83 102 44.9% ★【第一波爆发峰】 +17:00:05 179 8 160 4.5% (短暂回落) +17:00:06 19 5 14 26.3% (间歇蓄力) +17:00:07 162 120 34 74.1% ★★【第二波黄金峰】 +17:00:08 43 26 0 60.5% ★★【第二波黄金峰】 +17:00:20 之后 23 0 0 0.0% (残单售罄) +``` + +**结论与机制分析**: +1. **0~2 秒**:全网所有脚本与真实用户瞬间蜂拥打入,虎牙网关进行强力限流(`95%+ too_frequent`),只有 15 个极其幸运的包在此时成交; +2. **第 4 秒(Loop 5)**:服务端内部事务排队完成,第一批库存集中结算放行,**爆发 83 个成功**; +3. **第 7~8 秒(Loop 7 & Loop 8)**:超时释放库存或系统分批次二次上架,**爆发 146 个成功**,成功率高达 **74.1%**! +4. **昨晚所做「不放弃 7.5s~10.5s 窗口」的算法决策价值连城,若在 5 秒停机,将直接丢掉超过一半(56.8%)的订单!** + +--- + +### 2. 「账号未绑定」剥离优化效果极其显著(0 误杀) + +- **昨日 (10.18) 现象**:大量账号在第 1 轮被虎牙返回 `账号未绑定!`,旧代码误判为登录态失效 (`session_lost`) 并累计判死,直接退出后续轮次; +- **今日 (10.19) 表现**: + - 代码引入 `CategoryRoleUnbound`,解绑会话失效; + - 遇到该提示仅作普通重试,不计入连续死亡阈值; + - 今日日志中 `session_lost=0`,**0 个账号因假死退赛**!所有账号均顽强战斗到第 7、8 轮并成功吃到回流红利。 + +--- + +### 3. 未成功账号归因透视(仅 3 个真正未中) + +全局 262 个唯一账号中,未在任何一台机器显示抢中成功的仅 **5 个**: + +1. **`1199660624039`**:在 Loop 7 提示 `not_enough(兑换货币不足)`,账号积分未达到 4800 分,非抢购问题; +2. **`1199668667559`**:在 Loop 7 提示 `not_enough(兑换货币不足)`,账号积分不足; +3. **`1199668617159`**:坚持到 Loop 15,最终提示 `sold_out(奖品已抢光)`; +4. **`1199668633523`**:坚持到 Loop 15,最终提示 `sold_out(奖品已抢光)`; +5. **`1199668674368`**:坚持到 Loop 15,最终提示 `sold_out(奖品已抢光)`。 + +真正的未中账号仅 **3 个**,整体有效胜率达到 **98.85%**。 + +--- + +### 4. 跨机重跑与“兑换货币不足”现象释疑 + +在 `pc-1/default` 与 `pc-3/default` 中,发现了 34 个账号在两台机器上同时被配置并启动。 + +- **实况回放**: + 例如账号 `1199668699137`: + - `pc-1 (17:00:00.258)`:Loop 1 抢购成功,扣除积分,剩余积分变为 0; + - `pc-3 (17:00:00.677)`:Loop 2 也向服务器发出了兑换请求,服务端返回:`兑换货币不足,请参与活动获得兑换货币`; + - `pc-3` 界面提示“积分不足”,但实际该账号**已经在 `pc-1` 上成功拿到商品**。 +- **操作建议**:各机器分配账号时尽量避免重叠导入;若有多开或容灾重跑,在对账时直接认准「任一实例成功或积分发生扣减」即可。 + +--- + +## 四、后续进一步精进点 + +1. **第 5~7 秒重试间隔微调(蓄力第二峰)**: + - 看到 17:00:06 的请求数只有 19 个,很多账号由于前序重试退避,正好在第 6 秒处于 sleep 间隙; + - 可以在 5.5s~6.5s 增加一次轻量探测,确保账号在进入 17:00:07 黄金秒时处于刚发起请求的就绪态,进一步将第二峰的响应往前压 200~300ms。 +2. **跨实例去重告警(可选体验优化)**: + - 在启动任务时,若支持跨机器集中管理或配置文件导入去重,可提醒操作员“存在重复分配的账号”。 +3. **角色名称与战报自动对账**: + - 今日刚上线的 `roles.json`(v0.5.5)可以让用户在下一次抢购日志与界面上,直观看到各个成功账号对应的游戏昵称,核对订单更轻松。 + +--- + +**总结**:今日战役是一次教科书级别的压倒性胜利。v0.5.4 的三大优化(1.5s 紧凑熔断、未绑定剥离、7.5s~10.5s 回流反扑)全部得到完美印证,257 单抢中,胜率 98.85%,系统稳态表现近乎无可挑剔!