为什么记录条件比记录速度更重要
大文件下载测试如果只留下快或慢的印象,下一次换了运行模式或出站接口就无法对照。全局配置里会改变连接如何建立、空闲连接如何维持、多个解析地址如何取舍的项目包括运行模式、是否接受 IPv6 流量、是否启用 TCP 并发、Keep Alive 间隔与空闲时间、是否禁用 Keep Alive、出站接口、路由标记、统一延迟开关以及日志级别。内核下载外部资源时还会用到全局 UA 与 ETag 支持。本题适用条件是:测试流量经过 Clash 内核,并且目标是让另一次测试能够按同一组条件重做。把不同模式下的结果直接比较,不属于可复现记录。
不要把统一延迟当作下载速度来记录。文档说明开启后会计算 RTT,用来消除连接握手等带来的不同类型节点的延迟差异,它服务的是延迟口径,不是文件吞吐。也不要把外部控制器监听地址或外部用户界面目录当成大文件测试对象,除非本次就是在观察控制面资源拉取。进程匹配模式会决定内核是否识别进程;文档建议在路由器上关闭匹配,电脑端若中途改了该模式,进规则的流量集合会变,条件就不算固定。
一份可复现记录应写哪些内容
测试开始前把下列实际值抄在同一条记录中。运行模式写明是规则匹配、全局代理还是全局直连,文档指出此项有默认值且默认为规则模式。是否允许 IPv6 流量。TCP 并发是否打开:打开后会对解析得到的全部 IP 发起连接并采用第一个成功的连接。Keep Alive 包间隔、最大空闲时间、是否禁用;文档提到修改这些项与减少移动设备耗电有关,在 Android 上禁用项会被强制为真,电脑端仍以当前文件中的值为准。出站接口名称。若在 Linux 上设置了出站路由标记,一并写下。日志级别必须固定,否则事后无法用同一详细程度解释失败。
与文件从何处来有关的项也要写:自定义外部资源下载 UA,默认是 clash.meta;ETag 支持默认打开,可能让第二次下载并未真正重新拉取。测试窗口如果可能碰到 GEO 数据更新,还要记录是否自动更新、更新间隔小时数、GEOIP 数据模式以及 GEO 文件加载模式。配置档案里是否储存策略组选择、是否储存 fakeip 映射,会影响下次启动是否沿用同一选择和同一映射地址,必须写进条件。进程匹配模式属于 always、strict 还是 off 也要注明。
每一次还要记下开始与结束的本地时间、文件的稳定标识、当时实际使用的出站路径。出站路径只写能从配置或控制 API 读到的值,不要编造图形界面上的名称。若允许局域网访问代理端口,还要注明测试期间是否有其他设备共用该端口,避免把别人的流量算进自己的条件。绑定地址若不是全部地址,也要写下实际绑定的单个 IPv4 或单个 IPv6,否则换一台网卡再测就会对不上。
怎样判断已可复现以及失败后做什么
判断依据是:两次测试之间,上列字段只要有一项没记下来或发生了变化,结果就不可直接比较。TCP 并发从关闭改为打开后,成功连接可能来自不同 IP,差异不能解释成同一路径。运行模式从规则改为全局后,规则不再决定出站。ETag 打开时第二次可能命中未改动的外部资源。日志一次只报严重错误、一次输出调试信息,也不能用同一标准解释中断。统一延迟开关不同时,不应拿延迟数字去旁证下载。
若严格按照记录仍不能复现,只把日志级别提高到尽可能详细再做一次,其余字段保持不动。核对本机绑定地址与是否允许局域网,避免其他设备在同一代理端口上抢占。确认比较期间没有自动更新 GEO 文件。全局配置不提供下载速度字段,失败时不要用 RTT 或统一延迟代替吞吐结论,回到同一组已记录条件重做。若发现策略组选择被储存并在启动时恢复,把该项明确写入条件后再比。