前几日生产环境遇到一问题,网站的同步登录部分提示Can’t connect to MySQL server on ‘localhost’ (10060),第一反应就是可能过连接数据库的相关参数了,经检查排除了这个原因。后经过多次刷新页面发现,有40%的几率是可以正常同步的,因此确定故障在mysql上,表现为间断性的拒绝mysql客户端连接,操作系统为windows 2003.

在数据库中执行show processlist,发现连接数并不多。因此不是因为mysql连接数太少导致的问题。在cmd命令提示符下运行netstat -ano查看端口状态:发现有大量的本地端口连接数据库的3306端口,并且处于LAST_ACK状态。

查找资料发现,微软默认最大数目的临时的 TCP 端口为 5000,当超过这个数值的时候,就会出错。通过对端口分析,last_act的最后一个状态的端口号刚好为5000。同时微软也给出了解决办法:

若要增加最大数量的临时端口,请按照下列步骤操作:

启动注册表编辑器。

在注册表中,找到下面的子项,然后单击 参数
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters

在 编辑 菜单上单击 新建,然后添加以下注册表项:
值名称: MaxUserPort
值类型: DWORD
值数据: 65534
有效范围: 5000-65534 (十进制)
默认值: 0×1388 (5000 十进制)
说明: 此参数控制程序从系统请求任何可用的用户的端口时所用的最大端口数。

修改后,需要重启服务器才可生效。

ps:虽然说重启后故障解决了,同时修改了数目以后也不容易再出现此类的故障。可毕竟没有找到出现大量LAST_ACK状态的根源。原来以为是服务器长久不重启造成的,可后来得知故障发生前一晚服务器刚重启过,有知道可能原因的大家可以交流下。

ps:目前已经解决。把思路说下:经过修改后发现问题并没有解决。因此决定先关闭iis服务,只开启mysql(服务器要重启,要不last_ack状态一直存在),此时连接数正常,确定不是mysql的bug;然后逐步开启iis的网站,发现当某个站打开时,3306端口timewait状态剧增,从而判定可能是这个原因。修改程序的数据库连接方式为长链接,减少mysql连接的创建(pconnect)。经过几日观察,问题解决。

后来我去看了php官方对于php长短连接的文章,得知iis在不使用fastcgi模式时,长链接还是有很大的好处的。具体的就不说了,大家自己可以找来看。

MySql出现大量LAST_ACK的解决办法的更多相关文章

  1. MySQL 5.7 Command Line Client输入密码后闪退和windows下mysql忘记root密码的解决办法

    MySQL 5.7 Command Line Client输入密码后闪退的问题: 问题分析: 1.查看mysql command line client默认执行的一些参数.方法:开始->所有程序 ...

  2. Loadrunner参数化连接oracle、mysql数据源报错及解决办法

    Loadrunner参数化连接oracle.mysql数据源报错及解决办法 (本人系统是Win7 64,  两位小伙伴因为是默认安装lr,安装在 最终参数化的时候,出现连接字符串无法自动加载出来: 最 ...

  3. MySQL数据库忘记root密码解决办法

    MySQL数据库忘记root密码解决办法 1.在运行输入services.msc打开服务窗体,找到MYSQL服务.右键停止将其关闭.如图:

  4. 【MySQL】JDBC连接MySQL的一些问题以及解决办法

    [MySQL]JDBC连接MySQL的一些问题以及解决办法 http://blog.csdn.net/baofeidyz/article/details/52017047

  5. [原创]MySQL数据库忘记root密码解决办法

    MySQL数据库忘记root密码解决办法 1.在运行输入services.msc打开服务窗体,找到MYSQL服务.右键停止将其关闭.如图:

  6. pymysql:Mysql拒绝从远程访问的解决办法

    pymysql:Mysql拒绝从远程访问的解决办法 pymysql连接数据库 # 导入pymysql模块 import pymysql # 连接database conn = pymysql.conn ...

  7. [异常篇]001.MySQL数据库忘记root密码解决办法[转载]

    MySQL数据库忘记root密码解决办法 1.在运行输入services.msc打开服务窗体,找到MYSQL服务.右键停止将其关闭.如图: 2.在运行输入cmd打开终端. 3.找到MYSQL的安装目录 ...

  8. mysql 数据库导入数据报错MySQL server has gone away解决办法

    mysql 数据库导入数据报错MySQL server has gone away解决办法: 进入数据库执行以下命令即可: set global wait_timeout = 2880000; set ...

  9. Centos7 之 MariaDB(Mysql) root密码忘记的解决办法

    MariaDB(Mysql) root密码忘记的解决办法 1.首先先关闭mariadb数据库的服务 # 关闭mariadb服务命令(mysql的话命令就是将mariadb换成mysql) [root@ ...

随机推荐

  1. 996ICU的感悟

     并不只是口头上的支持,吉多·范罗苏姆近日又在 Python 官方论坛发布一篇名为<Can we do something for 996 programmers in China?>(我 ...

  2. Processing Binary Protocols with Client-Side JavaScript

    http://blog.mgechev.com/2015/02/06/parsing-binary-protocol-data-javascript-typedarrays-blobs/ https: ...

  3. Linux CentOS更改文件的权限

    chgrp  (全称:change group) groupadd testgroup 添加用户组 chgrp testgroup test1 修改文件的所属用户组是testgroup. 如果test ...

  4. WebApp专家评委打分的两种进入模式

    A模式: 当前PC端的前期设置如下: [管理员允许时,只针对管理员指定选手] 选项选中.在现场时,管理员点击 状态未知 或下方红框所示按钮 发出打分允许指令时, 专家评委使用WebApp进入专家打分区 ...

  5. react 数据管理之state思想指南

    react的数据管理库有不少,最常听到的可能是mobx redux altjs之类的,当然还有很多其他,可以自己搜索. 为什么需要数据管理库呢,因为react本身只是为了实现view的表现,而不是数据 ...

  6. Windows server 2008 R2充当路由器实现网络的互联

    1.路由器的工作原理 当IP子网中的一台主机发送IP分组给同一IP子网的另一台主机时,它将直接把IP分组送到网络上,对方就能收到.而要送给不同IP子网上的主机时,它要 选择一个能到达目的子网上的路由器 ...

  7. 【Jenkins学习】安装配置和使用(一)

    为了能够频繁地将软件的最新版本,及时.持续地交付给测试团队及质量控制团队,以供评审,所以引入持续集成工具Jenkins,从而实现公司新产品持续集成,自动化部署. 环境准备 ●操作系统:Windows1 ...

  8. Application failed to start because it could not find or load the QT platform plugin “windows”

    只需要在.exe所在的目录下创建一个目录platforms添加进去缺失的dll即可如图: 参考链接:https://stackoverflow.com/questions/21268558/appli ...

  9. Java Swing类 例子代码:将子类继承JFrame 并且接口按键监听ActionLisetener (将内容直接添加到JFrame不创建Contaniner)

    package rom; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import ...

  10. 服务器搭建私人Git

    环境是CentOS 7.4 64位 主要参考:在服务器上搭建 Git 0. 预备 安装git yum install git 1. 开发者-生成个人SSH公钥 p.s. 书中的4.3节是[生成个人的S ...