MySQL 在 Windows 7 64 位上运行。
我正在尝试追踪连接泄漏,我很确定唯一使用服务器的 ASP.NET 应用程序在这里出现故障。
我们收到“连接过多”错误并检查服务器,我们看到许多连接状态为Sleep
。
我知道,摆弄my.cf
,MySQL 可以在较短的时间后被迫关闭睡眠连接,但我宁愿解决实际问题而不是症状。
所以我想知道是否有办法检索在给定连接上最后执行的 SQL 语句。我想如果我可以在较旧的睡眠连接上做到这一点,我可能会更容易追踪这个泄漏。
当然,如果有人能想到这种情况的替代解决方案,任何建议都是非常受欢迎的。
您可以启用“通用查询日志”,它将记录每个执行的查询及其会话/连接 ID,因此如果您使用 grep 连接 ID,您将在一个会话中获得所有查询。
但是,“睡眠”连接不是最大连接错误的原因,而是它的结果。他们呆在那里没有害处。事实上,它们是已建立的连接,可以被未来的会话重用。
在这种情况下更有用的是搜索慢查询日志,并检查 innodb 状态以获取有关已发生的锁和死锁的信息: