mysql 连接 优化_(一)MySQL 连接优化

  • Post author:
  • Post category:mysql


1.查看连接参数(show variables)

mysql> show variables like ‘%connect%‘;

+———————————————–+—————–+

| Variable_name | Value |

+———————————————–+—————–+

| character_set_connection | utf8 |

| collation_connection | utf8_general_ci |

| connect_timeout | 10 |

| disconnect_on_expired_password | ON |

| init_connect | |

| max_connect_errors | 100 |

| max_connections | 151 |

| max_user_connections | 0 |

| performance_schema_session_connect_attrs_size | 512 |

+———————————————–+—————–+

2.查看连接状态(show status)

mysql> show status like ‘%connections%‘;

+———————————–+——-+

| Variable_name | Value |

+———————————–+——-+

| Connection_errors_max_connections | 0 |

| Connections | 197 |

| Max_used_connections | 2 |

+———————————–+——-+

Connection_errors_max_connections 当MySQL的最大并发数大于系统变量(show variables)中max_connections的最大并发数,因此而被拒绝的次数,将会记录在这个变量里。如果Connection_error_max_connections值比较大,则说明当前系统并发比较高,要考虑调大max_connections的值。

Connections表示MySQL从启动至今,成功建立连接的连接数,这个值是不断累加的。

Max_used_connections表示MySQL从启动至今,同一时刻并发的连接数,取得是最大值。如果这个值大于 max_connections则表明系统经常处于高并发的状态,应该考虑调大最大并发连接数。

3、连接线程参数(thread variabls and status)

mysql> show variables like ‘thread%‘;

+——————–+—————————+

| Variable_name | Value |

+——————–+—————————+

| thread_cache_size | 9 |

| thread_concurrency | 10 |

| thread_handling | one-thread-per-connection |

| thread_stack | 262144 |

+——————–+—————————+

thread_cache_size 设置连接线程缓存的数目。这个缓存相当于MySQL线程的缓存池(thread cache pool),将空闲的连接线程放入连接池中缓存起来,而非立即销毁。当有新的连接请求时,如果连接池中有空闲的连接,则直接使用。否则要重新创建线程。创建线程是一个不小的系统开销。

thread_handling 默认值是: one-thread-per-connection 表示为每个连接提供或者创建一个线程来处理请求,直至请求完毕,连接销毁或者存入缓存池。当值是no-threads 时,表示在始终只提供一个线程来处理连接,一般是单机做测试使用的。

thread_stack stack 是堆的意思,知道进程和线程都是有唯一的ID的,进程的ID系统会维护,二线程的ID,则由具体的线程库区维护,当进程或者线程休眠的时候,进程的上下文信息要在内存中开辟出一块区域,保存进程的上下文信息,以便于迅速唤醒程序。默认为MySQL的每个线程设置的堆栈大小为:262144/1024=256k

4.查看线程状态信息

mysql> show status like ‘Thread%‘;

+——————-+——-+

| Variable_name | Value |

+——————-+——-+

| Threads_cached | 1 |

| Threads_connected | 1 |

| Threads_created | 2 |

| Threads_running | 1 |

+——————-+——-+

Thread_cached 当前线程池的线程数

Thread_connected 当前的连接数

Thread_cached: 当前连接线程创建数, 如果这个值过高,可以调整threadcachesize 也就是调整线程缓存池的大小。

Thred_runnint: 当前活跃的线程数。

5.连接请求堆栈

MySQL在很短的时间内,突然收到很多的连接请求时,MySQL会将不能来得及处理的连接请求保存在堆栈中,以便MySQL后续处理。back_log参数设置了堆栈的大小,可以通过如下命令查看:

mysql> show variables like ‘back_log‘;

+—————+——-+

| Variable_name | Value |

+—————+——-+

| back_log | 80 |

+—————+——-+

6.连接异常

mysql> show status like ‘Aborted%‘;

+——————+——-+

| Variable_name | Value |

+——————+——-+

| Aborted_clients | 0 |

| Aborted_connects | 219 |

+——————+——-+

Aborted_clients MySQL 客户机被异常关闭的次数。

Aborted_connects 试图连接到MySQL服务器而失败的连接次数。

7.other

mysql> show status like ‘Slow%‘;

+———————+——-+

| Variable_name | Value |

+———————+——-+

| Slow_launch_threads | 0 |

| Slow_queries | 0 |

+———————+——-+

mysql> show variables like ‘slow_launch_time‘;

+——————+——-+

| Variable_name | Value |

+——————+——-+

| slow_launch_time | 2 |

+——————+——-+

Slow_lunch_threads 创建线程的时间过长,超过slow_launch_time的设定值,则会记录。

8.可以通过使用 Connection_error%来查看连接的错误状态信息:

mysql> show status like ‘Connection_error%‘;

+———————————–+——-+

| Variable_name | Value |

+———————————–+——-+

| Connection_errors_accept | 0 |

| Connection_errors_internal | 0 |

| Connection_errors_max_connections | 0 |

| Connection_errors_peer_address | 0 |

| Connection_errors_select | 0 |

| Connection_errors_tcpwrap | 0 |

+———————————–+——-+

Connection_errors_peer_address 查找MySQL客户机IP地址是发生的错误数。

(一)MySQL 连接优化

标签:拒绝   存在   测试   sel   客户机   休眠   客户   like   上下

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://www.cnblogs.com/sunziying/p/6538668.html



版权声明:本文为weixin_28518991原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。