问题
MySQL正在生成大量的休眠查询。有时很多,它导致拒绝服务,并真正放慢(或关闭)我们的网站。我们通过限制空闲进程在被杀死之前打开的时间来创建一个临时解决方案(并且对合法连接有额外的负面影响),但这不是问题的根源,我已经被委任去发现。
改变了什么
直到最近我们升级服务器时才发生这种情况。我们(并且一直有)LAMP设置。另外,我们更新了我们正在使用的MySQL版本,从5.6.19到5.6.26。我们现在也在使用PHP的最新稳定版本。
我做的研究
我的主要问题是DBA是我知识库的一个薄弱环节。但是以下文章有助于(1)提高我对可能发生的事情的理解,并且(2)告诉我这可能会发生很多原因。
https://www.percona.com/blog/2007/02/08/debugging-sleeping-connections-with-mysql/ http://board.phpbuilder.com/showthread.php?10375101-How-to-Stop-MySQL-Sleep%28%29-Processes
wpapi.com/mysql-sleep-processes-issue-solved /
serverfault.com/questions/24191/mysql-sleeper-queries
major.io/2007/05/20/mysql-connections-in-sleep-state /
我的问题
基本上,由于我的DBA技能较弱,我很难诊断出我们的具体问题。它是MySQL变量/设置,apache设置,PDO问题吗?如果是这样的话,我真的可以使用一些指导方向,因为我此刻正在学习。似乎正在以重复查询的形式生成休眠查询(例如:如果我显示进程列表,则运行进程列表的命令将显示为当前进程之一,以及另外的休眠查询将是产生),以及随机我们将有大量与重复过程无关的睡眠查询。
作为旁注,我们不使用持久连接。我们最近分离了我们的数据库,现在我们所有的客户都拥有自己的数据库,但这一切似乎与新服务器更加一致(时间框架明智)。
帮助我诊断和解决问题的任何想法或见解都会非常有帮助。谢谢!