首页 tutorials VPS 内存超卖怎么看?用 stress-ng、PSI 与 swap 延迟做压力测试

VPS 内存超卖怎么看?用 stress-ng、PSI 与 swap 延迟做压力测试

Hostease高防服务器5折优惠

TL;DR:本文帮助站长解决一个很实际的问题:如何用一套可复用、低风险的方法判断 VPS(虚拟专用服务器)是否存在明显内存超卖。具体做法是用 stress-ng 制造可控内存压力,同时观察 Linux(开源类 Unix 操作系统)的 PSI(Pressure Stall Information,资源压力停顿统计)、vmstatiostat 和 swap(交换分区,把内存压力转移到磁盘的机制)延迟,判断问题是自己应用吃内存,还是节点层面已经紧张。

先说明边界:这不是教大家把商家节点压爆,也不是一次测试就给某个 VPS(虚拟专用服务器)贴“超卖”标签。内存超卖本质上是资源承诺和实际可用能力之间的差异,短时间抖动、邻居负载、磁盘 I/O(输入输出)拥塞、内核回收策略都会影响结果。真正有价值的判断,应来自“压力曲线 + 停顿时间 + swap 行为 + 多时段复测”。如果你只想买来跑 WordPress、轻量 API(应用程序接口)或爬虫,这套方法也能帮你在 15 到 30 分钟内筛掉明显不稳的机器。

测试前先看什么

在我的测试环境中,最容易误判的是把“内存占用高”直接等同于“超卖”。Linux(开源类 Unix 操作系统)会主动把空闲内存用于 page cache(页缓存,用来加速文件读写),所以 free -m 里 used 很高并不一定是坏事。真正要看的,是压力出现时系统有没有长时间等待内存回收、有没有频繁 swap、应用响应时间有没有被拖慢。

建议先记录空载基线,至少保留 3 到 5 分钟数据:

free -m
cat /proc/pressure/memory
vmstat 1 10
iostat -xz 1 10
swapon --show

这里重点看四类信号。/proc/pressure/memorysomefullvmstatsisoiostat 看 await;同时确认 swap 是否存在。没有 swap 的小内存 VPS(虚拟专用服务器)在压力测试中更容易直接 OOM(Out Of Memory,内存耗尽后进程被杀),这不一定说明超卖,但说明容错空间很小。

选机阶段建议先读 虚拟主机 vs. VPS 对比美国 VPS 选购五大核心指标;如果使用 Hostease 这类面向中文用户的海外 VPS,排查跨境访问时,可结合 美国服务器跨境访问测试美国 VPS 速度影响因素 一起看。

空载基线与压力曲线

stress-ng 压测怎么设才安全

stress-ng 的作用是制造可重复的压力。对 2 GB VPS(虚拟专用服务器)来说,我不建议一上来就吃满 95% 内存,而是按 50%、70%、85% 三档递增,每档 3 到 5 分钟。这样既能看到曲线变化,也能降低把生产服务挤掉的风险。正式业务机上测试前,先停掉非必要定时任务,并确认你有 SSH(Secure Shell,远程登录协议)备用入口。

以 2 GB 内存为例,可以先用 1 GB 起步:

stress-ng --vm 1 --vm-bytes 1G --vm-keep --timeout 180s --metrics-brief

如果 1 GB 压力下 PSI(Pressure Stall Information,资源压力停顿统计)仍然很低,应用响应也正常,再把压力提高到 1.4 GB:

stress-ng --vm 1 --vm-bytes 1400M --vm-keep --timeout 180s --metrics-brief

安全判断可以用一个粗略经验:如果 memory some avg10 偶尔到 5% 以内,测试结束后迅速回落,通常只是短期回收压力;如果 some avg10 长时间超过 10%,同时 full avg10 出现连续非零,应用请求开始明显变慢,就要谨慎了。full 代表所有非 idle 任务都在等资源,这比单纯内存占用高更值得关注。

PSI、swap 和磁盘延迟要一起看

很多便宜 VPS(虚拟专用服务器)的内存问题,最终会表现成磁盘延迟问题。原因很简单:内存不够时系统开始换页,swap 读写落到虚拟磁盘;如果节点本身 I/O(输入输出)也拥挤,几百毫秒的磁盘等待会把 Web 响应拖到秒级。只看 free -m 或单次跑分,很容易漏掉这一层。

观察项相对健康的表现需要警惕的表现
PSI memory some压力结束后 1 到 2 分钟内回落avg10 长时间超过 10%,高峰不断累积
PSI memory full多数时间为 0 或偶发极低值连续非零,应用明显卡顿
vmstat si/so短时间少量 swap,随后停止持续换入换出,数值长期不为 0
iostat await压力后可恢复到低延迟区间swap 期间 await 飙升且不回落

可以用下面的命令把关键数据同时记录下来,方便回看:

mkdir -p ~/memtest-log
while true; do
  date
  cat /proc/pressure/memory
  free -m
  vmstat 1 2 | tail -1
  iostat -xz 1 2 | tail -n +4
  sleep 5
done | tee ~/memtest-log/memory-pressure.log

PSI 与 swap 延迟关联

如何区分自己的应用问题和节点问题

论坛里常见争论是:用户说商家超卖,商家说用户程序有问题。客观一点看,两边都可能对。一个 PHP(超文本预处理器)站点如果开了太多 worker(工作进程),或者 Java(跨平台运行时与编程语言)应用堆内存设置不合理,2 GB VPS(虚拟专用服务器)很容易自己把内存打满。判断前最好做两个对照。

第一组对照是“业务关闭 vs 业务开启”。先在低流量时段停掉应用,只保留 SSH(Secure Shell,远程登录协议)和监控,再跑 50% 压力;然后恢复应用,重复同样压力。如果关闭业务后 PSI(Pressure Stall Information,资源压力停顿统计)明显改善,说明应用自身占用是主要变量。第二组对照是“不同时段复测”。凌晨、工作日下午、晚高峰各跑一次 3 分钟压力。如果只有晚高峰出现明显 swap 延迟,节点邻居负载或底层 I/O(输入输出)竞争的嫌疑会更大。

一套可复用的判断阈值

下面这组阈值不是行业标准,只是我在社区测试中常用的筛选线,适合用于初筛便宜 VPS(虚拟专用服务器):

  • 轻度可接受:70% 内存压力下 memory some avg10 偶发低于 5%,full 基本为 0,测试结束后 60 秒内恢复。
  • 需要观察:70% 压力下 some avg10 多次超过 10%,但没有持续 swap,业务响应只是短暂变慢。
  • 不适合生产:50% 到 70% 压力就出现持续 si/sofull avg10 连续非零,SSH(Secure Shell,远程登录协议)输入明显卡顿。
  • 高度可疑:空载时 PSI(Pressure Stall Information,资源压力停顿统计)已有明显压力,或者没有跑 stress-ng 时 iostat await 长期处于高位。

对小型 WordPress 站点,2 GB VPS(虚拟专用服务器)如果在 1.2 到 1.4 GB 可控压力下表现稳定,通常能覆盖日常访问峰值;对 Java(跨平台运行时与编程语言)、搜索服务、数据库同机部署这类场景,建议直接从 4 GB 或更高内存起步,并保留 20% 到 30% 空闲余量。不要把“刚好不 OOM(Out Of Memory,内存耗尽)”当成稳定。

测试时的注意事项

压测最好在新机器、测试机或低峰期执行。生产机器上不要同时跑 CPU(中央处理器)、内存、磁盘三类满载测试,否则你看到的可能是混合瓶颈,而不是内存超卖。也不要把测试时间拉太长,3 到 5 分钟足以发现很多低端节点的问题;如果要做长期稳定性评估,应改用业务压测工具和监控平台,而不是一直开着 stress-ng

另外,商家条款可能限制压力测试。执行前应确认服务条款是否允许 benchmark(基准测试)或 stress test(压力测试)。如果条款不明确,建议把压力控制在自己套餐标称资源以内,例如 2 GB 内存机器只压到 1.4 到 1.6 GB,不要故意制造 OOM(Out Of Memory,内存耗尽)风暴。测试日志要保留时间戳、命令和结果,这样向工单反馈时更容易沟通。

总结:别只看内存大小,要看压力恢复能力

VPS(虚拟专用服务器)内存超卖的核心判断,不是“used 是否很高”,而是“在合理压力下,系统有没有长时间停顿、有没有持续 swap、磁盘延迟是否被拖高、压力结束后能否快速恢复”。stress-ng 负责制造可控压力,PSI(Pressure Stall Information,资源压力停顿统计)负责告诉你任务是否在等资源,vmstatiostat 则把 swap 与 I/O(输入输出)后果暴露出来。

如果你正在挑选低价 VPS(虚拟专用服务器),建议按“空载基线 5 分钟 → 50% 内存压力 3 分钟 → 70% 压力 3 分钟 → 晚高峰复测”执行;只要 50% 到 70% 压力就出现明显 memory full 和持续 swap,就不要把它放进生产链路。对跨境站点或客户业务,推荐把内存测试结果和线路、备份、工单响应一起评估,而不是只追求最低月付价格。

本文来自网络,不代表WHT中文站立场,转载请注明出处。https://www.webhostingtalk.cn/tutorials/vps-memory-oversell-stress-psi-swap/
Raksmart新用户送100美元红包
下一篇
VPS 内存压力测试与资源停顿示意图

已经没有了

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

邮箱: contact@webhostingtalk.cn

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部