实时查看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: error 1040: too many connections”的情况,一种是访问量确实很高,mysql服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是mysql配置文件中max_connections值过小: 

mysql> show variables like ‘max_connections‘;

+-----------------+-------+

| variable_name  | value   |

+-----------------+-------+

| max_connections | 256  |

+-----------------+-------+ 

这台mysql服务器最大连接数是256,然后查询一下服务器响应的最大连接数:

 mysql> show global status like ‘max_used_connections‘; 

mysql服务器过去的最大连接数是245,没有达到服务器连接数上限256,应该没有出现1040错误,比较理想的设置是

 max_used_connections / max_connections * 100% ≈ 85% 

最大连接数占上限连接数的85%左右,如果发现比例在10%以下,mysql服务器连接数上限设置的过高了。

 

threads_created表示创建过的线程数,如果发现threads_created值过大的话,表明mysql服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,

查询服务器 thread_cache_size 配置: 

mysql> show variables like ‘thread_cache_size‘;

+-------------------+-------+

| variable_name   | value   |

+-------------------+-------+

| thread_cache_size | 64   |

+-------------------+-------+ 

示例中的服务器还是挺健康的。

posted @ 2020-06-12 13:47  xiaowejie  阅读(239)  评论(0编辑  收藏  举报