查看当前最大数据库连接数
show global variables like "max_connections";+-----------------+-------+| Variable_name | Value |+-----------------+-------+| max_connections | 64725 |+-----------------+-------+
查看当前已用最大连接数
show global status like 'Max_used_connections';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Max_used_connections | 92 |
+----------------------+-------+
查看线程状态信息
show global status like "%Threads%";
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| Delayed_insert_threads | 0 |
| Slow_launch_threads | 0 |
| Threads_cached | 0 |
| Threads_connected | 62 |
| Threads_created | 80928 |
| Threads_running | 4 |
| thread_pool_active_threads | 76 |
| thread_pool_big_threads | 0 |
| thread_pool_dml_threads | 0 |
| thread_pool_idle_threads | 5 |
| thread_pool_qry_threads | 0 |
| thread_pool_total_threads | 81 |
| thread_pool_trx_threads | 3 |
| thread_pool_wait_threads | 72 |
+----------------------------+-------+
总连接数
客户购买的DB连接数是这个。max_connections,允许同时连接DB的客户端的最大线程数。如果客户端的连接数超过了max_connections,应用就会收到“too many connections”的错误。
已经创建的连接数
Threads_created是为处理连接而创建的线程数。再明确一点来说是连接到DB的,客户端的线程数。它包含Threads_running。 如果Threads_created很大,可能需要调整thread_cache_size。
线程cache命中率=Threads_created/Connections,cache命中率当然越大越好,如果命中率较低,可以考虑增加thread_cache_size。
已经连接的连接数
活跃连接数
Threads_running官方的说法是“没有sleep的线程数”。顾名思义是:在DB端正在执行的客户端线程总数。Server端保持这些连接同时客户端等待回复。有些线程可能消耗CPU或者IO,有些线程可能啥也没做单纯等表锁或行锁释放。当DB执行完这个线程,客户端收到回复,线程的状态就会从”running” 变成 “connected”.
如果发现活跃链接数突然增高,通常是以下原因:
- 应用缓存失效
- 突发流量
