Answers:
即使我们中最有权势的人有时也需要睡觉。没有睡眠,人们就会变得焦虑不安,失眠会导致各种严重的症状。
更严重的是:睡眠状态意味着MySQL进程已经完成了其查询,但是客户端尚未退出。许多Web应用程序此后未清理其连接,这导致MySQL进程处于休眠状态。如果只有少数几个,请不要担心。MySQL将在可配置的超时时间(wait_timeout)之后清除这些内容。
或者,如果您的Web应用程序使用持久性连接和连接池,那么即使有很多睡眠进程也是完全正常的:在这种情况下,您的应用程序仅会打开例如100个SQL连接并保持打开状态。这减少了连接打开/关闭的开销。除非您的应用程序非常繁忙,否则通常不是每个SQL进程都需要执行某些操作,因此它们会休眠。
在增加max_connections变量之前,您必须通过运行show processlist命令检查您有多少个非交互式连接。
如果您有许多睡眠连接,则必须减小“ wait_timeout”变量的值,以等待一段时间后关闭非交互式连接。
显示会话变量,例如“ wait_timeout”; + --------------- + ------- + | 变量名| 价值| + --------------- + ------- + | wait_timeout | 28800 | + --------------- + ------- +
该值以秒为单位,这表示非交互式连接仍可长达8小时。
SET会话wait_timeout = 600; 查询正常,受影响的0行(0.00秒)
10分钟后,如果睡眠连接仍在睡眠,则mysql或MariaDB断开该连接。