centos mysql 慢查询、超时、连接数修改
2017-10-27 Frank 数据库
[TOC]
查看是否开启慢查询show variables like '%quer%' ;
开启慢查询
编辑vim /etc/my.cnf
在[mysqld]下面加入慢查询的配置语句long_query_time=1 #超过1秒的会记录
slow_query_log
#log_queries_not_using_indexes=0
重启服务
service mysqld restart
MySQL5.6+ long_query_time 无效 配置文件设置如下:
log_queries_not_using_indexes=0
或
set global log_queries_not_using_indexes=0;
测试查看日志#测试
select sleep(2) ;
# 查看日志路径
show variables like '%slow%';
#查看日志分析
[root@116 mysql]# mysqldumpslow -s r -t 10 /var/run/mysqld/mysqld-slow.log
Reading mysql slow query log from /var/run/mysqld/mysqld-slow.log
Count: 1 Time=2.02s (2s) Lock=0.00s (0s) Rows=1.0 (1), exam[exam]@localhost
select sleep(N)
Died at /usr/bin/mysqldumpslow line 162, <> chunk 1.
关于mysqldumpslow
-s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;
-t, 是top n的意思,即为返回前面多少条的数据;
-g, 后边可以写一个正则匹配模式,大小写不敏感的;
比如
/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log
得到返回记录集最多的10个查询。
/path/mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log
得到按照时间排序的前10条里面含有左连接的查询语句。
超时及进程数show processlist;
show variables like '%timeout%' ;
#默认28800
set interactive_timeout = 1800 ;
set wait_timeout = 1800 ;[mysqld]
wait_timeout=20
interactive_timeout=20
修改最大连接数
root登录
登录成功后执行以下语句查询当前的最大连接数:select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='MAX_CONNECTIONS';
执行以下语句修改最大连接数:
set global max_connections = 3600;
注意:这个方法只是临时的修改了最大连接数,重新启动MySQL服务后就还原了。
要彻底解决问题还是要修改my.cnf配置文件,这里使用VI来修改,输入命令:vi /etc/my.cnf 回车;打开文件后按“i”键进入编辑状态;
在“[mysqld]”下面添加“max_connections=3600”,按Esc键进入命令模式,输入“:wq”回车(保存并退出)。
执行:service mysql restart 重新启动MySQL服务;
[TOC]
## 查看是否开启慢查询
```sql
show variables like '%quer%' ;
```
## 开启慢查询
编辑vim /etc/my.cnf
在[mysqld]下面加入慢查询的配置语句
```
long_query_time=1 #超过1秒的会记录
slow_query_log
#log_queries_not_using_indexes=0
```
重启服务
```
service mysqld restart
```
MySQL5.6+ long_query_time 无效 配置文件设置如下:
```
log_queries_not_using_indexes=0
```
或
```
set global log_queries_not_using_indexes=0;
```
## 测试查看日志
```
#测试
select sleep(2) ;
# 查看日志路径
show variables like '%slow%';
#查看日志分析
[root@116 mysql]# mysqldumpslow -s r -t 10 /var/run/mysqld/mysqld-slow.log
Reading mysql slow query log from /var/run/mysqld/mysqld-slow.log
Count: 1 Time=2.02s (2s) Lock=0.00s (0s) Rows=1.0 (1), exam[exam]@localhost
select sleep(N)
Died at /usr/bin/mysqldumpslow line 162, <> chunk 1.
```
##关于mysqldumpslow
-s, 是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;
-t, 是top n的意思,即为返回前面多少条的数据;
-g, 后边可以写一个正则匹配模式,大小写不敏感的;
比如
/path/mysqldumpslow -s r -t 10 /database/mysql/slow-log
得到返回记录集最多的10个查询。
/path/mysqldumpslow -s t -t 10 -g “left join” /database/mysql/slow-log
得到按照时间排序的前10条里面含有左连接的查询语句。
##超时及进程数
```
show processlist;
show variables like '%timeout%' ;
#默认28800
set interactive_timeout = 1800 ;
set wait_timeout = 1800 ;
```
```
[mysqld]
wait_timeout=20
interactive_timeout=20
```
##修改最大连接数
root登录
登录成功后执行以下语句查询当前的最大连接数:
```
select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES where VARIABLE_NAME='MAX_CONNECTIONS';
```
执行以下语句修改最大连接数:
```
set global max_connections = 3600;
```
注意:这个方法只是临时的修改了最大连接数,重新启动MySQL服务后就还原了。
要彻底解决问题还是要修改my.cnf配置文件,这里使用VI来修改,输入命令:vi /etc/my.cnf 回车;打开文件后按“i”键进入编辑状态;
在“[mysqld]”下面添加“max_connections=3600”,按Esc键进入命令模式,输入“:wq”回车(保存并退出)。
执行:service mysql restart 重新启动MySQL服务;
>[MySQL开启慢查询](http://www.cnblogs.com/gzgccsu/archive/2013/01/23/2873598.html)
[ CentOS下mysql最大连接数设置 1040 too many connection](http://blog.csdn.net/testcs_dn/article/details/37880489)
发表评论 登录:
昵称