1、优化最大连接数
max_connections 是MySQL 最大并发连接数,MySQL支持最大的连接数上限是16384,我们可以根据实际情况设置最大连接数。
如何判断设置多少合适?
-- 查看数据库当前设置的最大连接数
SHOW VARIABLES LIKE 'max_connections';
-- 查看目前实际的并发连接数是多少
SHOW STATUS LIKE 'max_used_connections';
我们可以先将max_connections设置的大一点,过段时间,再根据实际的max_used_connections 来设置恰当的最大连接数。
注:MySQL配置文件一般在 /etc/my.cnf
MySQL会为每个连接创建缓冲区,因此最大连接数这个参数不是设置的越大越好,我们不应该盲目的上调最大连接数。
将max_connections设置为3000时,消耗约 800MB 内存。
# 设置最大连接数为1500
max_connections=1500
2、优化请求堆栈
back_log 参数是存放执行请求的堆栈大小。
当请求数达到了最大连接数后,新的请求并不会被MySQL拒绝,而是将连接请求存放到堆栈中,等到有空闲连接时,就会把连接分配给堆栈中的请求。
一般将该值设置为最大连接数的 20% 左右
# 设置请求堆栈数为50
back_log=50
3、修改并发线程数
innodb_thread_concurrency 参数代表并发线程数,默认是0,也就是没有上限。
其实该值不是越大越好,调度大量线程会损耗cpu的性能,导致运行速度变慢
并发线程数应该设置为cpu核心数的两倍。
# 设置并发线程数为64
innodb_thread_concurrency=64
4、修改连接超时时间
wait-timeout 参数是超时时间,单位是秒。
MySQL连接默认超时时间为8小时,也就是说,我们这一秒连接MySQL,如果一直不用,8小时候,MySQL才会断掉我们的这个连接。
连接长期不用又不销毁,浪费资源。
# 设置连接超时时间为1小时
wait-timeout=3600