2003:无法连接到'127.0.0.1:3306'上的MySQL服务器(99无法分配请求的地址)

 你是谁你要知道_893 发布于 2023-01-01 18:06

我正在运行一个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上运行得很好.有人可以建议一些配置调整或任何简单的方法来重用连接?

1 个回答
  • 您可能以相当高的速率连接/断开mysqld?当遇到错误99时,你可能在输出中看到很多 TIME_WAIT状态的连接netstat -nt

    最常见的问题是,由于频繁的重新连接和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

    2023-01-01 18:07 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有