mysql连接参数配置

发布时间: 2023-11-21 12:40 阅读: 文章来源:1MUMB4139PS

mysql的连接数配置说明

1. max_connections

mysql整个服务器支持的最大连接数量,超出这个数量的,即所有账号的所有客户端并行连接到MySQL的最大连接数。

连接数超出报错:Too many connections

查看系统配置:

show variables like ‘%max_connection%‘; 或 select @@max_connections;

查看系统使用:(两个作用相同)

show global status like ‘Max_used_connections‘;

show status like ‘max_used_connections‘;

理想配置:Max_used_connections / max_connections * 100% 85%

特别说明:Max_used_connections 是mysql服务器启动到现在,同一时刻并发的最大连接数、不是当前连接数是个比较值;

修改办法:

临时修改: set @@global.max_connections=1000;

2. max_user_connections

限制每个mysql用户的session连接数,超出发起连接报错: User xxx already has more than ‘max_user_connections‘ active connections

针对每个用户(主机+用户为单位)。

修改办法:(说明 值为0则不限制)

set @@global.max_user_connections=0;

3. show processlist 和 thread_concurrency 区别

show processlist:

show processlist是一个MySQL命令,用于查看当前MySQL服务器上的活动连接以及这些连接正在执行的查询或操作。

它显示了每个连接的ID,用户,主机,数据库,当前执行的查询,状态等信息。

通过查看processlist,可以了解数据库当前的连接情况,有助于监控和优化数据库性能。

thread_concurrency:

thread_concurrency也是一个MySQL系统变量,用于调整MySQL服务器的并发操作。

它控制了MySQL服务器在同一时间可以使用的线程数。在高并发的情况下,

适当调整thread_concurrency值可以提高服务器的处理效率

4. max_connect_errors

max_connect_errors 限制一个主机连接MySQL服务器的连接不成功的最大错误次数,累计值超过这个值就限制此主机的连接。

这里面的连接不成功是指应用层连接不成功,比如通过telnet方式,握手成功了但是后续没有成功连接到MySQL服务器。

像输错密码这种不会计入这个值。

超出报错: xxx.xx.xx.xx is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts‘

如何清空:以下任意一种

1) 重新启动MySQL服务器;

2) FLUSH HOSTS;

3)SET GLOBAL max_connect_errors = 0;

4)修改 performance_schema.host_cache 这个表里面的值,根据ip和主机名

5. interactive_timeout

interactive_timeout 参数指定了一个交互连接在没有活动的情况下可以保持打开的最长时间。

这个参数适用于交互式的客户端连接,比如命令行工具或者图形化界面工具

默认情况下,interactive_timeout 的值为 28800 秒(8 小时)。

查看:

SHOW VARIABLES LIKE ‘interactive_timeout‘;

修改:

SET GLOBAL interactive_timeout = 60;

重启生效,修改本session,可以用:SET SESSION interactive_timeout = 600;

6. wait_timeout

wait_timeout 参数指定了非交互式连接没有活动的时间后被自动关闭的时间。

这个参数适用于不需要用户交互的连接,比如应用程序的连接。默认情况下,wait_timeout 的值为 28800 秒(8 小时)。

查看:

SHOW VARIABLES LIKE ‘wait_timeout‘;

修改:

SET GLOBAL wait_timeout = 60;

需要重启才对新session生效,直接修改session的可以用: SET SESSION wait_timeout = 6000;

•••展开全文