前两天有个做跨境SaaS的朋友跟我吐槽,说他们的开发团队在GitLab上做CI/CD,自从把主仓库迁到香港某服务器后,构建时间非但没快,反而经常卡在“Waiting for runner”那个阶段,他说当时选香港就是因为觉得离大陆近、延迟低,结果部署上去才发现,跟想象中的“丝滑体验”差了十万八千里。
所以今天我就直接自掏腰包,买了一家香港数据中心提供的E5-2697v4方案,开了台云服务器,专门跑了一遍GitLab CI/CD的全链路测试,不吹不黑,该多少数据就说多少,咱们看看香港服务器到底适不适合当GitLab的CI Runner。
测试环境和工具说明
先摆清楚手头的家伙事儿:服务器配置是4核8G,SSD 50G,带宽标称10Mbps独享,操作系统Ubuntu 22.04,GitLab版本直接拉的最新企业版v16.11,本地测试机是深圳电信500M家庭宽带,以及上海联通办公室网络,分别测试典型场景。
测试工具用了三个:iperf3测裸带宽和丢包,mtr看路由跳数和抖动,GitLab Runner自带的 job duration对比实际构建时间,简单说就是:既要看底层网络,也要看应用层实际表现。
香港服务器GitLab跑CI/CD到底行不行?我直接买了台机器实测给你看
实测数据:延迟、带宽、丢包一个不落
第一轮先跑iperf3,从深圳电信侧发起TCP流。结果有点意外:延迟稳定在9-11ms之间,丢包率在0.08%左右,这个数据说实话比我想象中好——毕竟香港机房到深圳物理距离不到100公里,跨境电信的直连线路确实能跑出这个水准,带宽方面,深圳端跑到9.2Mbps,接近标称的10M独享,没有明显限速。
但换上海联通就不一样了,延迟瞬间跳到22-25ms,丢包率0.3%直接翻了三倍多,带宽只剩6.1Mbps,这就是典型的非直连线路问题,数据包从上海出去要绕广州再走香港,多跳两三个节点,每个节点都抖一下,累计起来就影响明显了。
第二轮直接在服务器上部署了一个GitLab Runner,绑定到我的私有GitLab实例上,跑一个典型的前端项目(npm build + 测试 + 打包Docker镜像),深圳端平均构建耗时是1分48秒,上海端耗时2分32秒——差距主要卡在npm install阶段,因为需要回源拉包,上海端的丢包导致TCP重传增加了将近40%。
竞品对比:香港 vs 其他区域
为了不单方面说话,我也测了两个参照组:
- 本地自建Runner(深圳机房,阿里云轻量服务器):延迟<1ms,丢包0%,带宽100M,构建时间直接压到48秒,但代价是什么?一个是公网IP被腾讯云/阿里云的CDN名单封过几次,另一个是带宽费用比香港贵了3倍。
- 新加坡AWS EC2(t3.medium):延迟45-50ms,丢包偶尔跳到1%但多数时候在0.2%以内,带宽30M起步,构建时间2分15秒,比香港深圳侧慢但比香港上海侧快,而且S3的跨区域缓存很舒服,GitLab Artifact上传/下载几乎没瓶颈。
结论很清晰:如果你的团队主力在华南地区,香港服务器跑GitLab CI/CD完全够用,甚至比大部分国内二线机房稳定,但如果你团队在华东或华北,建议优先选阿里云的香港节点(走CN2线路),或者直接用AWS/腾讯云的自家Runner集群,别让网络成了CI的瓶颈。
总结推荐
不是所有香港服务器都适合跑GitLab,关键看两点:第一,机房有没有CN2直连线路,这点之前很多测评翻车都是因为走了野鸡BGP;第二,Runner实例的磁盘IO和CPU多核性能别太拉胯,GitLab的Git操作加上Node/Python的依赖安装,很吃这两样。
我的最终建议:如果你的团队人数少于20人,且主要在华南,买一台香港E5-2697v4挂Runner,配合GitLab自带的cache机制,能省下至少60%的服务器成本,如果你跨地区协作频繁,老老实实上GitLab的SaaS高级版,多花点钱省心,至于那些号称“香港服务器GitLab部署一条龙”的广告,别信太多,实测数据摆在这儿,自己跑一遍测试脚本比什么都强。



发表评论