首页/系统/服务器硬件与 RAID 速查/stressapptest 内存压测用法
内存与电源72 条

stressapptest 内存压测用法

stressapptest 是常用的在线内存压力工具:多线程读写与校验模拟真实负载,适合维护窗口内验证内存稳定性,与离线 memtest86+ 互补。

stressapptest 在线压测

stressapptest 用多个线程同时对内存做写入与校验,并叠加 CPU 与磁盘负载,模拟出接近真实业务的访问模式。相比只做单纯数据比对的工具,它更接近「压力下的稳定性验证」,因此常出现在服务器 burn-in 与换件复测流程里。它运行在操作系统内,与离线测试工具互补:离线覆盖全内存区域,在线验证真实负载下的表现。

基本信息

适用平台Linux(发行版仓库或源码编译,Apache-2.0 许可)
关键参数测试时长、使用内存量、线程数、写入模式
输出关注校验错误行、纠错记录、进程退出码
配合工具离线测试工具与 memtester 互补
执行窗口维护窗口内执行,提前准备回退方案
记录要求输出日志与结论一并归档

典型使用场景

  • 新机 burn-in:作为整机老化测试的内存部分
  • 换件复测:确认新内存条在负载下稳定
  • 间歇性故障排查:复现只在压力下出现的错误
  • 交付验收:作为稳定性测试项留存记录
  • 与内存纠错计数对照,验证错误是否可复现

典型压测

典型压测
# 常用参数组合:时长、内存量、线程数与写入模式
stressapptest -s 3600 -M 4096 -m 8 -W --printsec 10 2>&1 | tee sat.log
# -s 测试秒数   -M 使用内存(MB)   -m 线程数
# -W 全写模式   --printsec 进度输出间隔(秒)
# 测试期间观察内核侧是否出现纠错记录
dmesg -T | grep -iE 'edac|mce|memory error' | tail -10
# 结束后核对退出码与日志中的错误行
grep -iE 'error|mismatch|fail' sat.log | head

结果判读

现象含义后续动作
正常运行到结束且无错误行该轮验证通过归档日志,结合离线测试结论综合判断
日志出现校验不一致检测到内存数据错误保存日志,结合 EDAC 与 SEL 定位部件
进程异常退出资源或环境问题查看退出码与系统日志后再决定是否重跑
耗时远超预期内存量大或系统负载高在维护窗口内预留足够时间
内核侧出现纠错记录硬件层已记录问题以硬件侧记录为准安排后续处理
使用内存量不要超过系统可用内存:压到交换空间会引入大量磁盘 IO,既拖慢测试也改变故障表现方式。
压测会长时间占满内存与 CPU:业务高峰执行会直接影响线上服务,务必在维护窗口内进行。

易错点

  • 业务高峰直接跑大内存压测:业务受影响且测试结果不可信
  • 只看进程是否退出:不检查日志中的校验错误行,漏掉关键信息
  • 使用内存量超过可用容量:触发交换与回收,测试性质被改变
  • 不归档原始日志:出现争议时只有结论没有过程证据

数据来源与参考

  • stressapptest 项目文档
  • 运维实务整理
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌