【问题标题】:Python MySQL-Connector failing to connect intermittently on Windows VPSPython MySQL-Connector 无法在 Windows VPS 上间歇性连接
【发布时间】:2021-06-22 23:08:40
【问题描述】:

我正在使用 Windows VPS 抓取数据。我正在使用 Python MySQL-Connector 将抓取的数据上传到 Linux 专用服务器。

import mysql.connector

    mydb = mysql.connector.connect(
      host="...",
      user="...",
      password="...",
      database="...",
      connection_timeout=60
    )
    mycursor = mydb.cursor()

大约 25% 的时间会失败,或者需要 20 多秒。当它失败时,我得到一个 10060 错误。问题更可能是我的 Linux 服务器还是我的 Windows VPS?帮助由衷感谢。这是错误消息:

2055: Lost connection to MySQL server at '[IP]:3306', system error: 10060 A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

【问题讨论】:

  • 您插入的数据是否大于max_allowed_packet 设置?见dev.mysql.com/doc/refman/8.0/en/error-lost-connection.html
  • 感谢您回复我。我不确定。我有应该插入的记录的日志。当我通过在本地机器上运行 Python 脚本插入它们时。它工作正常。你认为这可能意味着什么?感谢您指出该资源。现在阅读。
  • 如果您使用“localhost”连接到本地计算机,则可能不会强制执行 max_allowed_pa​​cket,因为您甚至没有使用 TCP 进行连接。 localhost 改为使用 UNIX 域套接字。我想知道如果您通过“127.0.0.1”连接,强制它使用 TCP 连接,您的应用是否可以在本地运行?
  • 当我说“本地机器”时,我指的是我的笔记本电脑。因此,当我通过脚本上传(使用远程 MySQL)时,它失败了 2% 的时间。当我在笔记本电脑上使用相同的脚本执行相同的查询时,它似乎总是可以正常工作。
  • 这个家伙似乎也面临着同样的问题。johnnn.tech/q/…。不是他如何怀疑“也许问题与我共享主机并且没有为私人服务器付费的事实有关。”

标签: python mysql linux server mysql-connector


【解决方案1】:

此错误可能与mysql数据库服务器速度慢有关,因此您可以执行以下操作:

  1. 将您的 connection_timeout 增加到更高的值,即 600。
  2. 配置负责数据库服务器性能的设置(即参见此演示文稿 - https://www.oracle.com/technetwork/community/developer-day/mysql-performance-tuning-403029.pdf)尤其是设置 mysql RAM 使用服务器(系统 RAM 的 1/2 - 变量 innodb_buffer_pool_size(在 my.cnf 中设置))李>
  3. 确保您的关闭光标在您完成使用后,请致电mycursor.close
  4. 尽可能增加带有数据库服务器的系统资源(CPU、RAM、更快的磁盘驱动器)。

【讨论】:

    【解决方案2】:

    查看错误信息,我怀疑这是由于某个端口被阻塞(MySQL服务器的默认TCP/IP端口是3306)造成的。

    检查3306端口是否忙:

    netstat -tulpn | grep 3306
    

    然后在再次运行您的应用之前尝试释放该端口。

    【讨论】:

    • 如果只有 25% 的时间失败,那么端口是开放的。
    猜你喜欢
    • 2014-12-20
    • 1970-01-01
    • 2018-09-25
    • 2018-09-17
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多