为操作系统、持久化服务和具有余量的真实并发选择内存。在衡量哪些任务繁忙、它们是否并行运行以及用户实际经历哪些延迟之后,再选择 CPU。
分别描述正常工作和高负载工作
仅凭访客数量是薄弱的容量规划输入。一个请求可能提供缓存文件,而另一个请求可能生成报告或查询许多表。列出将共享 VPS 的 Web 工作进程、数据库、缓存、队列消费者和维护任务。描述正常并发量和最繁忙的预期操作。将计划导出、软件包更新和部署纳入考虑,而不是把它们当作不可见的后台活动。
对于现有项目,收集包含繁忙时段的一段有代表性的时期。在记录资源使用情况的同时记录响应时间和错误。对于新项目,创建一个具有真实请求形态和数据规模的小型测试。你的初始估算不会完美;有用的目标是建立一个有记录的起点,以便在交付后与实测行为进行比较。
在添加进程之前构建内存预算
内存需求来自系统、持久化应用服务、每个工作进程的使用量以及临时操作。将工作进程的内存占用乘以计划并发量是一种粗略的规划工具,而不是保证,因为共享内存和缓存会使总量变得复杂。观察负载下的实际进程。留出足够空间,使维护任务不会迫使应用争夺每一个剩余页面。
数据库设置可能意外地成倍增加内存使用。PostgreSQL 文档说明 work_mem 适用于查询操作,并且多个操作或会话可以并发运行。因此,单独看起来适中的设置可能产生更大的系统影响。阅读数据库自身的指导,测试真实并发情况,避免将标称的每一 GB 都分配给单个缓存。
区分 CPU 利用率与有效并行性
处理器数量告诉你向客户机呈现了多少执行资源,而不是你的软件能多高效地利用它们。一个繁忙线程可能限制应用,而其他核心保持空闲。增加工作进程有助于处理独立请求,但也可能增加数据库争用和内存需求。在假设核心数翻倍就能使吞吐量翻倍之前,先检查应用的并发模型。
KVM 为虚拟机提供它们自己的虚拟硬件。它不会把每个 vCPU 标签变成跨主机和处理器代际完全相同的基准测试结果。在可用的情况下,比较列出的 CPU 型号和分配条款,然后用你自己的工作负载评估该服务。避免根据与你的应用并不相似的简短合成分数得出购买结论。
寻找压力和等待,而不仅仅是平均值
系统可能感觉缓慢,但平均 CPU 百分比并不高。进程可能在等待存储、内存回收或另一个服务。Linux 内核的压力失速信息在受支持的系统上暴露 CPU、内存和 I/O 失速信息。这些信号有助于在常规利用率指标和应用计时之外识别资源争用。
结合阅读各项指标。持续的内存压力、交换、分配失败和缓慢请求指向与单个繁忙计算工作进程不同的干预措施。存储等待可能说明需要更改查询或使用不同的磁盘配置。外部 API 延迟不会通过增加本地 RAM 来修复。在决定增加哪种资源之前,先解释观察到的约束。
| 观察到的行为 | 要调查的问题 | 可能的下一步 |
|---|---|---|
| 一个线程繁忙,空闲核心闲置 | 这项工作能否并行运行? | 改进任务或更改工作进程设计 |
| 生成报告期间出现内存压力 | 有多少操作重叠? | 限制并发或增加经过测试的余量 |
| 请求缓慢且存在 I/O 等待 | 哪些读取或写入被延迟? | 检查查询和存储行为 |
| CPU 和内存偏低,请求缓慢 | 是否有依赖项在延迟响应? | 测量下游调用 |
具有明确假设的规划示例
设想一个小型应用,有两个 Web 工作进程、一个数据库和一个队列消费者。团队在普通请求和报告生成任务期间测量这些服务。它发现允许同时生成四份报告会急剧提高内存需求,同时延迟正常流量。团队没有立即购买最大的方案,而是限制报告并发量并再次测量结果。
如果调整后的工作负载仍然需要更多内存,那么升级现在回应的是观察到的需求。如果队列仍然受 CPU 限制,并且独立作业可以并发运行,那么更多执行资源可能是合适的。这些是示例决策,不是 SwissOctet 方案的性能数据。将你自己的测量结果和约束与所选配置一起保存。
为下一次测量留出清晰的路径
定义将触发审查的迹象:响应时间恶化、反复出现内存压力、队列增长或工作负载变化。保持监控足够轻量,以免它成为新的瓶颈。在添加功能或大型数据集后重新评估,避免在真正问题是无界进程或慢查询时反复升级。
SwissOctet 的 VPS 系列公开 CPU 和内存规格以及选定的资源选项。在添加额外项后阅读最终配置,包括计费周期和总额。在依赖升级安排之前,与在线运营商确认这些安排。有用的 VPS 规格是能够以合理余量运行实测工作负载,并且下一步清晰可理解。
您的实用清单。
- 清点服务和维护工作。
- 测量正常时段和繁忙时段的并发量。
- 为持久内存和临时内存做预算。
- 检查 CPU 工作能否并行运行。
- 比较压力、利用率和应用计时。
- 定义何时审查配置。
重要细节。
我应该按每月访客数来确定 VPS 的规格吗?+
将访客数量作为背景信息,然后测量请求复杂度、并发量、数据规模和后台工作。相同的访客数量可能产生不同的负载。
更多 RAM 总是能让服务更快吗?+
不能。当内存是约束或能启用有用的缓存时,它会有帮助,但并不能解决所有 CPU、存储或外部依赖延迟。
vCPU 数量翻倍会使性能翻倍吗?+
不会。并行性、处理器特性、争用和应用设计决定额外容量有多大用处。
前往来源。
这些参考资料支持本指南中的技术概念。在更改生产系统之前,请遵循当前文档。
- Linux 内核:压力停滞信息 docs.kernel.org
- PostgreSQL:资源消耗 www.postgresql.org
- KVM 项目:内核虚拟机 www.linux-kvm.org
由 SwissOctet 提供编辑指导。示例仅作说明。服务规格、可用选项和合同条件必须单独核实。