前言
上周有个朋友说,想把他的 Spring Boot 项目从国内云迁到洛杉矶,因为他的用户主要在北美和东南亚,国内云出海延迟太高,他现在就卡在选型上:到底要几核 CPU、多大内存、多少带宽才够,于是过来问我。
这不是个例,现在很多电商、游戏出海都得找个稳定的海外服务器才行,但是很多人都不知道该怎么选,有人图便宜直接买最低配,跑了三天502;有人买顶配,资源利用率却不到 20%,纯浪费。
我就以朋友的 Spring Boot 高并发项目为例,讲讲怎么从实际的业务参数,反推出自己该怎么选型。
一、项目的瓶颈在哪?
选 VPS 之前,先别急着看配置表,先看看自己的应用是 CPU 密集型还是 I/O 密集型?
以Spring Boot项目为例, 它的典型场景(REST API、CRUD 接口、数据库查询),绝大多数属于 I/O 密集型,也就是说你的 CPU 大部分时间在“等”:等数据库返回、等磁盘读写、等网络响应,真正在“算”的时间很少。
I/O 密集型有个关键特征:线程数可以远大于 CPU 核数。一个线程在等数据库的时候,CPU 可以切去处理另一个线程。所以 Tomcat 的 threads.max 才能设到 800 甚至更高。
这就引出了选型的第一原则:不要用“线程数”去倒推“CPU 核数”。 800 线程的 Tomcat,4 核 CPU 完全扛得住,因为大部分线程都在等待状态。
二、CPU 怎么选?
先看一张表:
QPS 100-500 是什么概念?假设平均响应时间 50ms,单线程每秒能处理 20 个请求,200 个线程理论上能扛 4000 QPS。但实际能跑多少,取决于你的代码质量和数据库响应速度。
大多数 Spring Boot 项目,4 核起步就够了。 如果你不确定 QPS 有多少,先按 4 核配,上线后看监控。CPU 持续超过 70% 再考虑升配或加实例。
有人觉得“核数越多越好”,买 16 核。但 Spring Boot 默认不是强并行框架,单实例在 8 核以上的提升往往不明显,瓶颈可能在数据库连接池或者锁竞争,不在 CPU。
三、内存怎么选?
内存是 Java 选型里最容易出错的地方。很多人只算 JVM 堆内存,忽略了堆外消耗。
一个 Spring Boot 进程实际占用的内存包括:
JVM 堆内存(
-Xmx)Metaspace(类加载,默认可能吃到 256MB-1GB)
线程栈(每个线程默认 1MB,800 线程就是 800MB)
Direct Memory(NIO 用的堆外内存)
GC 自身开销
简单粗暴的估算公式:
服务器总内存 ≈ 堆内存 + 1GB(Metaspace + 线程栈 + 系统预留)
配置建议(来自生产实践):
JVM 堆内存不要超过物理内存的 70%,给系统和其他进程留 30%。如果你同一台机器还跑 MySQL、Redis、Nginx,内存就还要再往上加。
800 线程的 Tomcat,光线程栈就可能吃掉 800MB。如果你只给 4GB 内存,堆设了 3GB,那系统和其他开销就只剩 200MB 了,很容易 OOM。
四、带宽怎么选?
带宽需求可以用一个公式粗算:
所需带宽(Mbps) = QPS × 平均响应大小(KB)× 8 ÷ 1000
举个例子:QPS 500,平均响应 20KB(JSON + 少量图片链接):
500 × 20 × 8 ÷ 1000 = 80 Mbps
加上 TCP/IP 包头开销、峰值波动,建议预留 50% 余量,也就是 120Mbps 左右。
不同场景的带宽参考:
洛杉矶 VPS 的一个优势: 1Gbps 端口是标配,带宽资源比亚洲机房充裕得多,价格也更低。如果你需要大带宽跑 API 回源、文件分发,洛杉矶的性价比明显更高。
一种“无限流量”的VPS适合什么场景? 如果你的项目有视频回源、大文件下载、高频 API 调用这类流量波动大的需求,按流量计费会很贵。无限流量 VPS 在这种场景下更划算。
配置推荐
洛杉矶 VPS 配置参考:
配好之后别忘了调 Spring Boot 参数:
server:
tomcat:
threads:
max: 800 # 按峰值 QPS × 平均 RT × 1.5 估算
min-spare: 100 # 保持热线程
max-connections: 10000
accept-count: 200
connection-timeout: 20000
spring:
datasource:
hikari:
maximum-pool-size: 50 # 4核建议 30-50,8核可以 50-80Tomcat 线程数的经验公式:峰值 QPS × 平均响应时间(秒)× 1.5,留出 buffer。比如峰值 1000 QPS,平均 RT 100ms,就是 1000 × 0.1 × 1.5 = 150 线程,但建议至少配到 300-500 留余量。
总结
选洛杉矶 VPS,核心逻辑就三句话:
CPU 看 QPS 档位,4 核起步,不要盲目堆核数
内存按“堆内存 + 1GB”估算,别忘了线程栈和 Metaspace
带宽按 QPS × 响应大小算,洛杉矶 1Gbps 端口是天然优势
