【问题标题】:Sleeping Processes in MySQLMySQL 中的休眠进程
【发布时间】:2012-09-15 21:37:11
【问题描述】:

我有一系列旨在长时间运行的 python 脚本。当我查看 MySQL 进程监视器时,我看到其中三个的时间始终为 0,然后我用来将数据实际插入数据库的 2 个将具有始终向上计数的值,并且永远不会被重置到 0 意味着他们最终会遇到可怕的“MySQL 已经消失”。

我正在使用 MySQLdb。

谁能解释一下为什么会这样?

有没有办法确保他们将此值重置为 0?

谢谢

【问题讨论】:

    标签: python mysql mysql-python


    【解决方案1】:

    听起来您的空闲超时即将到期。但是,这是在 mysqld 服务器配置中设置的,对于 MySQLdb 来说并不是真正的问题。您需要在服务器配置中调整wait-timeout 系统变量,或者在连接时使用SQL 语句。

    【讨论】:

    • 我可以用什么来创建与 MySQLdb 的持久连接?
    • 有一个connection.ping()方法可以用来测试连接是否仍然打开。如果它没有打开它会引发异常,然后你可以手动重新打开它。或者,您可以使用connection.ping(True),这将静默重新打开连接。请注意,您应该在开始事务(执行任何类型的查询)之前使用ping()
    • 从这个答案中得到启示stackoverflow.com/a/3104681/323404 在请求之前 ping 是个好主意吗?
    • 在每次查询之前 ping 是否是个好主意?否。如果问题是空闲连接被关闭,在开始事务(即第一个查询)之前 ping 可能是明智的。在那之后连接不太可能消失,即使它消失了,如果你在一个事务中,它就会有效地回滚。实际上,我从来没有为此目的使用过 ping。
    猜你喜欢
    • 2012-03-05
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多