优化后的压力测试

max_connections=1024 最大并发连接*****
back_log=128 mysql能暂存的连接数量***
wait_timeout=60 指的是mysql在关闭一个非交互的连接之前所要等待的秒数****
interactive_timeout=7200 指的是mysql在关闭一个交互的连接之前所需要等待的秒数****
key_buffer_size=16M
query_cache_size=64M
query_cache_type=1
query_cache_limit=50M
max_connect_errors=20
sort_buffer_size=2M 管排序的***(一般去索引优化)
max_allowed_packet=32M 文件限制数据包大小,最大1G *****
join_buffer_size=2M 和sort_buffer_size差不多关联索引*** 不如优化索引
thread_cache_size=32 相当于连接池,线程缓冲 内存换cpu 1G=8 *****
innodb_buffer_pool_size=1024M innodb指定内存大小来缓冲数据和索引,最大可设置80%物理内存,一般设置不超过70%******
innodb_flush_log_at_trx_commit=1 双一标准控制redo******
innodb_thread_concurrency=0 设置innodb线程并发数量,0不限制***
innodb_log_buffer_size=32M redo_buffer日志缓存大小,与事务并发量有关****
innodb_log_file_size=128M 数据日志的大小,更大的设置可以提高性能*****
innodb_log_files_in_group=3 以循环的方式将日志文件写到多个文件。推荐3 *****
sync_binlog=1 双一标准******
binlog_cache_size=2M
max_binlog_cache_size=8M
max_binlog_size=512M
expire_logs_days=7
read_buffer_size=2M 读入缓冲区的** 不如优化索引
read_rnd_buffer_size=2M 随机读** 不如优化索引
bulk_insert_buffer_size=8M 插入数据缓存,提高插入效率 **


************************双一标准
innodb_flush_log_at_trx_commit=1
sync_binlog=1

dd if=/dev/zero of=/tmp/bigfile bs=1M count=1024 测试io吞吐量

 

主从优化参数:
5.7从库多线程MTS
必须开启GTID,binlog必须是row模式
gtid_mo=on
enforce_gtid_consistency=on
log_slave_updates=on
slave_parallel_type=logical_clock
slave_parallel_workers=16 #cpu核数的50%
master_info_repository=table
relay_log_info_repository=table
relay_log_recovery=on

 

锁表排查

--- 监控有没有锁等待
db01 [(none)]>show status like "innodb_row_lock%";

Innodb_row_lock_current_waits : 当前有多少锁等待
Innodb_row_lock_time : 一共发生过多少次锁等待

2.查看等待的事务 ***
select * from information_schema.INNODB_TRX where trx_state='LOCA WAIT';
trx_id,
trx_state,
trx_mysql_thread_id,
trx_query
3.查看锁源,谁锁的我!*****
select * from sys.innodb_lock_waits;
locked_table, 产生锁等待的表
locked_type, 锁的类型(全局锁、表级锁、行级锁)
waiting_trx_id, 等待事务的id
waiting_pid, 等待事务连接线程的id
waiting_query, 等待事务语句
waiting_lock_mode, 等待锁的类型(X,S)
blocking_pid, 锁源的事务连接线程id
blocking_trx_id, 锁源的事务id
sql_kill_blocking_connection 处理建议
select locked_table,
locked_type,
waiting_trx_id,
waiting_pid,
waiting_query,
waiting_lock_mode,
blocking_pid,
blocking_trx_id,
sql_kill_blocking_connection from sys.innodb_lock_waits;


4----根据锁源的pid,找到锁源sql的线程id *****
select * from performance_schema.threads where processlist_id=27;
select
thread_id,
name,
processlist_id from performance_schema.threads where processlist_id=27;


5---根据算远sql线程id,找到锁源的sql语句
select * from performance_schema.events_statements_current where thread_id=52;
select
thread_id,
event_name,
SQL_text
from performance_schema.events_statements_current where thread_id=52;

步骤1345可跳过第二步

posted on 2021-04-20 14:40  宇小白  阅读(247)  评论(0编辑  收藏  举报