上周搞了台新加坡物理机来测试,用途是跑我那个东南亚电商小程序的后端——每天几十万次API调用,用户主要在印尼和马来西亚,但服务器必须落地在新加坡,方便合规和降低跨国延迟,之前一直用某云厂商的新加坡节点,但业务量上来后,云服务器的CPU争抢和IO抖动开始让我头大,于是动了上物理机的心思。

新加坡物理机真实评测,延迟、带宽、价格…我用数据告诉你值不值
先交代一下测试环境:机器是某新加坡本地机房提供的E5-2680 v4(28核56线程,2.4GHz基准),64GB DDR4 ECC,两块1TB NVMe SSD(RAID1),1Gbps独享带宽(宣称是BGP多线),月付价格折合人民币大概1800元,测试工具:iperf3测带宽,ping和MTR测延迟丢包,fio测磁盘随机读写,sysbench跑CPU和内存压力。
延迟与丢包:东南亚内部很能打,回国就一般了
我用四台不同地区的监控节点同时ping了三天:新加坡本地(用的Singtel LTE)、印尼雅加达(某云服务器)、马来西亚吉隆坡(家庭宽带)、中国上海(电信),结果如下:
- 新加坡本地:平均0.3ms,无丢包,这个没什么好说的,物理机就在机房里。
- 印尼雅加达:平均8ms,峰值偶尔跳到15ms,丢包率0.02%,非常漂亮,比之前用云服务器时还稳定,因为物理机网卡直通,没有虚拟化层干扰。
- 马来西亚吉隆坡:平均6ms,丢包0.01%,同样是低延迟,跑MTR发现路径完全直连,没有绕路。
- 中国上海电信:平均75ms,丢包率0.5%,高峰期(晚上8-10点)丢包上升到1.2%,延迟掉到110ms左右,这成绩只能说中规中矩,毕竟跨了公海光缆,而且物理机走的是新加坡本地BGP,没有专门优化回国路由。
带宽实测:标称1Gbps,实际能跑多少?
用iperf3双向测试,从新加坡物理机连到印尼节点(同样是1Gbps带宽的云服务器),结果TCP单向能跑满940Mbps,几乎压线;UDP模拟小包场景下,500字节包能稳定跑到800Mbps,丢包率0.1%,再测连到上海电信,单向只有180Mbps左右,UDP更是掉到80Mbps,问了机房客服,说他们对接的主要是东南亚和欧美线路,回国带宽需要额外购买CN2优化,大概每Mbps多收80元——那还不如直接上阿里云新加坡的精品BGP。
磁盘性能:这才是物理机的核心优势
fio测试4K随机读写(queue depth=32,direct=1):读取IOPS 18.5万,写入IOPS 7.2万,对比我之前用的同一家云厂商的ESSD(据说高性能),4K随机读取IOPS只有3万出头,写入更是不到1万,用mysql的sysbench跑oltp复杂查询,物理机每秒能处理6200个事务,云服务器只能跑2100个——差距接近三倍,而且云服务器在跑测试时,CPU的steal time有时跑到12%,这要是线上业务,直接导致接口响应时间从20ms飙到200ms。
价格对比:便宜?得看你怎么算
单看月付1800元,同等配置的云服务器(比如AWS c5a.2xlarge,8核16G,但物理机是28核56G啊),光CPU就算28核对标的话,云上起码要五六千一个月,但物理机没有弹性伸缩,不能像云那样随时关停释放,运维也得自己扛——从装系统到打补丁,都得自己动手,我这次测试的机器预装了CentOS 7,但内核版本很老,还得我自己升级后重启。
什么人该买,什么人该继续用云
如果你跑的是东南亚本地业务,尤其像电商、游戏、金融这类对IO和CPU稳定性极度敏感的应用,物理机确实能打——延迟低、IO强、没有“邻里噪声”,但如果你主要服务中国用户,或者业务流量波动大(比如搞促销时开10台,平时只开2台),那还是乖乖用云服务器,再加条CN2线路更划算,另外提醒一句:别信那种“新加坡物理机回国低延迟”的宣传,不买优化线路,100ms起步是常态。
这次测试完,我打算把核心数据库迁到这台物理机上,API网关继续留在云上做弹性,毕竟,成年人不做选择,混着用就完事了。
发表评论