【问题标题】:Debugging MySQL: Too many connections调试 MySQL:连接太多
【发布时间】:2012-10-25 09:47:07
【问题描述】:

在我们使用 MySQL DB 部署新版本的 ASP.NET C# 应用程序后,我们遇到了连接问题。

昨天我收到“连接太多”错误,我正在查看打开的连接 SHOW FULL PROCESSLIST 并且它们在白天不断增加。

有什么好方法可以找出我们的错误可能在哪里吗?就像检查休眠连接发出的最后一个查询一样?

【问题讨论】:

    标签: asp.net mysql mysql-connector


    【解决方案1】:

    确保您的应用正在正确关闭与 db 的连接....如果您的应用没有关闭连接,那么您将收到上述错误

    【讨论】:

    • 对。我明白那个。问题是,如何找到连接没有正常关闭的地方。
    【解决方案2】:

    Connection pooling 通常可以解决这个问题。在您的情况下,连接似乎保持打开的时间过长,这意味着在您的软件的某些分支中,没有确定的最终会在使用后关闭连接。在中心点诊断有问题的连接使用特别有用,因为它可以在任何给定时间关注打开的连接数量,并可能提醒某人进行转储以供以后分析。

    您还可以增加 MySQL 实例允许的连接数。您的 my.cnf 中的设置是“max_connections”。

    最后,如果您愿意,可以尝试减少实例的“wait_timeout”或“interactive_timeout”属性。这些设置控制在一定时间后自动关闭连接。

    【讨论】:

    • 感谢您的回复。我们确实使用默认情况下从 MySQL 启用的连接池。更改上述值将是我最后的手段。我真的认为我们在代码中做错了什么,因为我们在发布之前没有这个问题。我正在寻找的是一种找出这些开放连接来自哪里的方法......
    • 在您的应用程序中添加一个集中的连接池将创建:一个您分发或创建连接的中心点,您可以准确地知道何时重新创建连接,何时打开它以及(带有一点反射代码)即使是请求连接的人。
    猜你喜欢
    • 1970-01-01
    • 2017-12-27
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2010-11-15
    • 2020-01-24
    相关资源
    最近更新 更多