thread local性能 c++_记一次MariaDB性能问题处理

    问题现象:

    客户反馈早上8.30-8.45业务推流期间,数据库夯住。其他时间数据库正常。

    登录排查发现存现很多的慢sql,且存在死锁信息。

    执行查看慢sql的执行计划,发现sql并不慢,而且执行计划也很好。

    由于监控信息不全,通过sar -A -f /var/log/sa/sa07查看到io问题明显,等待队列高达19,一次io需要50ms左右

cf09db45e6f806141f1a960831450137.png

    继而排查发现高并发时,同一个sql大量执行,存在的状态为sending data和copying to tmp table,查看对应的执行计划中使用了filesort,故问题很清晰。

    继续查看sa07日志,发现出现问题时,swap使用完了

355084add6c46fc4b9bfb94c54aeb0c2.png

    问题解决:    

重启数据库,swap并发释放,后续通过重启服务器,问题解决。     

    后续优化:

1、配置sawp回收参数

登录系统vi /etc/sysctl.conf 配置文件

vm.swappiness=10

vm.dirty_background_ratio=5

vm.dirty_ratio=40

vm.dirty_writeback_centisecs= 100

vm.dirty_expire_centisecs= 500

   保存退出执行sysctl  -p 立即生效

2、注释掉innodb_thread_concurrency=16和thread_concurrency=8参数;

3、简易性能收集脚本

#/bin/bash

nohup vmstat 1 1000 >> /tmp/cpu.log &

nohup iostat -dxk 1 1000 >> /tmp/io.log &

nohup top -bn 1000 >> /tmp/top.log &

nohup iotop -obn 1000 >> /tmp/iostat.log &

nohup sar -n DEV  1 1000 >> /tmp/bond.log &

USER=root

PASSWORD=root

SOCKET=/tmp/mysql.sock

for((i=1;i<=500;i++));  

do   

netstat -i >> /tmp/nt.log

/usr/local/mysql/bin/mysql -u$USER -p$PASSWORD -S $SOCKET -e "tee /tmp/mysqlprocess.log;show processlist;select '\n';" 

/usr/local/mysql/bin/mysql -u$USER -p$PASSWORD -S $SOCKET -e "tee /tmp/engine.log;show engine innodb status \G;select '\n'"

#/usr/local/mysql/bin/mysql -u$USER -p$PASSWORD -S $SOCKET -e "tee /tmp/mysqltrx.log;select now(),(UNIX_TIMESTAMP(now()) - UNIX_TIMESTAMP(a.trx_started)) diff_sec,b.id,b.user,b.host,b.db,d.SQL_TEXT from information_schema.innodb_trx a inner join information_schema.PROCESSLIST b on a.TRX_MYSQL_THREAD_ID=b.id and b.command = 'Sleep' inner join performance_schema.threads c ON b.id = c.PROCESSLIST_ID inner join performance_schema.events_statements_current d ON d.THREAD_ID = c.THREAD_ID;select '\n'"

sql/bin/mysql -u$USER -p$PASSWORD -S $SOCKET -e "tee /tmp/mysqltrx.log;select now();select * from information_schema.innodb_trx;select '\n'"

sleep 5

done  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值