1 硬件环境
i7-6700, 32GB内存, SSD硬盘
2 启动脚本
MySQL启动后,要调整一下最大连接数(docker的MySQL默认150)
mysql -h 127.0.0.1 -P 13306 -u root -p # 默认是151 SHOW VARIABLES LIKE '%max_con%'; +---------------------------------------+-------+ | Variable_name | Value | +---------------------------------------+-------+ | max_connect_errors | 100 | | max_connections | 151 | | mysqlx_max_connections | 100 | | performance_schema_max_cond_classes | 100 | | performance_schema_max_cond_instances | -1 | +---------------------------------------+-------+ # 修改为100 SET GLOBAL max_connections = 10000;
3 打压脚本
先安装sysbench
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash sudo apt -y install sysbench
执行打压脚本之前,一定要改一下nofile(打压机器的)
ulimit -n 65535
docker启动脚本
#!/bin/bash NAME="perf_mysql" VOLUME="/home/coder4/docker_data/perf_mysql" PUID="1000" PGID="1000" MYSQL_DATABASE="perf" MYSQL_USER="perf" MYSQL_PASSWORD="perf123" mkdir -p $VOLUME # --memory 512M docker network create nw docker ps -q -a --filter "name=$NAME" | xargs -I {} docker rm -f {} docker run \ --hostname $NAME \ --name $NAME \ --cpus 1.8 \ --memory 1024M \ --volume "$VOLUME":/var/lib/mysql \ --env MYSQL_ALLOW_EMPTY_PASSWORD=true \ --env MYSQL_DATABASE=$MYSQL_DATABASE \ --env MYSQL_USER=$MYSQL_USER \ --env MYSQL_PASSWORD=$MYSQL_PASSWORD \ --env PUID=$PUID \ --env PGID=$PGID \ --ulimit nofile=65536:65536 \ -p 13306:3306 \ --network nw \ --detach \ --restart always \ mysql:8
上面的cpu根据限制进行修改
4 单写
打压脚本
#!/bin/bash HOST="127.0.0.1" PORT="13306" DB="perf" USER="perf" PASS="perf123" TABLES="5" SIZE="10000" THREADS="32" CMD="sysbench /usr/share/sysbench/oltp_insert.lua --mysql-host=$HOST --mysql-port=$PORT --mysql-user=$USER --mysql-password=$PASS --mysql-db=$DB --tables=$TABLES --table-size=$SIZE --report-interval=10 --time=120 --events=0 --threads=$THREADS" $CMD cleanup $CMD prepare $CMD run
1核
2核
3核
4核
5 单读
打压脚本
#!/bin/bash HOST="127.0.0.1" PORT="13306" DB="perf" USER="perf" PASS="perf123" TABLES="5" SIZE="10000" THREADS="32" CMD="sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=$HOST --mysql-port=$PORT --mysql-user=$USER --mysql-password=$PASS --mysql-db=$DB --tables=$TABLES --table-size=$SIZE --report-interval=10 --time=120 --events=0 --threads=$THREADS" $CMD cleanup $CMD prepare $CMD run
1核
2核
3核
4核