跳到主要内容

性能测试常见操作

创建swap内存

fallocate -l 16G /swapfile   # 创建一个 4GB 的交换文件
chmod 600 /swapfile # 设置权限
mkswap /swapfile # 初始化交换空间
swapon /swapfile # 启用交换空间

这样机器就拥有了16G的swap缓存,可以增加机器内存。

解除OS性能限制即修改内核参数

可参考:u1s1

sysctl -w net.ipv4.ip_local_port_range="1024 65535"
sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_timestamps=1
ulimit -n 250000

k6性能测试

官方文档:k6-docs

测试脚本

import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
iterations: 10,
};

// The default exported function is gonna be picked up by k6 as the entry point for the test script. It will be executed repeatedly in "iterations" for the whole duration of the test.
export default function () {
// Make a GET request to the target URL
http.get('http://66.66.66.3:6666');

// Sleep for 1 second to simulate real-world usage
sleep(0.1);
}

测试命令

k6 run --vus 75000 --duration 300s pk.js

Stream测试性能时限定CPU核数

设置环境变量,限定4核:export OMP_NUM_THREADS=4

编译

gcc -o3 -mcmodel=medium  -fopenmp  -DSTREAM_ARRAY_SIZE=100000000  -mtune=native -march=native  -DNTIME=10000  stream.c -o  stream.p

执行测试:./stream.p

Stress压测

stress是Linux的一个压力测试工具,可以对CPU、Memory、IO、磁盘进行压力测试

安装

#下载源码
https://github.com/ColinIanKing/stress-ng/releases

#解压
tar -zxvf stress-ng-0.14.01.tar.gz

#编译
cd /home/stress-ng/stress-ng-0.14.01
make && make install

常用测试命令

#产生2个worker做圆周率算法压力
stress-ng --cpu 2 --cpu-method pi

#产生2个worker迭代使用30多种不同的压力算法,包括pi, crc16, fft等
stress-ng --cpu 2 --cpu-method all

#产生2个worker调用socket相关函数产生压力
stress-ng --sock 2

#strss-ng将压力指定到指定CPU上
stress-ng --sock 4 --taskset 0-1,3

#产生2个worker读取tsc产生压力
stress-ng --tsc 2

#压测cpu,把6个cpu压满,开启6个CPU进程执行sqrt计算,180秒后结束
stress-ng --cpu 6 --timeout 180

#压测内存,压20G内存,开启4个进程分配内存,每次分配20GB内存,保持180秒后释放,180秒后退出。
stress-ng --vm 4 --vm-bytes 20G --vm-hang 180 --timeout 180s

#压测磁盘io,开启5个磁盘IO进程,每次写20GB数据到磁盘,180秒后退出
stress-ng --hdd 5 --hdd-bytes 20G --timeout 180s

#IO密集型测试
模拟1个worker调用sync刷新内存缓冲区write到磁盘。
stress -i 1 --hdd 1 --timeout 600

系统监控

#查看系统平均负载
uptime

#查看CPU使用情况
mpstat -P ALL 5

#查看进程的CPU使用情况
pidstat -u 3