MySQL异常问题排查
-
查看MySQL进程
如果存在“太多连接”异常情况则不能使用这一账户查看异常,所及建议保留一个额外的连接以供有权限的账户使用SUPER权限,以确保管理员始终能连接和检查系统使用这一权限。
-
show processlist
或者show full processlist。如果不使用该FULL关键字,则每个语句的前100个字符都将显示在该Info字段中。
-
%MySQL_HOME%/bin/mysqladmin processlist
不登录mysql可以用这一方法查看
-
INFORMATION_SCHEMA PROCESSLIST
查看该表得到信息和上面两种方法一致
-
performance_schema.threads表
访问threads表不需要互斥锁,对服务器性能影响最小。INFORMATION_SCHEMA.PROCESSLIST和SHOW PROCESSLIST由于需要互斥锁而具有负面的性能后果。performance_schema.threads还显示有关后台线程,哪些信息在INFORMATION_SCHEMA.PROCESSLIST和SHOW PROCESSLIST中没有,这意味着performance_schema.threads可以用来监视活动的其他线程信息源。
-
-
kill mysql进程
可以通过mysql安装路径下的bin/mysqladmin 脚本杀掉mysql进程示例:
[root@shuju-shumeng-qianzhiku bin]# ./mysqladmin processlist -uroot -pDtDream0209 mysqladmin: [Warning] Using a password on the command line interface can be insecure. +-----+------+------------------+-----------+---------+------+----------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----+------+------------------+-----------+---------+------+----------+------------------+ | 261 | root | 2.82.13.21:49573 | qianzhiku | Sleep | 0 | | | | 348 | root | localhost | | Query | 0 | starting | show processlist | +-----+------+------------------+-----------+---------+------+----------+------------------+ [root@shuju-shumeng-qianzhiku bin]# ./mysqladmin kill 348 -uroot -pDtDream0209
-
过多sleep进程的优化处理
如果发现过多的sleep进程,可能会导致“过多连接”问题,需要查看当前的连接回收设置是否需要修改
Mysql> show variables like “%timeout%”; +-----------------------------+----------+ | Variable_name | Value | +-----------------------------+----------+ | connect_timeout | 10 | | delayed_insert_timeout | 300 | | innodb_flush_log_at_timeout | 1 | | innodb_lock_wait_timeout | 50 | | innodb_rollback_on_timeout | OFF | | interactive_timeout | 28800 | | lock_wait_timeout | 31536000 | | net_read_timeout | 30 | | net_write_timeout | 60 | | slave_net_timeout | 3600 | | wait_timeout | 28800 | +-----------------------------+----------+ 11 rows in set (0.00 sec)
interactive_timeout | 28800
wait_timeout | 28800
可以看到还是默认配置8个小时,编辑my.cnf配置文件,在【mysqld】下添加下面内容:
wait_timeout=120 interactive_timeout=120
重启mysql