200字
Spring Boot 高并发项目放洛杉矶 VPS 上,带宽/CPU/内存怎么选?
2026-09-23
2026-09-23

前言

上周有个朋友说,想把他的 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 怎么选?

先看一张表:

场景

推荐 CPU

说明

轻量 API,QPS < 100

2 核

够用,但余量小

中等业务,QPS 100-500

4 核

平衡点,推荐起点

高并发,QPS > 500

6-8 核

需要配合线程池调优

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 堆建议

轻量应用,QPS < 50

2GB

-Xmx1g

中小生产环境

4GB

-Xmx2.5g

高并发,含连接池缓存

8GB

-Xmx6g

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 左右。

不同场景的带宽参考:

场景

建议带宽

说明

内部工具 / 低并发 API

10-50 Mbps

够用

中等业务,QPS 100-500

100-200 Mbps

推荐起点

高并发 / 静态资源多

500 Mbps+

考虑 CDN 分流

洛杉矶 VPS 的一个优势: 1Gbps 端口是标配,带宽资源比亚洲机房充裕得多,价格也更低。如果你需要大带宽跑 API 回源、文件分发,洛杉矶的性价比明显更高。

一种“无限流量”的VPS适合什么场景? 如果你的项目有视频回源、大文件下载、高频 API 调用这类流量波动大的需求,按流量计费会很贵。无限流量 VPS 在这种场景下更划算。

配置推荐

洛杉矶 VPS 配置参考:

档位

CPU

内存

带宽

适合场景

入门

2核

4GB

100Mbps

中小项目、QPS < 300

进阶

4核

8GB

200Mbps+

主力生产、QPS 300-1000

高并发

8核

16GB

500Mbps+ 或无限流量

高并发 API、大流量场景

配好之后别忘了调 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-80

Tomcat 线程数的经验公式:峰值 QPS × 平均响应时间(秒)× 1.5,留出 buffer。比如峰值 1000 QPS,平均 RT 100ms,就是 1000 × 0.1 × 1.5 = 150 线程,但建议至少配到 300-500 留余量。

总结

选洛杉矶 VPS,核心逻辑就三句话:

  1. CPU 看 QPS 档位,4 核起步,不要盲目堆核数

  2. 内存按“堆内存 + 1GB”估算,别忘了线程栈和 Metaspace

  3. 带宽按 QPS × 响应大小算,洛杉矶 1Gbps 端口是天然优势

评论