MySQL可用性监控
- MySQL服务存活监控
- MySQL复制是否终止,延迟多大
- 其他,例如磁盘空间消耗
MySQL性能监控
- 每秒活跃DML数/事务数/请求数/当前并发连接/平均响应时长
- 数据库吞吐量(收、发字节数)
- 锁:表锁,行锁,锁等待,死锁
- 内存:buffer/cache命中率、等待释放
- 事务:事务ID增长率,unpurged历史事务
- 慢查询:平均耗时,平均次数
查看MySQL连接数、当前并发连接、最大连接。
mysql> show status like 'Threads%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 58 |
| Threads_connected | 57 | ###这个数值指的是打开的连接数
| Threads_created | 3676 |
| Threads_running | 4 | ###这个数值指的是激活的连接数,这个数值一般远低于connected数值
+-------------------+-------+
Threads_connected 跟show processlist结果相同,表示当前连接数。准确的来说,Threads_running是代表当前并发数
这是是查询数据库当前设置的最大连接数
mysql> show variables like '%max_connections%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 1000 |
+-----------------+-------+
如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。
Threads_created表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,查询服务器
thread_cache_size配置:
1mysql> show variables like 'thread_cache_size';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| thread_cache_size | 64 |
+-------------------+-------+
show processlist; 可以显示前100条连接信息
show full processlist; 可以显示全部。
顺便说下,如果用普通账号登录,就只显示这用户的。
锁等待
"root@localhost:mysql.sock [(none)]>show status like 'Innodb_row_lock%';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| Innodb_row_lock_current_waits | 0 |
| Innodb_row_lock_time | 0 |
| Innodb_row_lock_time_avg | 0 |
| Innodb_row