首页 雷火电竞正文

袁家村,MySQL连接数太多应该怎样处理?-雷火电竞登录

admin 雷火电竞 2019-11-18 217 0

Mysql 数据库的默许最大衔接数是:100,

关于多人开发的单体项目来说,尽管咱们一起在用的衔接不会超越10个,理论上100 捉襟见肘,可是除了咱们正在运用的衔接以外,还有很大一部分 Sleep 的衔接,这个才是真实的元凶巨恶。

剖析到了问题的本源,咱们就需求对症下药,顺次处理:

修正 Mysql 最大衔接数量

首要检查当时 Mysql 最大衔接数量是多少:

show variables like '%max_connections%';

这儿我现已修正过了,所以是 1000,没有改正的童鞋应该仍是 100,

然后检查从这次 mysql 服务发动到现在,同一时刻并行衔接数的最大值:

show status like 'Max_used_connections';

关于 Mysql 的最大衔接数设置,在初次装备的时分设置一个较大的数值,今后在运用的过程中,周期的查询 Max_used_connections 然后依据他的值和服务器的功能确认一个最适合当时项目的最大衔接数

最大衔接数的修正有两种方法

  1. 运用 sql 句子(当即收效,但服务器重启后失效):
set global max_connections = 1000;

1修正 /etc/my.cnf.增加 max_connections = 1000 永久有用。重启后收效

但更改最大衔接数只能从表面上处理问题,跟着咱们开发人员的增多,Sleep 衔接也会更多,到时分万一又达到了 1000 的上限,莫非咱们又得改成 10000 吗?这显然是十分不可取的。所以咱们不只要治标,还要治本。杀掉剩余的 Sleep 衔接便是治本

杀掉Sleep衔接

咱们能够经过 show_processlist 指令来检查当时的一切衔接状况

能够发现, Sleep 的衔接占了绝大多数。

Mysql 数据库有一个特点 wait_timeout 便是 sleep 衔接最大存活时刻,默许是 28800 s,换算成小时便是 8 小时,我的天呐!这也太长了!严重影响功能。相当于今日上班以来一切树立过而未封闭的衔接都不会被整理。

执行指令:

show global variables like '%wait_timeout';

咱们将他修正成一个适宜的值,这儿我改成了 250s。当然也能够在装备文件中修正,增加 wait_timeout = 250。这个值能够依据项目的需求进行修正,以 s 为单位。我在这儿结合 navicat 的超时恳求机制装备了 240s。

执行指令:

set global wait_timeout=250;

这样,就能从根本上处理 Too Many Connections 的问题了

雷火电竞版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

最近发表

    雷火电竞登录_雷火网站_雷火竞猜

    http://www.gogo-design.com/

    |

    Powered By

    使用手机软件扫描微信二维码

    关注我们可获取更多热点资讯

    雷火电竞出品