Mysql实例MySQL优化之连接优化

Mysql实例MySQL优化之连接优化,第1张

概述介绍《Mysql实例MySQL优化连接优化》开发教程,希望对您有用。

《MysqL实例MysqL优化之连接优化》要点:
本文介绍了MysqL实例MysqL优化之连接优化,希望对您有用。如果有疑问,可以联系我们。

上文MysqL优化之缓存优化 这篇文章中提到了一个很重要的概念,就是show variables是用来表示系统编译或者配置在my.cnf中的变量值.而show status则称之为状态值,显示的是当前服务实例运行所具有的状态信息,是一个动态改变的值.因此常用来观测当前MysqL的运行是否正常,如果不正常那么依靠调整静态参数来提高MysqL的性能.所以明白这两个概念的不同,是后面调优的基础.MysqL教程

MysqL 连接优化MysqL教程

记得有一次在公司内部连接MysqL的时候,总是连接不上.找到DBA后,经过排查原因,是当前MysqL连接数满了,经过调整后,解决了问题.引发连接数过多的错误原因一般有两个,第一的确是有很多人在连接MysqL,造成连接数用完.第二种是max_connections值过小.MysqL教程

1、连接参数(show variables)MysqL教程

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       |+-----------------------------------------------+-----------------+ 

max_connections是指MysqL服务实例能够同时接受的的最大并发连接数.MysqL实际上支持最大连接数加一的算法,保障当连接数用完的时候,超级管理员依然可以和服务端建立连接,进行管理.MysqL教程

max_user_connections设置指定账号的最大并发连接数.MysqL教程

max_connect_errors 当某台非法主机恶意连接MysqL服务端,遭到的错误达到设置值后,MysqL会解决来自该主机的所有连接.但执行flush hosts后会清零.MysqL教程

2、连接状态(show status)MysqL教程

有一点需要注意的,变量值(show variables)是以小写字母开头的,而状态值(show status)是以大写字母开头.这样区分有助于记忆和分类MysqL教程

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的值.MysqL教程

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

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

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

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),将空闲的连接线程放入连接池中缓存起来,而非立即销毁.当有新的连接请求时,如果连接池中有空闲的连接,则直接使用.否则要重新创建线程.创建线程是一个不小的系统开销.MysqL的这部分线程处理和Nginx 的线程处理有异曲同工之妙,以后介绍Nginx的线程处理时,会拿来做对比.MysqL教程

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

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

查看线程状态信息MysqL教程

MysqL> show status like 'Thread%';+-------------------+-------+| Variable_name   | Value |+-------------------+-------+| Threads_cached  | 1   || Threads_connected | 1   || Threads_created  | 2   || Threads_running  | 1   |+-------------------+-------+

Thread_cached 当前线程池的线程数MysqL教程

Thread_connected 当前的连接数MysqL教程

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

Thred_runnint: 当前活跃的线程数.MysqL教程

连接请求堆栈MysqL教程

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

MysqL> show variables like 'back_log';+---------------+-------+| Variable_name | Value |+---------------+-------+| back_log   | 80  |+---------------+-------+

连接异常MysqL教程

MysqL> show status like 'Aborted%';+------------------+-------+| Variable_name  | Value |+------------------+-------+| Aborted_clIEnts | 0   || Aborted_connects | 219  |+------------------+-------+

Aborted_clIEnts MysqL 客户机被异常关闭的次数.MysqL教程

Aborted_connects 试图连接到MysqL服务器而失败的连接次数.MysqL教程

otherMysqL教程

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的设定值,则会记录.MysqL教程

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

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教程

总结

以上是内存溢出为你收集整理的Mysql实例MySQL优化之连接优化全部内容,希望文章能够帮你解决Mysql实例MySQL优化之连接优化所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1163678.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存