“Mysql慢查询导致db卡 diskIO高”的版本间的差异
跳到导航
跳到搜索
docker>Evan (→参考) |
小 (导入1个版本) |
2019年10月14日 (一) 13:52的版本
2017故障
磁盘I/O很高无非是下面几个原因引起: 磁盘子系统设备性能差,或采用ext2/ext3之类文件系统,或采用cfq之类的io scheduler,所以IOPS提上不去; SQL效率不高,比如没有索引,或者一次性读取大量数据,所以需要更多的I/O; 可用内存太小,内存中能缓存/缓冲的数据不多,所以需要更多的I/O。 处理过程无非就是 iotop ,打开 slow query log 然后 show full processlist mysql(root (none))>show variables like '%slow%'; +---------------------+----------------------------------------------------------+ | Variable_name | Value | +---------------------+----------------------------------------------------------+ | log_slow_queries | OFF | | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | /mysql/data/VM_slow.log | +---------------------+----------------------------------------------------------+ ##由上面可见 没打开 ,自己临时打开一下 set global slow_query_log='ON'; ##最长的那些一般就是了 这里为了安全我 省略了 sorry mysql(root (none))>show full processlist; +---------+-----------------+--------------------+----------+---------+---------+------------------------+------------------------------------------------------------------------------------------------------------------------------ | Id | User | Host | db | Command | Time | State | Info | +---------+-----------------+--------------------+----------+---------+---------+------------------------+------------------------------------------------------------------------------------------------------------------------------ | 1 | event_scheduler | localhost | NULL | Daemon | 5602073 | Waiting on empty queue | NULL | | 2062319 | root | 127.0.0.1:69 | games | Sleep | 65 | | NULL +---------+-----------------+--------------------+----------+---------+---------+------------------------+------------------------------------------------------------------------------------------------------------------------------
以前的
mysql慢查询导致db卡 diskIO高 今天海岛反映有几个服卡 前提知识 mysql> show variables like '%slow%'; +——————+——-+ | Variable_name | Value | +——————+——-+ | log_slow_queries | ON | | slow_launch_time | 2 | +——————+——-+ 2 rows in set (0.00 sec) show variables like ‘%log%’; ######### 1、开启慢查询 找到 MySQL 的配置文件 ,my.cnf (Windows 为 my.ini ),在 MySQL 下增加下面几行: 添加在 [mysqld]后面 long_query_time = 0.01 #long_query_time = 1 slow_query_log=1 slow_query_log_file = /var/log/mysql/slow.log # 这个在 mysql5.1测试过不行 #log-slow-queries= /usr/var/slowquery.log 上面的 2 是查询的时间,即当一条 SQL 执行时间超过2秒的时候才记录,/usr/var/slowquery.log 是日志记录的位置。 然后重新启动MySQL服务 或者临时打开 set global slow_query_log='ON'; 2、 MySQL 配置文件的位置 Windows:Windows 的配置文件为 my.ini,一般在 MySQL 的安装目录下或者 c:Windows 下。 Linux:Linux 的配置文件为 my.cnf ,一般在 /etc 下。 #################### 处理 mysql -uroot -p -P3330 -h 10.142.30.67 -e 'show full processlist' >s11_processlist.txt mysql -uroot -p -P3330 -h 10.142.30.67 -e 'show processlist' >s11min_processlist.txt 这样就可以得知哪些慢的东西 了 数据中心采集的问题,有可能会导致全服都卡的。 s11 s70 s97 s128 s135 db卡 后来 下午也卡 但没有lock 什么 的 就判定是网络喽
参考
MySQL占用IO过高解决方案 http://www.111cn.net/database/mysql/116614.htm
MySQL慢查询日志与磁盘IO http://blog.csdn.net/qq_33290787/article/details/51916366
mysql 慢查询测试 http://blog.linuxchina.net/?p=1574
Mysql 慢查询和慢查询日志分析 http://www.cnblogs.com/wrmfw/archive/2011/09/05/2166929.html