Chinaunix首页 | 论坛 | 博客
  • 博客访问: 88640
  • 博文数量: 41
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 277
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-14 11:43
文章分类

全部博文(41)

文章存档

2014年(4)

2013年(37)

我的朋友

分类: 网络与安全

2013-06-04 18:41:50

【数据库闪断】微软补丁KB967723造成MySQL频繁无法连接的解决办法

微软补丁KB967723造成MySQL频繁无法连接,刷新即恢复正常的解决方法 (Can not connect to MySQL server)2010-02-11 00:10这几天有一台MySQL数据库服务器出现了频繁的掉线情况,通过排查,并没有排查出哪个网站被攻击,百思不得其解中的时候,群里有个朋友说是因为微软KB967723造成的,网上搜索了一下,果然很多人都是这样的问题,都是windows系统下安装的MySQL造成的,网上一共提供了两种方法:

微软补丁KB967723造成MYSQL经常连接失败解决方法

微软原文地址 :

1,卸载微软补丁KB967723 (不建议
步骤:在 添加和删除程序 中(勾选上方的“显示更新”)在里面可以看到更新的KB967723这个补丁,然后就想卸载普通软件一样卸载,卸载中会提示你,如果卸载可能导致程序运行出错,没关系,选择“是”,继续卸载。卸载完成后重启数据库服务器。

2,修改注册表(推荐此方法
应用程序需要快速释放和创建新连接, 但是由于 TIME_WAIT 中存在的连接超过默认值,导致较低吞吐量.

解决方案:
和本错误密切相关的两个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 并设置为双字节(DWORD)类型
设置此值为十进制 30 ~ 60 
该值等待时间将是 30 ~ 60 秒。
本项的默认值:0xF0(16进制), 等待时间设置为 240 秒

MaxUserPort 设置(增加最大值端口连接):
找到 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/TCPIP/Parameters 注册表子键
并创建名为 MaxUserPort 的新 DWORD 值
设置此值为十进制最低 32768 (推荐值)
建议值为 65533 {有效范围: 5000 65534 (十进制)}
本项的默认值:5000(十进制)
说明: 此参数将控制程序从系统请求任何可用的用户端口时使用的最大端口数。 通常,1024 的值和包含的 5000 之间分配临时的 (短) 端口。退出注册表编辑器,并重新启动计算机。

关闭注册表编辑器, 重启windows系统,问题解决。以上两种方法,第一种已经得到验证可以正确解决,第二种方法正在验证中。

阅读(450) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~