#vps#dedicated-servers

2025 年,服务器和 VPS 究竟需要多少内存?

7 分钟阅读 - 2025年5月21日

hero section cover

正在为您的 VPS 或独立服务器选择合适的内存容量而苦恼吗?本详细指南将根据实际工作负载(包括网站托管、数据库、虚拟化、人工智能等)为您精确分析所需的内存容量。

内存容量规划是一项基于工作负载的计算,而非基准测试。配置过高,您将为闲置容量买单;配置不足,则会导致进程被终止、数据库从磁盘而非内存中读取数据,或者容器性能受限。 本指南针对我们最常遇到的工作负载(Web 托管、数据库、虚拟化、容器、AI 推理和游戏服务器)提供了具体的内存范围,并给出了在为列表之外的工作负载配置内存时应遵循的规则。

服务器中 RAM 的作用

RAM 存储着服务器当前正在处理的所有内容。包括 Web 服务器、数据库引擎和后台守护进程的进程内存;操作系统级别的页面缓存和磁盘 I/O 缓冲区;应用程序和容器的运行时内存;以及分配给虚拟机或容器工作负载的内存块。

RAM 容量规划与 CPU 容量规划的区别在于故障模式。CPU 资源耗尽时,进程运行速度会变慢;RAM 资源耗尽时,内核要么进行交换(速度较慢),要么由 OOM 杀手选定目标进程并终止它。前者体验不佳。 而后者会导致数据丢失。为 RAM 预留余量并非可有可无,而是防止系统在高负载下崩溃的关键。

按工作负载划分的 RAM

Web 和应用服务器

  • 轻量级 LAMP 或 LEMP 架构:1 至 2 GB
  • 带缓存(如 Redis)的 WordPress 或 CMS:2 至 4 GB
  • 电子商务(Magento、WooCommerce):4 至 8 GB
  • Node.js、Django 或 Rails 应用:2 至 6 GB

Redis 或 Varnish 等缓存层需要在应用程序基础内存需求之上额外分配独立内存。PHP-FPM 工作进程、数据库连接和反向代理都会并发消耗内存,因此关键指标是峰值并发量,而非空闲状态下的内存占用。

数据库服务器(SQL 和 NoSQL)

  • MySQL 或 PostgreSQL(小型):4 至 8 GB
  • MySQL 或 PostgreSQL(大型或高流量):16 至 64 GB
  • MongoDB 或 Redis(侧重内存):32 至 128 GB 或更多
  • Elasticsearch 或 OpenSearch 节点:每个节点 32 至 128 GB

目标是将工作集、索引以及频繁访问的行保存在内存中。一旦其中任何一项溢出到磁盘,无论 SSD 速度有多快,延迟都会成倍增加。

虚拟化主机(Proxmox、VMware、Hyper-V)

  • 轻量级 Linux 虚拟机:每台 2 至 4 GB
  • Windows 虚拟机:每台 8 至 12 GB
  • 主机控制面板(cPanel、Plesk、DirectAdmin):每个实例 4 至 8 GB
  • KVM 或 LXC 容器主机:32 至 128 GB 或更多

除虚拟机分配外,请始终为宿主操作系统预留 4 至 8 GB 内存。虽然容器在单个工作负载上的内存占用低于完整虚拟机,但其扩展方式不同,因此应着眼于密度和突发负载的余量,而非单个容器的大小。 如果主机使用 ZFS,还需考虑 ARC(自动缓存区域),该功能默认会无提示地占用多达系统内存的一半,并与虚拟机内存分配产生竞争(我们的 ZFS ARC 调优指南介绍了适用于虚拟机管理程序工作负载的合理上限)。

容器和微服务(Docker、Kubernetes)

  • 简单的 Docker 堆栈(Web、应用、数据库):8 至 16 GB
  • Docker Swarm 或 K3s 边缘节点:16 至 32 GB
  • Kubernetes 工作节点:32 至 128 GB
  • CI/CD 运行器和构建代理(GitLab、Jenkins):每个运行器 8 至 32 GB

注意长期运行的容器是否存在内存泄漏。基于 JVM 的工作负载(如 Kafka 和 Elasticsearch)需要更高的基准配置,因为堆内存会随使用而不断增长,其最终占用量往往高于预期。

AI 和 ML 推理

  • 小型模型(量化 BERT、Llama 7B):16 至 32 GB
  • 中型模型(13B 至 30B,量化):64 至 128 GB
  • 大型模型(40B+ 或未量化的中端模型):128 至 512 GB 或更多
  • 基于 GPU 的推理(Stable Diffusion、Whisper):32 至 128 GB,具体取决于卸载情况

量化将内存压力从 GPU 转移到了 CPU 内存,因此系统配置会根据您是在 GPU 上运行 fp16 还是在 CPU 上运行 4 位而发生显著变化。批量大小和提示词长度也会推高这些数值。我们的 AI 推理托管指南将更深入地探讨如何根据模型规模匹配合适的硬件。

游戏服务器

  • 《我的世界》(原版):2 至 4 GB
  • 《我的世界》(模组版):6 至 16 GB
  • 《Rust》、《ARK》或《7 Days to Die》:8 至 16 GB
  • 多实例托管节点:32 至 64 GB

专用工作负载

  • 视频转码(FFmpeg、Plex):16 至 64 GB
  • 备份或快照服务器:8 至 16 GB,若运行去重引擎则需更多
  • 防火墙或入侵检测系统(pfSense、Suricata):2 至 8 GB,若启用 NetFlow 或全包日志记录则需更多

不要依赖交换内存

交换空间的速度比 RAM 慢 10 到 100 倍。它的存在只是作为一道安全网,以便在内核面临内存压力激增时有地方可去,而非用于扩展可用内存。如果服务器在正常负载下就已触发交换,那就说明其内存配置不足,仅此而已。 《Linux 交换空间、OOM 杀手与 cgroups 如何相互作用》一文详细阐述了各种故障模式。

如何准确估算内存容量

  1. 应测量峰值而非平均值。请使用 htop, free -m, vmstat 1或您的 Kubernetes 指标,以确定整个流量周期内的峰值使用情况。日峰值、周批处理以及月度计费周期都至关重要。
  2. 为未来增长预留余量。应用程序扩展需预留 20% 至 50% 的空间。对于数据库,应根据数据集大小而非请求速率来扩展内存。对于多租户平台,需计算每个客户的资源占用量并进行累加。
  3. 规划时应考虑您能容忍的故障模式。读取副本内存不足会导致性能下降;主数据库内存不足则会破坏查询结果,甚至可能导致应用程序崩溃。请将内存资源投入到影响范围最大的环节。

内存是那种资源不足比超配更致命的规格。增加内存不会让受 CPU 限制的应用程序运行得更快,但配置过低会破坏系统稳定性。请根据实际监控数据和经过测试的峰值来确定规格,并预留余量。

FDC 提供配备高内存配置和多区域不限流量带宽的专用服务器VPS 服务

博客

本周特色

更多文章
iperf3 教程:在 Linux 和 Windows 上测试网络速度
#bandwidth#server-performance

iperf3 教程:在 Linux 和 Windows 上测试网络速度

在 Linux 和 Windows 系统上安装 iperf3、运行带宽测试并调整 TCP 缓冲区,以获得准确结果。涵盖 UDP、双向及 10GbE+ 测试

10 分钟阅读 - 2026年5月7日

#server-performance

针对 Linux 服务器工作负载优化的调优配置文件

16 分钟阅读 - 2026年6月9日

更多文章