zl程序教程

您现在的位置是:首页 >  其它

当前栏目

proxysql压测

压测
2023-09-11 14:21:08 时间

【1】测试架构

(1.1)机器架构

IP        server-id    db-version  desc

192.168.148.149  1493306    8.0.22    master(gtid)、proxysql 2.2.2-11

192.168.148.176  1793306    8.0.22    slave(gtid)

192.168.148.185  1853306    8.0.22    slave(gtid)

(1.2)mysql 与 proxysql配置

mysql主库执行:

-- mysql主库执行
create user repl@'192.168.191.%' identified by '123456';
grant replication client,replication slave on *.* to repl@'192.168.191.%';

create user proxysql@'192.168.191.%' identified by '123456';
grant all privileges on *.* to proxysql@'192.168.191.%';

create user monitor@'192.168.191.%' identified by '123456';
grant all privileges on *.* to monitor@'192.168.191.%';

mysql从库执行:

change master to
master_host='192.168.191.149',
master_user='repl',
master_password='123456',
master_auto_position=1;

start slave;
set global read_only=1;

proxysql 执行:

# (1)监控
set mysql-monitor_username='monitor';
set mysql-monitor_password='123456';
set mysql-monitor_enabled='true';

UPDATE global_variables SET variable_value='2000' 
WHERE variable_name IN ('mysql-monitor_connect_interval','mysql-monitor_ping_interval','mysql-monitor_read_only_interval');

load mysql variables to runtime; 
save mysql variables to disk;

# (2)用户
insert into mysql_users(username,password,active,default_hostgroup) values('proxysql','123456',1,1);
load mysql users to runtime; 
save mysql users to disk;

 

 

【2】1主1从压测

前置信息:

  网络延迟,内网 0.5-1ms

(2.1)proxysql配置

监控和连接相关信息已经在 (1.2)中配置好;

mysql_threads=4(这个参数表示proxysql能利用的与后面Mysql的线程数,默认4线程,也就是说CPU最高可以达到400%)

# 服务器
insert into mysql_servers(hostgroup_id,hostname,port) values(1,'192.168.191.149',3306);
insert into mysql_servers(hostgroup_id,hostname,port) values(2,'192.168.191.176',3306); 

# 复制组
insert into mysql_replication_hostgroups(writer_hostgroup,reader_hostgroup) values(1,2);

# 查询规则
insert into mysql_query_rules(rule_id,active,match_pattern,destination_hostgroup,apply) values (1,1,'^select',2,1);
load mysql servers to runtime;
load mysql query rules to runtime;
save mysql servers to disk;
save mysql query rules to disk;

(2.2)mysql 插入 与 proxysql 插入压测命令

mysql 插入: 

sysbench oltp_insert --mysql_storage_engine=innodb --db-driver=mysql --mysql-host=192.168.191.149 --mysql-port=3306 --mysql-user=proxysql --mysql-password=123456 --mysql-db=test --threads=4 --table_size=2000000 --tables=4  --time=120 run

 

结果:

TPS:3305
General statistics: total time: 120.0043s total number of events: 396720 Latency (ms): min: 0.39 avg: 1.21 max: 650.67 95th percentile: 1.37 sum: 478812.97

proxysql 插入:

  命令就是换了一个端口为 6033而已

SQL statistics:
    transactions:                        329822 (2743.12 per sec.)
    queries:                             329822 (2743.12 per sec.)

General statistics:
    total time:                          120.2332s
    total number of events:              329822

Latency (ms):
         min:                                    0.46
         avg:                                    1.45
         max:                                 2602.47
         95th percentile:                        1.34
         sum:                               479625.40

(2.3)proxysql与mysql 同机器压测 insert

  

 

(2.4)proxysql与 mysql不同机器的 select

  

(2.5)proxysql与mysql不同机器上的 insert

  

 

【结论】

性能方面:

(1)当proxysql 与 mysql 在同一台机器上的时候,效率几乎相同

(2)当proxysql 与 mysql 不在同一台机器上的时候,

  insert:proxysql 有90%左右 mysql直连的性能

  select:proxysql 有75%(70-80浮动) 左右 mysql直连的性能

  delete:proxysql 有75%(70-80浮动) 左右 mysql直连的性能

  update:proxysql 有75%(70-80浮动) 左右 mysql直连的性能