Ubuntu1604使用Sysbench压测Mysql以及Mysql 配置调优、慢查询

Sysbench压测

环境

VBOX的Ubuntu1604

安装Sysbench
sudo apt-get install sysbench
检测是否安装成功
sysbench --version
先创建名为sbtest的数据库,再运行创建测试数据的命令
sysbench --test=oltp --mysql-host=10.1.4.215 --mysql-db=sbtest --oltp-table-size=500000 --mysql-user=root --mysql-password=123456 prepare

创建之后的表

压测
连接信息参数
参数功能
–mysql-hostmysql地址
–mysql-portmysql端口
–mysql-user用户名
–mysql-password密码
执行参数
参数功能
–oltp-test-mode执行模式(simple、nontrx、complex)
–oltp-tables-count测试表的数量
–oltp-table-size测试表的记录数
–threads并发线程数
–time测试执行时间(秒)
–report-interval生成报告单的间隔时间(秒)
命令
命令功能
prepare准备测试数据
run执行测试
cleanup清除测试数据

执行压测

sysbench --num-threads=16 --test=oltp --mysql-table-engine=innodb --mysql-host=10.1.4.215 --mysql-db=sbtest --oltp-table-size=500000 --mysql-user=root --mysql-password=123456 run

压测结果
read:多少次读操作
write:多少次写操作
other:其他操作次数
total:总的操作次数
transactions(118.26 per sec.):数据库每秒执行的事务

CPU测试
sysbench --test=cpu --cpu-max-prime=5000 run
线程测试
sysbench  --test=threads --num-threads=1000 --thread-yields=200 --thread-locks=10 run

Mysql 配置调优

max_connections最大连接数

Mysql的最大并发连接数,默认151
最大连接数上线是16384
实际连接数是最大连接数的 85% 较为合适

// 当前配置中最大的并发连接数
SHOW VARIABLES LIKE 'max_connections';
// 当前实际的并发连接数
SHOW STATUS LIKE 'MAX_USED_CONNECTIONS';

修改配置文件,进行配置

vim /etc/mysql/mysql.conf.d/mysqld.cnf
max_connections=5000

Mysql会为每个链接创建缓存区,所以不应该盲目上调最大连接数

back_log优化请求堆栈

back_log是存放执行请求的堆栈大小,默认值是50
当数据库连接达到最大并发数,再有请求进来并不是拒绝请求,而是把请求存放在堆栈中,当释放连接,再从堆栈中取出。可以设置成最大连接数的20%-30%
在Mysql的文件中配置

back_log=90
innodb_thread_concurrency并发线程数

默认是0
并发线程数应该设置为CPU核心数的两倍,过大也不好,会导致调度大量的线程,损耗CPU的性能,导致运行变慢。

innodb_thread_concurrency=2
wait-timeout超时时间

超时时间,单位秒
默认超时为 8 小时,连接长期不是用且不断开,浪费资源。

wait-timeout=600
InnoDB缓存大小

InnoDB缓存指的是 数据表的数据 以及 部分索引数据(将一部分二叉树数据缓存起来查询就更快了)
innodb_buffer_pool_size是InnoDB的缓存容量,默认是128MB
InnoDB缓存的大小可以设置为主机内存的70%-80%

innodb_buffer_pool_size=400M

Mysql慢查询

慢查询会把查询耗时超过规定时间的SQL记录下来
可以利用慢查询日志,定位性能瓶颈
Mysql默认关闭了慢查询日志

// 查询慢查询是否开启,以及日志存放位置
SHOW VARIABLES LIKE 'slow_query%'

设置慢查询日志开关状态

slow_query_log = ON

配置查询超时时间,单位秒

long_query_time = 1
EXPLAIN模拟测试

EXPLAIN是mysql自带的模拟查询测试

EXPLAIN SELECT
	* 
FROM
	sbtest

执行结果
type为ALL就是执行了全表扫描

EXPLAIN SELECT
	* 
FROM
	sbtest 
WHERE
	id < 100

执行结果
在possible_keys为PRIMARY就是走了索引查询

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu 20.04上使用sysbenchMySQL进行试的步骤如下: 1. 安装MySQL数据库:如果还没有安装MySQL,可以使用以下命令安装: ``` sudo apt-get update sudo apt-get install mysql-server ``` 2. 安装sysbench使用以下命令安装sysbench: ``` sudo apt-get install sysbench ``` 3. 准备试数据:使用以下命令创建试数据库和试表: ``` sudo mysql -u root -p CREATE DATABASE sbtest; USE sbtest; CREATE TABLE sbtest (id INT NOT NULL AUTO_INCREMENT, col VARCHAR(14) NOT NULL, PRIMARY KEY (id)); INSERT INTO sbtest (col) VALUES ('sbtest'); ``` 4. 运行试:使用以下命令运行试: ``` sysbench --test=oltp --db-driver=mysql --mysql-host=localhost --mysql-user=root --mysql-password=<password> --mysql-db=sbtest --tables=1 --table-size=10000 --threads=16 --time=60 --report-interval=10 --percentile=99 run ``` 其中,`--mysql-password`选项后面的`<password>`需要替换为你的MySQL密码。 该命令将运行一个持续60秒的基准试,并记录每10秒的性能数据。试完成后,将输出TPS(每秒事务数)和其他性能指标。 如果想要记录TPMC(每分钟事务数),可以将试时间改为600秒,然后将TPS乘以60即可得到TPMC的值。 ``` sysbench --test=oltp --db-driver=mysql --mysql-host=localhost --mysql-user=root --mysql-password=<password> --mysql-db=sbtest --tables=1 --table-size=10000 --threads=16 --time=600 --report-interval=60 --percentile=99 run ``` 试完成后,将输出TPS、TPMC和其他性能指标。 注意:在运行sysbench试之前,最好先关闭MySQL查询缓存。可以通过在`/etc/mysql/my.cnf`文件中添加以下配置来关闭查询缓存: ``` [mysqld] query_cache_type = 0 query_cache_size = 0 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值