【问题标题】:2003: Can't connect to MySQL server on '127.0.0.1:3306' (99 Cannot assign requested address)2003:无法连接到“127.0.0.1:3306”上的 MySQL 服务器(99 无法分配请求的地址)
【发布时间】:2014-09-13 02:24:02
【问题描述】:

我正在运行一个 python2.7 应用程序,该应用程序在多核 64 位 CentOS(或 ubuntu)机器上执行“插入”到单个 mysql/mariadb 实例中。一旦并行进程/内核超过 4 个或 6 个,我就会看到这个错误。 (在执行的不同点) 2003:无法连接到“127.0.0.1:3306”上的 MySQL 服务器(99 无法分配请求的地址)

我在 CentOS6.5,mariadb 10.1 上运行应用程序 我也尝试过使用 Ubuntu 14.04(64 位),mysql 导致同样的问题。

我尝试进行以下更改:

In my.cnf file:
[mysqld]
interactive_timeout=1
wait-timeout = 1
thread_cache_size = 800
max_connections = 5000
#max_user_connections = 5000
max_connect_errors = 150


In sysctl.conf file:
fs.file-max = 65536

In limits.confg file:
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535

我倾向于认为这是一个配置问题,因为代码在 2 核 Mac 上运行良好。有人可以建议一些配置调整或任何重用连接的简单方法吗?

【问题讨论】:

    标签: mysql linux database-connection scalability mariadb


    【解决方案1】:

    您可能正在以相当高的速度连接/断开 mysqld? 当遇到错误 99 时,您可能会在netstat -nt 输出中看到很多处于 TIME_WAIT 状态的连接?

    问题很可能是由于频繁的重新连接和 TIME_WAIT 延迟,您很快就会用完客户端端口。这也可以解释为什么您的并行客户端数量越多,您就越有可能遇到这种情况。

    TL;DR 解决方案可能是将 net.ipv4.tcp_tw_reuse 设置为 1,例如使用

    echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
    

    或者,由于您在同一台机器上拥有客户端和 mysql 服务器,您可以使用 UNIX 域套接字连接而不是 TCP。这可能就像连接到逐字的“localhost”主机名而不是 127.0.0.1 一样简单,但我不知道各种 Python 连接器以及它们如何处理这个......

    有关更详细的提示和解释,请参阅

    http://www.fromdual.com/huge-amount-of-time-wait-connections

    http://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html

    【讨论】:

      【解决方案2】:

      在最近的环境中,当我尝试在 Traefik 2.0-beta 反向代理后面的 Docker 容器中访问 MariaDB 时,我收到了相同的错误消息。

      与实际发生的相比,错误消息毫无意义,这就是我加 2 美分的原因。

      我找到的解决方案是使用 Docker 服务的名称作为主机,而不是使用 Traefik 提供给 MariaDB 服务器的本地域名。

      这里可能会提供一些新的输入 https://github.com/jclaveau/docker-standalone-webdev-ci-stack/tree/master/examples/docker-example-lamp

      【讨论】:

        【解决方案3】:

        你可以使用休眠机制来解决这个问题。

        import time

        time.sleep(2)##睡眠两秒。

        这将减少处于等待状态的进程数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-08-22
          • 2021-02-17
          • 2014-05-06
          • 2018-07-16
          • 2020-06-07
          • 2020-09-29
          • 2010-12-13
          相关资源
          最近更新 更多