1. 压力测试基础:什么是交易系统压力测试、为什么需要压力测试、核心指标(TPS、延迟、错误率)
大家好,我是你们这堂课的讲师。做了十几年量化交易系统,我踩过的坑比你们见过的K线还多。今天咱们聊聊压力测试——这个听起来很硬核、实际上更硬核的话题。
先问个问题:你辛辛苦苦写了一个交易系统,回测跑得飞起,实盘一上线就崩了。为什么?说白了,就是没做压力测试。
什么是交易系统压力测试?
压力测试,不是让你去测系统能不能跑,而是测系统在极限状态下会不会死。
我习惯这么定义:压力测试是通过模拟极端市场行情或超高并发订单流,验证交易系统在资源受限、负载激增场景下的稳定性、吞吐能力和响应速度。
举个例子。你平时交易量不大,系统每秒处理100笔订单,稳稳的。但突然来了一波行情,每秒涌进来10000笔订单——你的系统扛得住吗?
压力测试就是干这个的。它模拟这种极端情况,看看系统会不会崩、会不会丢单、会不会延迟到无法接受。
核心要点:压力测试不是功能测试,它不关心你的业务逻辑对不对,只关心你的系统在极限状态下能不能活下来。
为什么需要压力测试?
这个问题我问过很多新人。有人回答「为了系统稳定」,有人回答「为了不出事故」。都对,但不够具体。
我给你们说三个真实场景:
- 行情爆发时——比如某只股票突然涨停,所有量化机构都在抢单。你的系统如果扛不住,订单发不出去,那就是真金白银的损失。
- 系统升级后——你改了一行代码,觉得没问题。但上线后才发现,这行代码把整个消息队列堵死了。压力测试能提前发现这种问题。
- 硬件故障时——服务器CPU飙到100%,内存快满了。你的系统是优雅降级,还是直接崩溃?压力测试能告诉你答案。
我记得有一次,我们团队上线了一个新策略。回测收益漂亮得很,实盘第一天就崩了。后来一查,是数据库连接池配置太小,并发一上来就全堵死了。你说亏不亏?
我的建议:压力测试应该成为你上线流程的标配。每次重大变更,先压一压再上线。别等出事了再后悔。
核心指标:TPS、延迟、错误率
做压力测试,你得知道看什么指标。我一般盯三个:TPS、延迟、错误率。这三个指标,基本能反映一个交易系统的健康状况。
1. TPS(每秒交易笔数)
TPS,全称是 Transactions Per Second。说白了,就是你的系统一秒钟能处理多少笔交易。
这个指标很直观。你系统标称能扛10000 TPS,结果压到8000就崩了,那说明你的系统有水分。
我习惯这么测:从低到高逐步加压,记录每个压力级别下的TPS。画一条曲线,看看系统在哪个点开始掉链子。
# 伪代码示例:TPS测试逻辑
def tps_test():
for target_tps in [1000, 2000, 5000, 10000]:
actual_tps = send_orders(target_tps)
if actual_tps < target_tps * 0.95:
print(f"系统在 {target_tps} TPS 时开始降级")
break
注意:TPS不是越高越好。有些系统为了追求高TPS,牺牲了延迟和稳定性。你要找到那个平衡点。
2. 延迟(Latency)
延迟,就是一笔订单从发出到确认的时间。在量化交易里,延迟就是金钱。
我见过最夸张的情况:一个系统平均延迟只有5毫秒,但P99延迟(99%的请求都在这个延迟内完成)高达500毫秒。这意味着什么?意味着有1%的订单要等半秒钟。在抢单行情里,半秒钟黄花菜都凉了。
所以,我建议你们关注这几个延迟指标:
- 平均延迟——整体表现,但容易被极端值拉偏
- P50延迟——一半请求的延迟水平
- P99延迟——最慢的1%请求的延迟,这个很关键
- 最大延迟——最差情况,但偶尔会有毛刺
我曾经遇到过一个系统,平均延迟10毫秒,看着挺好。但一压到5000 TPS,P99延迟直接飙到2秒。后来发现是某个锁的竞争问题。嗯,这种坑我踩过不止一次。
3. 错误率(Error Rate)
错误率,就是所有请求中失败的比例。这个指标最直接——系统崩没崩,看错误率就知道。
我一般这么定义:
- 0% 错误率——完美,但很少见
- < 0.1% 错误率——可以接受,但需要排查
- > 1% 错误率——系统有问题,必须停
但要注意,错误率不是越低越好。有些系统为了降低错误率,把超时时间设得很长。结果就是:订单虽然没报错,但延迟高得离谱。这种「假健康」比真崩溃更可怕。
我的经验:三个指标要一起看。TPS高但延迟也高,说明系统在硬撑。延迟低但错误率高,说明系统在丢单。只有三个指标都健康,系统才是真的稳。
知识体系总览
下面这张图,是我自己总结的压力测试知识体系。你们可以把它当作一个地图,后面每节课都会对应到其中的一个模块。
这张图把压力测试的核心逻辑串起来了。你想想看,从中心出发,三个指标就像三根支柱。每个支柱下面还有更细的指标。后面几节课,我们会逐个深入。
一个小技巧:刚开始做压力测试,别贪多。先盯住TPS和错误率这两个指标。等系统稳定了,再开始优化延迟。一步一步来,别想一口吃成胖子。
好了,这一节的内容就到这儿。记住三个关键词:TPS、延迟、错误率。它们是压力测试的基石,也是你判断系统健康度的三把尺子。
公众号:蓝海资料掘金营,微信deep3321