用户确认服务配额15 RPM;本次没有调用Provider或外部接口再次探测额度。正式准入providers-before.json记录Gateway Jev为rate_rpm=10、max_inflight=2、timeout=60;submission.json五条Jev配置的provider_snapshot均rate_rpm=10。Native properties无RPM项,Native HTTP先到本地Gateway,因此限速不在Native。
当前平台lab_platform/provider.py:150–193的_acquire按provider='jev'查询全局last_sent,pending未发送租约互斥,并检查last_sent+60/rate_rpm及全局活动租约数;request:222–242轮询准入,每次sleep0.05秒。不是滑动窗口计数器,是全provider固定最短发送间隔。当前实现副本与hash:provider-current.py、identity。平台没有可用的历史Git提交/逐字节部署快照,不把当前文件自动当作冻结历史部署代码;运行事实由冻结配置与Gateway发送时间支持。
为什么数值选择10而非15:能证实配置被显式设为10,不能从已找到证据确定原始选择者的配额判断/保守理由。不能把10写成Provider强制上限,亦不能仅依据“可能保守”给出确定原因。
正式本轮jev_serial_scheduler.py:1–8, 50–86一次只提交一个Jev正式Run,待terminal再提交下一个。这是本批次外部串行提交策略;Gateway租约配置仍为2,不是“Native全局只能一个Jev请求”的硬编码。设备锁/同App设备绑定与Provider限流是另一层约束。
以只读SQLite、限定字段扫描本轮Jev起止时间及前60秒,共691条Gateway调用:686正式HTTP、5条同Run未匹配正式Native fingerprint的准入调用;没有其他Run占用这个窗口的Gateway额度。最大同时上游处理1,最短全局send间隔6.023767秒,中位数6.068512秒,任意半开60秒窗口最多10次。global-jev-calls.json、rate-checks.json。不读取凭据;平台外直接用同key发送的请求及更早未结束租约不能由本快照完全排除,标UNKNOWN。
Scarlet正式send-gap P50=6.063120秒、最短6.028002;Activity P50=6.067621、最短6.023767。请求间隔受Native工作间隙影响,不能每个gap都算成主动sleep6秒。实际上游处理在此窗口最高并发1,现有大量排队与rate pacing一致,不能逐毫秒把全部Gateway残差归成限速sleep。
14 RPM给出60/14=4.285714秒的最小发送间隔。如果15 RPM为同key按请求数配额,且所有共享发送都经过同一个基于实际send时刻的限速器,连续半开60秒最多14次(包含端点的保守窗口至多15),留有余量。当前数据库共享多实例准入设计能避免未发送租约之间的准入空隙;是否与远端计费窗口、token额度和其它key流量完全一致仍未知,不能保证永无429。提高并发、绕过Gateway或未统一计数的重试都可能消耗余量。这里只审计,未修改生产配置。
A. 逐请求固定前序实际发送时刻。 按全局691条实际send排序,保留每条的归档arrival、前一条实际send和未解释的dispatch残差;减少量=max(arrival, prev_send+6)−max(arrival, prev_send+60/14)。它隔离单次间隔参数的作用,不把残差自动算成限速;每条减少量≤1.714286秒。Scarlet443.938秒,Activity236.834秒。不能把各条假设同时发生解释为可实现完整运行轨迹。
B. 全局固定到达时间的理想队列重放。 691条共同FCFS,固定上游服务时长,最多2 active,分别间隔6和4.285714秒,后续send使用模拟前序send。没有调用Provider,不模拟APE因回复早而改变下一次到达。由于轮询/identity/DB等未分解,10 RPM基准也不能完全复现原队列,故仅报告“模型内10→14差”,不把观测−理想14全额算成收益。
| App | 正式HTTP | 实测队列秒 | 逐请求固定前序send估算减少秒 | 理想队列10→14减少秒 | 理想10队列秒 | 理想14队列秒 |
|---|---|---|---|---|---|---|
| activitydiary | 243 | 410.307 | 236.834 | 320.323 | 357.427 | 37.104 |
| wikipedia | 25 | 3.115 | 1.714 | 1.714 | 2.263 | 0.549 |
| scarletnotes | 318 | 900.873 | 443.938 | 727.030 | 785.260 | 58.230 |
| omninotes | 80 | 55.344 | 39.288 | 41.642 | 50.464 | 8.822 |
| odkcollect | 20 | 47.512 | 22.333 | 37.246 | 44.098 | 6.852 |
理想10 RPM全局与观测queue残差P50=0.151秒、P95=0.810秒、max1.555秒;Scarlet实测queue900.873而理想10只有785.260,差115.613秒。这是有实质偏差的情景模型,727.030秒是其内部10→14差,不是已证实能省727秒;A与B也不是实际效果上下界。Activity内部差320.323秒同理。
完整每调用重放和5条准入调用保留在rate-limit-simulation.csv。所有估算都不换算成动作数、方法数或覆盖率收益;软timeout缩短还会改变到达/取消/再提交,应另行验证,不能与排队估算简单相加。