前几日生产环境遇到一问题,网站的同步登录部分提示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. vue 路由 以及默认路由跳转

    https://router.vuejs.org/ vue路由配置: 1.安装 npm install vue-router --save / cnpm install vue-router --sa ...

  2. React 懒加载组件

    //组件第一次初始化的时候加载. import React, {PropTypes} from 'react'; //import AppComposer from './views/App/AppC ...

  3. LEGB

    找寻变量的调用顺序采用LEGB原则(即就近原则) B —— Builtin(Python):Python内置模块的命名空间 (内建作用域) (内置命名空间) G —— Global(module): ...

  4. python数字

    #=====>part1:数字类型#掌握:int,float#了解:Long(在python2中才有),complex# num=10# num=int(10)# print(type(num) ...

  5. matlab 画图参考小程序

    x=0.1:0.1:0.9; a=[41.37,44.34,44.34,44.66,44.66,44.66,98.85,98.85,98.85];%xxxxxx b=[22.10,22.39,22.3 ...

  6. 学习js第三天小结

    1.冒泡排序分析: 例:将数组[9,8,7,6,5,4,3,2,1,0]按照从小打大的顺序进行冒泡排序. 演变过程: 第一趟: 8,7,6,5,4,3,2,1,0,9    比较了9次: 第二趟: 7 ...

  7. python学习之----lxml库和HTML parser

    lxml 这个库(http://lxml.de/)可以用来解析HTML 和XML 文档,以非常底层的实现而闻名 于世,大部分源代码是用C 语言写的.虽然学习它需要花一些时间(其实学习曲线越 陡峭,表明 ...

  8. 逻辑卷(lv)管理(LVM)

    可以灵活改变分区大小.这里的分区叫做lv,lv创建在 vg中,vg由pv组成.pv可以由磁盘创建也可以由物理分区创建.灵活改变分区大小,就是调整lv的大小.lv可以调整的范围受到vg大小的限制,而 v ...

  9. Java可视操作界面例子

    package rom; import java.lang.*; import java.awt.*; import java.awt.event.ActionEvent; import java.a ...

  10. Laravel-初体验笔记

    一直想学Laravel却动不了手,刚好需要研究一个workflow之类的功能,有个Laravel项目一个登陆就把我搞晕,看Laravel文档看的也不能看进去,直接新建个Laravel仿一个,动手搞起来 ...