很多人上来就问:“外盘期货资管软件的服务器到底应该怎么配?”我每次听到这个问题,都会下意识先反问一句:这个软件一天要扛多少个账户、多少笔订单,风控规则做到什么粒度,行情数据是全市场扫描还是只看几个主力?因为“外盘期货”和“资管软件”这两个词叠在一起,意味着它不只是跑一个交易客户端,而是同时承担行情采集、多账户管理、策略调度、资金结算、风险监控这一大串任务,服务器选型自然不能只看CPU核数和内存大小。
先说明一点:本文只聊技术架构、服务器采购和运维经验,不讨论业务模式是否合规。如果你想用这套东西做客户资金管理业务,请先确认自己在目标市场已获得合法资质。软件只是工具,业务能不能做是另一回事。
下面这些配置经验,来自我给几个模拟项目和团队做方案时的积累,适合从个人实盘到小团队资管场景迁移时参考。
1. 先想清楚:这套系统在服务器上到底要跑哪些环节
1.1 拆开“外盘期货资管软件”这七个字
很多朋友一上来就讨论“要几核CPU”,但我建议先把系统拆开看。一套典型的外盘期货资管软件,内部至少有这么几个模块:
- 行情采集模块:订阅境外交易所或第三方行情源的实时报价,推送到各个策略进程;
- 交易通道模块:通过境外经纪商提供的接口下单、撤单、查询持仓和成交;
- 风控与账户管理模块:资金冻结、持仓试算、保证金监控、每笔订单的事前风控检查;
- 数据库模块:账户资料、订单流水、成交记录、资金流水、审计日志,全部落库;
- 管理后台模块:给操作员看账户权益、当日盈亏、风险指标,通常是Web界面。
这五个模块对硬件的要求完全不同。行情采集是“大流量低计算”,交易通道是“低延迟高可靠”,风控是“高并发内存密集”,数据库是“高IOPS”,Web后台是“随便一台机器都能跑”。
我有一次帮一个团队做配置方案,对方开口就要“32核128GB内存”,理由很朴素:“服务器配置高点,省得以后不够用”。结果我帮他拆完模块才发现,他的实际瓶颈根本不在CPU,而在行情带宽和数据库磁盘IO。如果按他原来的思路买机器,大概率是CPU常年占用不到5%,但行情高峰时段网络打满导致委托延迟。
1.2 实体机、虚拟机、容器怎么布局
拆完模块,下一步是决定一台机器还是多台机器。这里我给一个简单的判断标准:如果你管理的真实账户在20个以内,策略频率不高(比如分钟级以上),一台机器勉强够用,但必须把日志盘、数据盘、系统盘分开;如果账户上了50个或者策略是秒级、百毫秒级,我强烈建议拆成至少两三台机器,把交易通道、行情采集、数据库分开。
多台机器的好处不只是性能隔离,更是故障隔离。资管软件最怕的不是某台机器慢,而是“一个进程挂了拖垮全链路”。行情模块出问题不应该导致交易通道断了,数据库卡死也不应该影响风控引擎继续执行止损。把模块拆到不同机器上,本质上是用一台机器的成本换取稳定性。
我见过一些团队为了省几块钱把行情、交易、后台全塞在一台4核8G的小云主机上,结果行情高峰期CPU跑满,交易下单延迟从5毫秒跳到500毫秒,风控止损单都发不出去。这种情况下服务器配置再高都没意义,问题出在结构上。
2. 核心交易与风控节点的配置底线和算力估算
2.1 CPU选型:主频比核心数更关键
交易和风控模块对CPU的需求有个特点:大部分操作是单线程或低并发状态下的低延迟操作,而不是多线程高吞吐计算。下单链路是这样的:策略信号产生、风控校验、委托编码、网络发送、等待回报。这一条链路上每一步都有等待,CPU真正花在计算上的时间少得可怜,但每一步都可能因为调度延迟、CPU降频、核间切换而变慢。
所以 CPU 选型的核心原则是:主频优先,核心数够用就行。别买一堆低频高核心的“洋垃圾”服务器CPU,看着核心数量很多,实际跑交易系统还比不上一个主频4GHz以上的8核桌面级CPU。
我的经验是:交易节点 CPU 至少 8 核 16 线程,主频 3.5GHz 以上;如果跑多个策略实例或者做了策略容器化,建议 16 核 24 线程,主频 3.2GHz 以上。超高频线程对带宽的占用极高,具体还是要压测才能定,但现在这个底线基本错不了。
可能有人问:行情解析不是要处理大量数据吗,不需要多核吗?行情解析确实是计算型任务,但通常一个行情源解析进程只占用一两个核。如果你发现行情解析CPU占满,优先考虑优化解析算法,而不是加核心数。
2.2 内存:持仓快照和风控计算才是内存大户
内存这块我见过最多翻车案例。很多人按数据库大小估算,觉得“数据库几百MB,内存16G绰绰有余”,却忘了风控系统在实时场景下根本不会去查数据库。
大多数资管软件的风控引擎,为了追求速度,会把所有账户的实时持仓、挂单、资金情况加载到内存里,做一个“内存快照”,每次收到成交回报就更新快照,每次下单前直接基于内存快照做校验。一个账户的快照包括当前持仓、挂单、可用资金、保证金占用、昨日权益、今日盈亏等字段,轻则几百KB,重则几MB。账户一多,内存消耗是直线上升的。
我给一个粗略的参考:
内存需求大约等于系统基础占用(16G左右) + 单账户内存快照平均值(按1~2MB估算) × 账户数 + 行情缓存缓冲区(约4~8G) + 策略运行中间数据。
按这个公式,50个账户大约需要 16 + 100 + 8 = 124GB?不对,50×1.5MB=75MB,不是100GB,我上面算法写错了,这里更正一下。
实际更合理的估算是:基础系统 8~16GB,加上每账户实时数据 1~5MB,再加上行情缓冲 2~4GB,交易中间数据 2~4GB。50个账户的真实内存占用,大概在 16 + 0.25 + 3 + 3 = 22GB 左右。之所以大家普遍推荐 32GB 起步,是为了应对极端行情下账户快照的临时膨胀和风控计算的峰值。如果说你的策略涉及回测或者盘中历史回放,那内存还得再加,因为回测系统通常会直接把数据映射进内存,几十个GB瞬间就没了。
我的结论是:交易和风控节点内存至少 32GB,能做到 64GB 更好。128GB 对小规模团队来说大概率是浪费。
2.3 存储:日志盘和数据盘分开是底线
存储配置有一个特别容易被忽略的点:日志。资管系统的日志量远超你的直觉,每一笔订单、每一次心跳、每一次风控校验、每一次行情数据快照都可能写日志。如果策略是高频的,一天产生几十GB日志很正常。
我做过一个项目,对方把日志默认写到了系统盘,结果连续跑了三天,日志膨胀到 30GB,直接把系统盘写满了。服务器直接卡死,SSH都连不上,更严重的是数据库因为磁盘没空间写入失败。排查了半天,罪魁祸首就是一行日志配置。
所以存储分区至少要三层:系统盘 80~100GB(只放操作系统)、数据盘(数据库文件、行情历史数据)、日志盘(单独挂载到 /var/log 或程序日志目录)。数据盘和日志盘都用企业级 NVMe SSD,不要用机械硬盘,因为数据库在写入大量订单流水时IOPS很容易成为瓶颈。
如果预算紧张,宁可在内存上省一点,也千万别在磁盘IO上省。
3. 行情与数据服务:真正吃硬件的地方
3.1 行情接入方式决定你的部署位置和带宽需求
行情模块是整个系统里最依赖“外部条件”的部分。不同的行情接入方式,对服务器配置的影响差别很大。
如果你走的是交易所直连或高性能行情源,通常需要把服务器放在离交易所有限距离的数据中心里,这时候物理机托管比云主机更合适;如果你用的是第三方行情API或经纪商自带的行情接口,那对服务器的位置要求没那么苛刻,带宽和稳定性才是重点。
这里有个经验:行情模块的计算量其实不大,真正的压力在网络带宽和数据缓存。行情源每秒推送的是增量快照,频率高但单次数据量有限。真正考验的是你的带宽能否扛住极端行情下的峰值流量,以及你的内存能否缓存足够多的高频数据。
3.2 带宽预算:按峰值算,别按平均值算
很多团队买服务器带宽时习惯看“平均使用率”,这在大流量高并发场景下是灾难。行情数据的特点是“长期低位、瞬时爆发”,平时一小时可能只走几百MB流量,遇到重大数据公布的瞬间,行情源会在几秒内推送海量快照。
我提供一个粗略估算方法:带宽需求 = 订阅合约数 × 单个合约每秒最大更新条数 × 每条数据编码后字节数 × 8。举个典型例子:如果你订阅的是境外期货市场几十个流动性较好的合约,单个合约高频更新峰值为每秒50条快照,每条快照约200~400字节,那峰值带宽大约是 50合约 × 50条/秒 × 300字节 × 8 = 6Mbps,这个数字很小。但如果你的资管策略需要全市场扫描,订阅几百个合约甚至全市场逐笔成交,那峰值带宽轻松突破百兆甚至更高。
在实践中,很多资管软件还接了盘口深度数据,一个合约的深度快照可能包含几十档买卖报价,数据量是普通五档行情的几倍。这时候如果带宽配置不足,高波动时段行情数据包会在网络缓冲区排队,交易通道的订单回报也会被堵。所以我建议带宽宁可买大一点,并且一定要看“峰值带宽保证”而不是“平均带宽”。
3.3 历史数据回放:内存和磁盘的双重胃口
最后说历史数据。资管系统往往要做策略回测、盘中复盘、盘中实时回放(比如“回放一下中午的行情”),这就涉及到历史行情数据的存储和读取。
历史数据的存储量很容易估算:一个合约一天的 tick 数据(含盘口)可能在几十MB到几百MB之间。如果你存储100个合约、10个交易日的数据,取个中间值每合约每天100MB,就是 100×10×100MB = 100GB。这不是很大,但问题是回放系统通常希望把目标时间窗口的数据一次性加载到内存里,以便快速计算指标。这时候内存不充裕,就得频繁读磁盘,回放性能断崖式下跌。
我的经验是:如果明确要做历史回放,把内存预算往上加一倍。32GB不够就上64GB,64GB嫌贵就按日期把历史数据分片,一次只加载一段时间,但这样程序逻辑会更复杂。
4. 网络架构与托管位置:延迟比堆硬件更值得注意
4.1 服务器放哪里,直接决定链路延迟
外盘期货资管软件有一个天然痛点:行情源和交易接口在境外,而你的操作人员可能在境内或第三方网络环境下。服务器放在哪里,决定了行情数据从交易所到你的程序要跳多少个网络节点。
我建议的原则是:让服务器尽量靠近你的行情源和交易接口所在的数据中心,而不是靠近你的操作员。原因很简单:程序化交易链路中,人只是在后台看数据,真正对延迟敏感的是服务器与行情源、交易接口之间的通信。你的操作员哪怕在离服务器几千公里外,通过远程桌面或Web后台看结果,那点延迟无所谓。
实操中,你可以先做一个小测试:在你候选的云服务商或托管机房中开一台机器,从这台机器 ping 一下你的行情源和经纪商接口地址,连续测几个小时,看平均延迟、抖动和丢包率。如果延迟稳定在个位数毫秒级别,说明位置基本合适;如果延迟忽高忽低,那配置再高的服务器也没用。
4.2 路由质量和丢包率,比带宽大小更关键
很多人买服务器只看“带宽100M还是1G”,却忽略了跨国链路的稳定性。国际链路的质量波动很常见,不同运营商、不同时间段的表现差异可能非常大。
判断网络质量最简单的办法是用 mtr 或 traceroute 看路由路径。你关心的不是有多少跳,而是每一跳的丢包率和抖动。如果中间某一跳在高峰期丢包超过1%,那你的交易链路在极端行情时就会出现回报延迟、委托丢失的风险。
这种问题不是靠加带宽能解决的,而是调整服务器位置或更换网络供应商。我见过一个团队,服务器配置完全没问题,就是跨国路由在晚间高峰期丢包严重,导致程序经常误判“连接断开”而重复撤单重发。最后查来查去,换了机房才解决。
4.3 端口暴露和安全组:这块配置错了,机器再稳也没用
交易服务器最容易被人盯上。操作系统的默认端口、数据库端口、交易接口的管理端口,如果直接暴露在公网上,被扫描到只是时间问题。
我的建议是:公网只开放必要的业务端口,SSH 端口改掉默认的22,并且只允许你办公室或运维跳板机的IP访问;数据库端口和管理后台端口禁止对公网开放,要走内网或通过跳板机访问。云服务器用安全组规则做第一层过滤,物理机用iptables做第二层过滤。
别觉得这是“大公司才需要考虑的事”。资管软件直接和资金挂钩,一旦被入侵,轻则程序被篡改,重则账户资金受损。这个风险比服务器配置选型的问题严重得多。
5. 容灾、备份和监控:被低估的三个配置成本
5.1 热备还是冷备,取决于业务可以接受多久的停机
很多初建系统的人完全不考虑容灾,觉得“服务器宕机了大不了重启”。但在资管场景里,行情正在跳动,持仓正在实时变化,你重启服务器的那几分钟,可能就是行情剧烈波动的几分钟。风控单发不出去,后果很严重。
我见过两种主流做法。冷备方案是每天或每小时把系统状态备份到另一台机器,一旦主服务器故障,手动切换到备用机。这种方案成本低,但恢复时间可能是十几分钟甚至一小时,只适合账户规模小、策略频率低的场景。
热备方案是两台服务器同时接收行情、同时运行策略,通过心跳互相监控,主服务器故障时备用机自动接替。热备的难点在于“防止双下单”:切换之后,备用机必须知道哪些订单已经发出、哪些成交还没回报,否则可能出现重复下单。这不是简单的“IP切换”能解决的,需要在应用层做订单状态同步和去重。
我建议小团队先做冷备加自动化恢复脚本,成本低且足够应对大部分故障;等到账户规模大了、业务依赖强了,再考虑热备方案。
5.2 数据库备份和日志转存:别把鸡蛋放同一个篮子里
资管系统每天产生大量订单和资金流水,数据库单点故障是灾难性事件。最朴素的备份策略是:每小时增量备份 + 每天全量备份,备份文件存储到另一台机器或另一块独立磁盘上,不要和数据库放在同一物理设备上。
我做过一个模拟项目的容灾演练,数据量不大,但备份频率很低,结果数据库磁盘物理损坏,恢复出来丢了近一天的交易流水。从那以后我的原则是:宁可多花一台机器的钱,也要把冷备和数据库备份放到物理隔离位置。
日志转存也一样。日志盘如果被写满,系统会变得非常不稳定。定期把旧日志压缩并转存到冷存储,保留最近7到30天即可,别指望一台服务器能无限存日志。
5.3 监控节点:小投入大收益
我再推荐一个小配置:一台独立的轻量监控服务器,2核4G就够,和交易节点放在不同的可用区或物理机房,负责定时检查交易节点和行情节点的存活状态。监控内容包括CPU、内存、磁盘IO、网络连通性、交易进程端口、行情更新时间等。
这台监控机的价值在于:当主系统整体宕机时,你还能通过监控机知道问题出在哪个环节,而不是连SSH都连不上,两眼一抹黑。而且监控机可以兼作运维跳板机,日常运维、日志查看都在监控机上操作,主交易节点不暴露SSH端口,安全性和可维护性都大幅提升。
6. 按并发规模给出三档配置清单参考
6.1 小规模:10到20个账户,一台机器起步
账户数量不多,策略频率不高,可以先用一台中高性能物理机或同配置云主机,具体参考如下:
- CPU: 8核16线程,主频3.5GHz以上;
- 内存: 32GB;
- 存储: 系统盘100GB + 数据盘1TB NVMe SSD,有条件单独挂一块200GB日志盘;
- 带宽: 50Mbps~100Mbps,按行情订阅范围选。
这套配置能覆盖大多数10到20个真实账户、分钟级或秒级策略的使用场景。初期别追求一步到位,先把系统和模块跑稳。
6.2 中规模:50到100个账户,拆成三台
账户一多,交易和风控逻辑就不能再和行情、数据库挤在一台机器上了。建议这样拆:
- 交易与风控节点:8核16线程,主频3.5GHz,内存64GB,NVMe 500GB;
- 行情节点:8核16线程,内存32GB,带宽200Mbps起步,数据盘1TB;
- 数据库与后台节点:4核8线程,内存32GB,数据盘2TB NVMe。
三台机器各司其职,行情节点挂掉不至于让交易节点失联,数据库压力也不会拖垮风控引擎。
6.3 大规模:500个账户以上,走集群化
这个规模已经不能只看服务器配置了,要看架构。交易网关可以做成多实例集群,行情节点做订阅分流,数据库做主从复制,风控引擎独立部署并支持横向扩展。服务器配置建议至少是:
- 交易网关集群:2台以上,每台16核32线程、主频3.2GHz以上、内存64GB;
- 行情集群:2台以上,内存64GB,带宽500Mbps以上;
- 数据库主从:主库32核、内存128GB、NVMe RAID1,从库随主库配置;
- 风控引擎集群:至少2台,内存64GB以上,要求低延迟网络互联。
到了这个规模,单台服务器的意义不大了,更重要的是节点间网络性能和整体架构设计。
6.4 云服务器和物理机怎么权衡
这个选择没有标准答案,取决于你的延迟敏感度和运维能力。
云服务器的优势是弹性扩容、快照备份方便、硬件故障由云厂商处理,适合账户规模波动大、运维能力薄弱的团队。劣势是邻居效应和虚拟化开销,极端行情下可能出现性能抖动。
物理机托管的优势是性能稳定、资源独占、可以定制CPU和内存,适合超低延迟需求的策略。劣势是硬件故障自己担责,扩容和备件周期长。
我个人的建议是:行情和交易节点如果追求极致稳定,优先选物理机或云上的专用裸金属实例;后台、监控、备份节点用普通云服务器就行,性价比高。
最后分享一点我在实际项目里的体会:服务器配置再怎么堆,真正决定系统上限的往往是应用层的容错设计和风控逻辑。你花了很大力气把服务器买得很豪华,不如先写一个可靠的行情断线重连机制,不如把极端行情下的订单状态对账做好。很多系统出问题,不是机器不够快,而是代码处理不了边界情况。所以先按本文的配置把基础设施搭好,然后花更多精力测试极端行情下的表现,这才是资管软件稳定运行的正道。