阿里云Linux CentOS8.1 64位服务器安装LNMP(Linux+Nginx+MySQL+PHP) 并发调试之MySQL配置
mysql高并发配置 要在mysqld下设置
1、 修改back_log参数值:由默认的50修改为500.(每个连接256kb,占用:125M)
back_log=500
back_log值指出MySQL暂时回答新请求之前的短时间内有多少个请求可以被存在堆栈中。也就是说,如果MySQL的连接数达到max_connections时,新来的请求会被存在堆栈中,以等待某一连接释放资源,该堆栈的数量即back_log,如果
等待连接的数量超过back_log,将不被授予连接资源。将会报 unauthenticated user | xxx.xx.xxx.xxx | NULL | Connect | NULL | login | NULL
。
back_log值不能超过TCP/IP连接的侦听队列的大小。若超过则无效,查看当前系统的TCP/IP连接的侦听队列的大小的命令:cat/proc/sys/net/ipv4/tcp_max_syn_backlog
。
(修改系统内核参数:http://www.51testing.com/html/64/n-810764.html)
查看MySQL当前系统默认的back_log值,命令:show variables like 'back_log';
2、修改wait_timeout 参数值,由默认的8小时,修改为30分钟(单位为 秒)。
wait_timeout=1800
这个参数可以理解为,MySQL客户端的数据库连接闲置最大时间值。就是你的MySQL连接闲置超过一定时间后会被强行关闭。MySQL的默认值为8小时,查看命令为
show variables like 'wait_timeout'
设置这个值可以节省内存资源,比如你的网站有大量的MySQL连接请求(每个MySQL连接都是要内存资源开销的),由于你的程序的原因有大量的连接请求空闲着啥事也不干,白白占用内存资源,或者导致MySQL超过最大连接数,无法新建
连接导致“Too many connections”的错误。
在设置之前,你可以查看一下你的MySQL的状态(可用 show processlist
),如果经常发现MySQL中有大量的sleep进程,则需要修改 wait_timeout 。
3、修改max_connections参数值,由默认的 151 改为 3000.
max_connections=3000
max_connections是MySQL的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量。当然这建立在机器能支撑的情况下,因为连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内
存。所以要适当调整该值,不能盲目提高设置。可以通过'conn%'通配符查看当前状态的连接数量,以定夺该值的大小。
MySQL服务器允许的最大连接数为 16384.
查看系统当前的最大连接数:
show variables like 'max_connections';
下一篇随笔总结一下并发测试工具ab