交易系统被攻击导致行情延迟时,正确的应对思路是:先切断攻击流量保住核心行情链路,再用旁路分析定位异常,最后用隔离和降级恢复服务。 延迟不全是攻击的错,但攻击一定会让延迟放大到不可用,下面按实战顺序拆解每一步做什么、怎么做。
交易系统被攻击行情延迟怎么办:先识别攻击与拥堵的区别
很多团队遇到延迟第一反应是加服务器,结果越加越卡,攻击造成的延迟和正常拥堵有本质区别,判断错了就白忙活。
正常拥堵的特征是单品种延迟上升,但系统整体响应平稳,数据库连接数稳定,攻击延迟则不同:延迟曲线呈波浪状脉冲,同时伴随连接数暴涨、带宽占用飙升、报错日志里出现大量异常请求,行业共识认为,攻击流量多数情况下会瞄准行情网关或Web接口,因为这两个节点最容易被并发打穿。
具体识别方法分三步:
- 看延迟分布:正常延迟是平滑上升,攻击延迟会突然跳变到原来的几十倍,然后回落,再跳变,用监控工具抓取最近5分钟的延迟曲线,出现连续锯齿形基本可以判定为攻击。
- 看连接来源:执行
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20,如果前10个IP来源占比超过全部连接的七成,且地域分散在非交易所机房段,那大概率是攻击,用tcpdump -i eth0 port 8080 -w /tmp/attack.pcap抓包,重点查看请求头里的User-Agent是否批量重复,或者请求的是同一个行情码表参数,正常交易软件不会有高度一致的请求特征。
如果确认是攻击,别急着封IP,先做流量隔离,因为攻击IP往往大量伪随机,你封一个它换一个,浪费时间。
行情延迟如何应对:紧急处置流程与路径
攻击期间的每一秒都在亏钱,建议按以下顺序操作,不要跳步。
第一步:切换备用行情链路
大多数券商和量化团队都有主备两条行情源,攻击发生时,

立即将行情订阅源切换到备用线路,同时关闭主线路的对外广播端口,这一步能快速甩掉大部分攻击流量,但要注意备用链路的带宽冗余是否足够,建议提前和交易所或行情服务商确认过备用线路的承载上限。
操作路径:在行情网关配置文件中修改data.source指向备用地址,执行systemctl restart marketgw或对应服务名,切换期间会断流几秒,但比持续延迟的损失小得多。
第二步:在防火墙层做粗粒度限流
不要尝试精确匹配攻击特征,先保住正常请求,在入口防火墙执行限流规则,
iptables -A INPUT -p tcp --dport 8080 -m conntrack --ctstate NEW -m limit --limit 100/s -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -m conntrack --ctstate NEW -j DROP
这条规则会限制新连接创建速度为每秒100个,超出部分直接丢弃,正常交易用户复用现有连接不受影响,而攻击方需要不断创建新连接,这种方式能砍掉大部分攻击压力。注意限流阈值要基于平时峰值连接数的1.5倍,设太低会把正常用户挡在外面。
第三步:对行情服务做降级处理
如果延迟仍然超过可容忍阈值,需要做功能降级,比如将行情推送频率从每100毫秒一次调整为500毫秒,砍掉批量订阅接口,只保留单品种查询,或者将实时行情改为快照加增量模式,减少下行带宽占用。
降级方案要提前写好配置,临时改容易出错,业内专家指出,多数交易系统延迟崩溃都是因为降级时误改了核心参数,导致行情符号映射错乱。
第四步:启动旁路分析,保留攻击证据
在备用链路上跑ngrep -d eth1 -w '.(com|net|org)'抓取完整请求包,或者用Wireshark按时间戳筛选,攻击结束后,这些PCAP文件是追溯溯源和事后优化的重要依据,同时记录从攻击开始到恢复的完整时间线,包括每一步操作的实际时间,用于复盘。

交易系统延迟优化方案:从架构上减少被攻击的暴露面
攻击能得逞,根源在于系统存在太多可被直接访问的入口,延迟优化不只是调参,更是收口。
将行情服务与交易服务物理隔离
这是一个老生常谈但很多小团队还在犯的错:行情和交易共用一个网关,攻击者只要打行情端口,交易报文也跟着卡。正确做法是两组独立服务,跑在不同网段、不同机器上,中间用消息队列通信。 即使行情被攻击,交易报单通道依然能正常报撤单。
部署专门的行情代理缓存层
在客户端和后端行情源之间加一个代理层,代理层本身缓存最近N条行情快照,当后端遭受攻击或链路拥堵时,代理层优先推送缓存数据,保证显示延迟不失控,这个方案在量化圈叫"降级显示",虽然数据不是最新,但用户感知上比黑屏或卡顿要好得多。
缓存层部署建议:
- 使用Redis或内存队列,TTL设置为3-5秒
- 缓存键名用
symbol:price:latest格式 - 代理层每500毫秒从后端拉取一次全量快照,增量推送用单独通道
采用多级限流和熔断机制
在网关、接入层、核心服务三个位置分别配置不同的限流阈值,网关层限制每IP连接数,接入层限制每用户订阅数,核心服务限制总带宽,熔断机制设置两个阈值:延迟超过X毫秒时切断非核心订阅,超过Y毫秒时释放所有非交易类连接,这里的X和Y需要根据你实际系统的SLA来定,一般X为正常延迟的5倍,Y为X的2倍。
防攻击与延迟监控的日常演练清单
没有经过演练的应急流程都是纸上谈兵,建议每季度做一次攻防演练,重点验证以下项目:
- 模拟攻击流量打到行情网关,观察延迟曲线在几分钟内触发告警
- 执行主备切换脚本,确认从发出指令到切换完成的时间在允许范围
-

测试限流规则生效后,正常交易用户能否继续买卖(用测试账号跑真实报单流程)
- 检查备用行情源是否与主源存在数据偏差(常见问题是备用源快照时间戳不统一)
- 验证降级模式下,自选股列表、K线请求、成交回报这三类功能是否正常
演练完要形成报告,明确每次演练暴露的问题、负责人、修复截止时间,大部分情况下,攻击导致的延迟并非不可解,而是应急流程太慢。
行情延迟的应对核心不是对抗攻击,而是缩短从攻击发生到降级生效的时间窗,先隔离流量、再切换线路、最后降级保命,这个顺序不能反,平时把防护命令、切换脚本、降级配置全部做成自动化,按钮化,攻击发生时能一键执行,延迟对交易的影响就能控制在可接受范围内。
Q&A:交易系统被攻击导致行情延迟的常见问题
攻击导致行情延迟后,需要立即关闭交易系统吗?
不需要,关闭交易系统意味着所有客户无法下单,损失远超延迟本身,应该先隔离行情链路,保留交易通道,如果攻击波及交易接口,可以切换至灾备站点,而非直接停市。
延迟恢复后,如何确认攻击流量已经彻底清除?
观察三个指标:延迟曲线是否回归攻击前基线、异常连接数是否归零、行情数据的时间戳偏差是否小于50毫秒,从抓取的数据包中分析源IP是否还在重复尝试连接,如果攻击源已停止发送,再持续观察30分钟后开放受限端口。
普通投资者遇到行情延迟,怎样判断是自家网络问题还是券商系统被攻击?
先测试本地网络丢包率,用ping -t 8.8.8.8(或交易所服务器IP)持续发10次包,丢包率低于1%则不是本地问题,然后打开两个不同券商的行情软件,如果同时延迟,大概率是交易所或行情服务商的问题;如果只有一个软件卡顿,更可能是该券商自己的系统被攻击或故障。