Skip to content

加压测试问题记录

IO 加压断连

问题描述:

使用stress命令加压时与测试板连接断开。

bash
# stress --vm 2 --vm-bytes 128M

stress: info: [xxxx] dispatching hogs: 0 cpu, 0 io, 0 vm, 0 hdd

Network error: Software caused connection abort

Session stopped

原因分析:

  1. eXtremeDB 预先申请的内存过大导致加压后内存超限(排除)

    尝试减小预设的数据库大小,但是问题仍然存在。eXtremeDB 预先malloc的内存是虚拟内存,只有在使用时才会映射到物理内存上,所以应该与预设的数据库大小无关。

  2. 使用top命令查看内存占用量时,发现stresscpu占用率将近100%

    查找关于stress命令的资料发现stress内存加压的默认方式是不断的申请和释放指定大小的内存,CPU占用率极高,使用以下指令可以使stress任务一直占用内存而不立即释放:

    bash
    stress --vm 2 --vm-bytes 128M --vm-keep # 任务一直占用内存不释放
    stress --vm 2 --vm-bytes 128M --vm-hang 5 # 任务分配到内存后转入睡眠状态 5 秒,然后释放内存,一直重复执行(分配的内存在5秒后释放掉)

混合加压时加上磁盘加压断连

命令及输出如下:

bash
# stress --cpu 4 --io 4 --hdd 2 --vm 2 --vm-bytes 128M --vm-keep
stress: info: [xxxx] dispatching hogs: 4 cpu, 4 io, 2 vm, 2 hdd

Network error: Software caused connection abort

Session stopped

猜测原因:-hdd 不加参数--hdd-bytes默1G,占用过多系统资源。

基于 VitePress 构建