`
desert3
  • 浏览: 2160345 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

客户端机器TCP端口被占满导致mysql报Can't connect to MySQL server on 'computername' (10048)

阅读更多
用python程序读取csv数据,然后通过MySQLdb模块插入到数据库,程序运行一小段随机时间后,报错:
_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')
OperationalError: (2003, "Can't connect to MySQL server on '192.168.3.250' (10048)")

通过360安全卫士-》高级工具-》网络连接查看器看到程序出异常时,当前连接数高达3K多,同时TCP可用端口被占满
同时参考:MySQL(10048)错误解决方案,问题解决

错误出现的原因:
程序处理时,每插入一条数据都经过取得连接,执行插入操作,提交事务,关闭连接的操作。而程序每取得一次新的数据库连接,操作系统都对应开打一个新的TCP请求,端口号是随机取得可用的,而程序关闭数据库连接时,相应的操作系统关闭TCP连接,此时TCP连接并没有被释放,然后占用着操作系统端口,等待回收
由于默认已关闭TCP连接的回收间隔为240S,最大的可用TCP端口号为5000,当创建连接速度过快导致所有可用的小于5000的端口号被占满后,系统报错。

解决方案:
和本错误密切相关的两个windows的注册表项:TcpTimedWaitDelay和MaxUserPort的值.
TcpTimedWaitDelay 确定 TCP/IP 可释放已关闭连接并重用其资源前, 必须经过的时间. 关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期(2MSL)状态. 此时间期间, 重新打开到客户机和服务器的连接的成本少于建立新连接. 减少此条目的值允许 TCP/IP 更快地释放已关闭的连接, 为新连接提供更多资源.

MaxUserPort 确定从系统请求任何可用用户端口时所用最大端口数,TCP/IP 可指定的最高端口号. 如果建立 TCP 连接最大端口连接大于 5000, 本地计算机响应以下错误信息WSAENOBUFS (10055): 因为系统缺乏足够缓冲区或者因为队列已满而无法执行套接字上操作, 从而导致应用程序的10048错误.

打开注册表编辑器regedit

TcpTimedWaitDelay 设置:
找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 注册表子键
并创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值
设置此值为十进制 30, 十六进制为 0×0000001e
该值等待时间将是 30 秒。
本项的默认值:0xF0(16进制), 等待时间设置为 240 秒

MaxUserPort 设置(增加最大值端口连接):
找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 注册表子键
并创建名为 MaxUserPort 的新 REG_DWORD 值
设置此值为十进制最低 32768
该值等待时间将是 30 秒。
重启windows系统。
本项的默认值:5000(十进制)

关闭注册表编辑器, 重启windows系统。
分享到:
评论

相关推荐

    mysql 发生系统错误1067的解决方法

    if not exist mysqlServer5\data\%computername%.pid goto startsvr net stop MySQL mysqlServer5\bin\mysqld-nt.exe --remove MySQL :startsvr echo MySQL 服务正在启动..... mysqlServer5\bin\mysqld-nt.exe --...

    mysql 发生系统错误1067的解决方法.docx

    if not exist mysqlServer5\data\%computername%.pid goto startsvr net stop MySQL mysqlServer5\bin\mysqld-nt.exe --remove MySQL :startsvr echo MySQL服务正在启动….. mysqlServer5\bin\mysqld-nt.exe --...

    列出网络中所有SQLSERVER服务器

    通过UDP端口1434,我们可以询问服务以获取所有实例的名称和监听的TCP/IP端口。 在VB代码中,这可能表现为创建WMI连接,查询`SQLServer`类,并将结果输出到控制台或用户界面。同时,需要确保在目标机器上SQL Server ...

    ASP技术常遇问题解答-如何获得对方机器的名称和IP地址?.zip

    在ASP(Active Server Pages)开发过程中,经常遇到需要获取客户端机器名称和IP地址的需求,这在构建交互式网站或实现特定安全策略时尤其重要。本文将深入探讨如何在ASP环境中实现这一目标,以及相关的TCP/IP网络...

    Windows_Server_2003系统下IIS配置PHP环境(图示详解版)

    在本文中,我们将详细讲解如何在Windows Server 2003系统下配置IIS以运行PHP环境,同时结合MySQL数据库和Zend Optimizer优化工具。这是一个适用于初学者的图文教程,旨在帮助用户快速搭建一个功能完备的Web开发环境...

    ASP技术常遇问题解答-如何得到主机的机器名称和IP地址?.zip

    在ASP(Active Server Pages)开发过程中,经常遇到需要获取服务器或客户端主机的机器名称和IP地址的需求。这在实现远程通信、服务器监控、用户定位等功能时尤为重要。本篇文档将详细解析如何在ASP环境中获取这些...

    JS获取客户端IP地址、MAC和主机名的7个方法汇总

    ### JS获取客户端IP地址、MAC和主机名的7个方法详解 #### 一、使用JS获取客户端IP的方法 ##### 方法一:使用ActiveX获取IP(仅适用于IE浏览器) 这种方法依赖于`ActiveXObject`来实现,因此只能在允许运行ActiveX...

    ArcGIS Enterprise 10.5安装指南(Windows Server 2012 R2为例)

    ### ArcGIS Enterprise 10.5安装指南(Windows Server 2012 R2为例) #### 1. 安装前准备 ##### 1.1 修改机器名 ArcGIS for Enterprise 的部署要求计算机名必须是完全限定域名的形式。对于域环境下的机器,可以...

    vb Winsock

    VB Winsock是Visual Basic编程环境中用于网络通信的一个关键组件,它允许开发者创建支持TCP(传输控制协议)和UDP(用户数据报协议)的应用程序。在本文中,我们将深入探讨VB Winsock的相关知识点,并结合描述中提到...

    Windows Server Core常用命令及其安装.docx

    Windows Server Core 是微软的一种精简版服务器操作系统,它专注于服务器的核心功能,如网络服务、文件服务和应用程序服务器等,而不包含图形用户界面。这个版本旨在提高安全性、减少维护成本并优化资源利用。以下是...

    javascript获取客户端网卡MAC地址和IP地址和计算机名.doc

    在文档的示例代码中,首先创建了一个`locator`对象,并使用`ConnectServer()`方法连接到本地服务器。接着创建了`foo`对象,用于接收WMI查询的结果。通过设置`Security_.ImpersonationLevel`为3,表示使用最高级别的...

    如何在project server 2007中配置OLAP

    如果你打算使用SQL Server 2005,需要额外的配置步骤,因为默认情况下,Project Server 2007可能无法与SQL Server 2005 Analysis Services (AS)无缝集成。 配置步骤如下: 1. 创建目录:在C:\Program Files\...

    最新microsoft sql server sa权限入侵方法

    根据提供的标题、描述、标签及部分内容,本文将详细介绍一种声称针对Microsoft SQL Server的SA权限入侵方法。请注意,这里介绍的内容仅供安全研究与防御目的使用,任何未经授权的入侵行为均属非法。 ### 一、背景...

    用Windows PowerShell管理Sql Server 2008 PDF版

    《用Windows PowerShell管理Sql Server 2008》一书深入探讨了如何利用Windows PowerShell这一强大的脚本语言来管理和自动化Microsoft SQL Server 2008的运维任务。本书由Ananthakumar Muthusamy与Yan Pan共同撰写,...

    正确修改Active Directory域控制器计算机名称.docx

    Active Directory 域控制器计算机名称修改是 Windows Server 系统管理员经常遇到的问题。很多人直接修改计算机名称,导致各种稀奇古怪的问题。正确的修改方式,其实并不复杂。本文将一步步地指导您正确修改 Active ...

    机器名路径_delphi_获取网络机器名路径_获取机器名路径_

    在IT行业中,获取网络机器名路径以及本地机器名路径是常见的系统编程任务,尤其是在开发网络应用或者需要识别和管理远程设备时。Delphi是一种流行的面向对象的 Pascal 编程语言,它提供了强大的Windows API和网络...

    sql服务的连接和打开[文].pdf

    3. **尝试连接**:调用`ConnectToServer`方法进行连接测试,如果返回值为52,则表示未能找到指定的主机名,此时会弹出错误消息提示用户重新输入。 ### 五、判断本机是否已安装SQL Server 最后,还需要检查当前...

Global site tag (gtag.js) - Google Analytics