FTT:任何复杂的波动,都可以拆解成很多不同频率的正弦波叠加。 FTT将时间域转化为频率域
时间 带宽
0秒 5G
10秒 8G
20秒 10G
频率 能量 0.2 Hz 很小 0.1 Hz 很小 0.0167 Hz 很大 ⭐ 0.001 Hz 一般
自相关分析:把一段数据向后移动,看它和自己要多像
你的分析结果其实非常有价值,而且恰恰说明自相关仍然适合,只是你不能用“找完全重复周期”的思路去理解它。对于网络带宽这种数据,FFT 和自相关通常会给出不同尺度的信息,它们是互补的。
我先说结论:
你的数据不像一个稳定的正弦波,而更像“短周期 burst + 长周期业务模式 + 随机噪声”的混合信号。FFT 告诉你短时间波动尺度在 20
60 秒,自相关告诉你更长时间(315 分钟)存在趋势持续性。用于告警,应该优先考虑自相关给出的分钟级窗口,而不是直接使用 FFT 的 20~30 秒窗口。
1. 自相关并不要求数据一模一样
很多人会误解自相关:
原始:
1 2 3 1 2 3 1 2 3
移动 3 格:
1 2 3 1 2 3 1 2 3
1 2 3 1 2 3
完全重合,所以相关性 = 1。
但现实网络流量不会这样。
比如:
第一分钟:
100 110 120 90 100 105
第二分钟:
102 108 118 95 98 103
虽然数值不同,但走势很像:
-
高的时候仍然高
-
低的时候仍然低
自相关仍然会很高。
例如:
相关系数:
0.8 -> 非常强
0.6 -> 明显相关
0.3 -> 弱相关
0 -> 没关系
你这里:
lag 21 = 0.6193
其实非常明显。
意味着:
间隔 210 秒(3.5 分钟)的数据,仍然保留了较强的相似性。
2. 为什么 FFT 给的是 2060 秒,而自相关是 315 分钟?
这是一个非常典型的现象。
你的 FFT:
34.81 秒 幅值 5847
21.04 秒 幅值 2098
23.50 秒 幅值 2086
59.98 秒 幅值 1229
说明:
带宽
^
|
| /\ /\ /\ /\
|__/ V V \_/ \____
|
+------------------ 时间
20~60秒抖动
这些很可能是:
-
TCP 窗口调整
-
微突发流量
-
应用批量发送
-
采样误差
它们造成“尖刺”。
但是你的自相关:
3.5分钟 0.619
7分钟 0.560
13分钟 0.576
16分钟 0.563
说明:
大流量阶段
__________
/ \
______/ \_______
低流量 高流量
也就是说:
业务负载在几分钟尺度上是持续的。
例如:
-
一个市场数据订阅高峰持续 5 分钟;
-
一个批量同步任务持续 10 分钟;
-
一个交易策略在一段时间内持续大量发送订单。
3. 对告警来说,哪个更重要?
这里要回到你的目标。
你的目标不是:
研究带宽里面有什么频率。
而是:
如何避免误报,同时及时发现真正拥塞。
所以窗口应该跟拥塞持续时间匹配。
如果你选 FFT 的 3 点窗口
你的采样:
10 秒一次
FFT 主要周期:
35 秒
≈ 3~4 个点
那么滑动平均:
窗口 = 3
结果:
原始:
100 20 110 30 120
3点平均:
76 53 86
仍然非常敏感。
它只能去掉一点点抖动。
对于告警意义不大。
如果选自相关 21 点
21 × 10 秒 = 210 秒
滑动窗口:
3.5 分钟
效果:
短 burst:
^
|
_____/ \_______
平均后:
_____________
但是:
持续5分钟高流量:
______
_______/ \_______
平均后:
______
______/ \______
它能够保留真正需要关注的拥塞。
这正符合网络告警需求。
4. 我认为你的推荐窗口可以调整
你的程序输出:
短期: 6~10点 (1~2分钟)
中期: 20~30点 (3~5分钟)
长期: 50~100点 (8~17分钟)
我认为这个建议是合理的,但还可以进一步解释用途。
| 窗口 | 时间 | 用途 | 推荐程度 |
|---|---|---|---|
| 3~5点 | 30~50秒 | 观察 burst | ★★ |
| 6~10点 | 1~2分钟 | 快速拥塞告警 | ★★★★ |
| 20~30点 | 3~5分钟 | 稳定带宽告警 | ★★★★★ |
| 50~100点 | 8~17分钟 | 容量规划 | ★★★★ |
5. 如果我是你,我会怎么设计生产告警
你的环境是交换机接口带宽监控(10 秒采样),我不会只用一个窗口。
我会维护三条曲线:
实时流量(无平均)
raw
用于发现:
-
瞬间打满
-
微突发
例如:
max 30秒 > 95%
报警
短期平均
6~12 点
= 1~2分钟
用于:
avg(1分钟) > 85%
warning
稳定拥塞
20~30 点
= 3~5分钟
用于:
avg(5分钟) > 70%~80%
critical
6. 其实你的结果透露了一个更深的信息
你得到:
FFT: 20~60 秒
自相关: 3~15 分钟
这说明你的流量具有多时间尺度(multi-scale behavior)。
这在网络流量中非常常见。
所以最专业的做法不是问:
“滑动窗口到底应该是几?”
而是:
“不同时间尺度的异常,我想捕获哪一种?”
对于交易网络、交换机端口监控,我认为你的最终设计应该是多窗口告警系统,而不是寻找一个“最佳窗口”。
从你这组数据来看,如果只能选一个窗口,我会选 2030 个点(35 分钟),而不是 FFT 给出的 3~6 个点,因为它更符合“持续高利用率才值得告警”的运维目标。