Mysql 配置优化
配置文件:/etc/my.conf
参数:skip-name-resolve
查询SQL:无
skip-name-resolve:禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求。
说明
参数:thread_concurrency=数字(cpu总核x2)
查询SQL:show variables like 'thread_concurrency';
thread_concurrency的值的正确与否, 对mysql的性能影响很大, 在多个cpu(或多核)的情况下,错误设置了thread_concurrency的值, 会导致mysql不能充分利用多cpu(或多核), 出现同一时刻只能一个cpu(或核)在工作的情况。
thread_concurrency应设为CPU核数的2倍. 比如有一个双核的CPU, 那thread_concurrency 的应该为4; 2个双核的cpu, thread_concurrency的值应为8.
说明
参数:max_user_connections=0(默认0)
查询SQL:show variables like 'max_user_connections';
max_user_connections是指每个数据库用户的最大连接
针对某一个账号的所有客户端并行连接到MYSQL服务的最大并行连接数。
简单说是指同一个账号能够同时连接到mysql服务的最大连接数。
设置为0表示不限制。
目前默认值为:0不受限制。
Max_used_connections:它是指从这次mysql服务启动到现在,同一时刻并行连接数的最大值。它不是指当前的连接情况,而是一个比较值。
如果在过去某一个时刻,MYSQL服务同时有1000个请求连接过来,而之后再也没有出现这么大的并发请求时,则Max_used_connections=1000.请注意与show variables 里的max_user_connections的区别。默认为0表示无限大。
说明
参数:back_log=300[(默认50)(每个连接默认256kb)(根据请求数与内存大小调试)]
查询SQL:show variables like 'back_log';
back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。也就是说,如果MySql的连接数据达到max_connections时,新来的请求将会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果等待连接的数量超过back_log,将不被授予连接资源。
将会报:unauthenticated user| xxx.xxx.xxx.xxx | NULL | Connect | NULL | login |NULL 的待连接进程时.
back_log值不能超过TCP/IP连接的侦听队列的大小。
若超过则无效,查看当前系统的TCP/IP连接的侦听队列的大小命令:cat /proc/sys/net/ipv4/tcp_max_syn_backlog目前系统为1024。
说明
参数:wait_timeout=1800[(默认30分钟)(单位秒)(根据连接数据库空闲时长调试)]
查询SQL:show variables like 'wait_timeout'
wait-timeout:MySQL客户端的数据库连接闲置最大时间值。
当你的MySQL连接闲置超过一定时间后将会被强行关闭。
在网站有大量的MySQL链接请求(每个MySQL连接都是要内存资源开销的 ),由于你的程序的原因有大量的连接请求空闲啥事也不干,白白占用内存资源,或者导致MySQL超过最大连接数从来无法新建连接导致“Too many connections”的错误。
在设置之前你可以查看一下你的MYSQL的状态(可用show processlist),如果经常发现MYSQL中有大量的Sleep进程,则需要 修改wait-timeout值了。
说明
参数:max_connections=2000[(默认151)(每个连接默认256k)(根据并发量与内存大小调试)]
查询SQL:show variables like 'max_connections';
max_connections是指MySql的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySql会为每个连接提供连接缓冲区,就会开销越多的内存,所以要适当调整该值,不能盲目提高设值。
MySQL服务器允许的最大连接数16384;
说明
参数: skip-networking[(默认关闭)(根据安全角度可以开启,建议关闭)]
查询SQL:无
开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项!否则将无法正常连接!
说明
Mysql缓存优化