策略决定异常时的行为
超时与重试策略决定通信异常时系统如何反应。设计要点是区分三类情况:链路完全不通(重试无用,应快速失败并标记设备离线)、设备暂时繁忙(适合短间隔重试)、偶发校验错误(重发一次即可)。策略不当有两种后果:超时过长会让一个离线设备拖垮整个采集周期,重试过密会让本就繁忙的设备进一步拥塞。
参数与依据
| 响应超时 | 依据链路速率、帧长与设备处理时间估算 |
|---|---|
| 重试次数 | 常见为 2 至 3 次,需与设备处理能力匹配 |
| 重试间隔 | 留出设备恢复时间,避免连续冲击 |
| 失败判定 | 连续失败达到次数阈值后标记设备离线 |
| 恢复策略 | 离线设备的探测间隔应放宽,避免持续无效请求 |
| 数据标记 | 失败时数据质量置为无效或陈旧,而不是沿用旧值 |
情况与对策
| 情况 | 特征 | 对策 |
|---|---|---|
| 链路断开或设备断电 | 全部请求超时 | 快速失败并标记离线,放宽探测间隔 |
| 设备暂时繁忙 | 返回设备忙或确认类响应 | 短间隔重试并降低轮询频率 |
| 偶发校验错误 | 错误率低且随机 | 重发一次即可,不必提高重试次数 |
| 地址或参数错误 | 持续返回异常码 | 不重试,直接报配置错误 |
| 网关后端离线 | 网关返回后端无响应 | 检查串口侧链路与设备状态 |
设计建议
- 先估算合理超时:按链路上最长帧的传输时间加上设备处理余量
- 为不同重要性的点表设置不同失败处理:关键点立即告警,辅助点可容忍
- 把超时与重试统计纳入监控,作为链路健康度指标
- 离线设备降低探测频率,避免一个故障设备长期占用链路
- 失败时明确数据质量状态,避免上位机沿用旧值做判断
超时值过短是常见误配:短于设备实际响应时间时会持续出现偶发超时,而设备完全正常。调整前应先测量真实的响应时间分布,而不是凭经验设定。
重试次数与轮询频率同时升高会让链路陷入恶性循环:请求越多、超时越多、重试越多。出现大面积超时时应先降低总请求量,再逐项排查设备与链路。