小编典典

MySQL中有许多“查询结束”状态,使用所有连接仅需几分钟

mysql

今天早上,我注意到我们的MySQL服务器负载越来越高。最大值应为8,但一度达到100以上。当我检查进程列表时,发现处于query end状态的大量更新查询(简单的查询,增加“
hitcounter”)。我们无法杀死他们(可以,但是可以将它们killed无限期地保留在州内),而我们的站点则停了下来。

重新启动服务时遇到了很多问题,不得不强行终止某些进程。当我们这样做时,我们能够使MySQLd重新启动,但是进程立即开始重新建立。据我们所知,目前尚未更改任何配置。

因此,我们innodb_flush_log_at_trx_commit从2 更改为1(请注意,我们需要遵循ACID),希望这可以解决问题,并将PHP /
PDO中的连接设置为持久性。这似乎工作了一个小时左右,然后连接又开始耗尽。

幸运的是,我在几个月前就设置了一个从属服务器,并能够对其进行升级,目前它已经解决了问题,但是我需要了解为什么会发生这种情况以及如何停止它,因为从属服务器的功率明显不足相比于大师,所以我需要尽快切换回去。

有任何想法吗?可能需要清除某些东西吗?我不知道是什么,也许是二进制日志或其他东西?有什么想法吗?尽快将服务器恢复为主服务器是非常重要的,但是坦率地说,我不知道在哪里看,到目前为止,我所做的一切都只是临时修复。

帮帮我!:)


阅读 268

收藏
2020-05-17

共1个答案

小编典典

我会在这里回答我自己的问题。我用一个简单的df命令检查了分区大小,在那里我可以看到/
var已满100%。我发现有人留下的档案大小为10GB。删除该文件后,启动MySQL,运行PURGE LOGS BEFORE '2012-10-01 00:00:00'查询以清除空间负载,并将/ var / lib / mysql目录大小从346GB减小到169GB。变回主人,一切再次恢复正常。

由此,我了解到我们的日志文件非常大,非常快。因此,我将建立一个维护例程,不仅使日志文件保持关闭状态,而且在我们接近完整分区时向我发出警报。

我希望这对将来遇到相同问题的人有用。检查您的驱动器空间!:)

2020-05-17