【问题标题】:MySQL with Qt issueMySQL 与 Qt 问题
【发布时间】:2018-08-11 21:07:39
【问题描述】:

Aborted_clients值会不会导致主机IP因为连接错误很多而被阻塞?我想知道它,因为这样的错误阻止了我的Qt 应用程序访问数据库服务器。

错误信息:

QSqlDatabasePrivate::database: 无法打开数据库:“主机 'IP' 由于许多连接错误而被阻止;使用 'mysqladmin flush-hosts' 解除阻止 QMYSQL: 无法连接”

另外,Aborted_clients 值可以增加max_connect_errors 值吗? 谢谢。

【问题讨论】:

    标签: c++ mysql qt


    【解决方案1】:

    它们在全球范围内不相关。 max_connect_errorsServer System Variables 之一,它是每个主机 基础计数器,而 Aborted_clientsServer status variables 之一,它是所有客户端/主机的全局信息计数器。

    它们不相关的另一个原因是,当 主机max_connect_errors 计数器由于连接错误而处于递增周期但随后该主机建立成功连接时,错误计数 max_connect_errors 为主机被清除

    max_connect_errors对于特定主机在主机无法建立且没有成功连接(阈值导致主机阻塞)时递增。当与服务器的握手中断时会发生这种情况。如果它没有被中断,它就会被视为“成功”并重置主机计数器——无论最终结果是否是成功的连接。因此可以将其视为网络性能计数器,请注意,它甚至不能强烈代表安全问题。您可以通过telnet MyServer 3306 进行测试,然后按CTRL C 而不是继续..

    可以使用mysqladmin flush-hosts; 清除此计数器,如this post

    另一方面,如果 客户端成功连接,但后来不正确地断开连接或被终止,则服务器增加 Aborted_clients 计数器。

    这可能是由很多原因引起的 - 客户端没有调用 mysql_close() 就退出了。客户端连接超出wait_timeout 而不与服务器交互。客户端连接被切断,就像关闭 PC 时一样。

    服务器状态变量提供有关服务器操作的信息,它还包括Aborted_connects,这只是 DBA 的统计数据 - mysqld 不使用它来确定服务器行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 2017-03-07
      • 2017-12-23
      相关资源
      最近更新 更多