MySql出现大量LAST_ACK的解决办法
前几日生产环境遇到一问题,网站的同步登录部分提示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的解决办法的更多相关文章
- MySQL 5.7 Command Line Client输入密码后闪退和windows下mysql忘记root密码的解决办法
MySQL 5.7 Command Line Client输入密码后闪退的问题: 问题分析: 1.查看mysql command line client默认执行的一些参数.方法:开始->所有程序 ...
- Loadrunner参数化连接oracle、mysql数据源报错及解决办法
Loadrunner参数化连接oracle.mysql数据源报错及解决办法 (本人系统是Win7 64, 两位小伙伴因为是默认安装lr,安装在 最终参数化的时候,出现连接字符串无法自动加载出来: 最 ...
- MySQL数据库忘记root密码解决办法
MySQL数据库忘记root密码解决办法 1.在运行输入services.msc打开服务窗体,找到MYSQL服务.右键停止将其关闭.如图:
- 【MySQL】JDBC连接MySQL的一些问题以及解决办法
[MySQL]JDBC连接MySQL的一些问题以及解决办法 http://blog.csdn.net/baofeidyz/article/details/52017047
- [原创]MySQL数据库忘记root密码解决办法
MySQL数据库忘记root密码解决办法 1.在运行输入services.msc打开服务窗体,找到MYSQL服务.右键停止将其关闭.如图:
- pymysql:Mysql拒绝从远程访问的解决办法
pymysql:Mysql拒绝从远程访问的解决办法 pymysql连接数据库 # 导入pymysql模块 import pymysql # 连接database conn = pymysql.conn ...
- [异常篇]001.MySQL数据库忘记root密码解决办法[转载]
MySQL数据库忘记root密码解决办法 1.在运行输入services.msc打开服务窗体,找到MYSQL服务.右键停止将其关闭.如图: 2.在运行输入cmd打开终端. 3.找到MYSQL的安装目录 ...
- mysql 数据库导入数据报错MySQL server has gone away解决办法
mysql 数据库导入数据报错MySQL server has gone away解决办法: 进入数据库执行以下命令即可: set global wait_timeout = 2880000; set ...
- Centos7 之 MariaDB(Mysql) root密码忘记的解决办法
MariaDB(Mysql) root密码忘记的解决办法 1.首先先关闭mariadb数据库的服务 # 关闭mariadb服务命令(mysql的话命令就是将mariadb换成mysql) [root@ ...
随机推荐
- [UE4]Return Node节点好用法
蓝图自定义函数中,碰到“Return Node”也会推出当前的函数,跟高级语言的“return”是一样的用法
- log4j自带的两个类MDC和NDC作用以及用途
原文转载至: https://blog.csdn.net/joeyon/article/details/52982330 要想实现获取IP并显示在log中必须先了解log4j自带的两个类MDC和NDC ...
- 初始化ha环境下的hadoop的hdfs
1)启动zookeeper2)启动所有的journalnode[hadoop@datanode1 ~]$ ~/hadoop-2.7.3/sbin/hadoop-daemon.sh start jour ...
- JVM内存调优
JVM性能调优有很多设置,这个参考JVM参数即可. 主要调优的目的: 控制GC的行为.GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特性来更改GC行为 控制JVM堆栈大 ...
- vue 父组件主动获取子组件的数据和方法 子组件主动获取父组件的数据和方法
Header.vue <template> <div> <h2>我是头部组件</h2> <button @click="getParen ...
- KVM总结-KVM性能优化之内存优化
我们说完CPU方面的优化(http://blog.csdn.net/dylloveyou/article/details/71169463),接着继续第二块内容,也就是内存方面的优化.内存方面有以下四 ...
- Service 和 IntentService的区别;
Srevice不是在子线程,在Srevice中做耗时操作一样ANR,然后我们就会用到IntentService,IntentSrevice不但擅长做耗时操作,还有一个特点,用完即走: 在Srevice ...
- win10 java1.7安装笔记
博主不选择安装C盘,选择在D盘安装,新建Java文件夹,在Java文件夹中新建两个子文件夹,一个命名jdk1.7,一个命名jre,如果不区分目录安装jdk和jre,会导致一些文件的缺失,导致一些错误, ...
- jmeter解决登录token获取
1.以百度登录为例 2.打开console 3.根据console结果设置公共的header在test plan 4.建立测试计划-test plan 5.正则表达式提取器,获取token 6.登录t ...
- C# .NET Web Api 保存Session
Global.asax中添加: public override void Init() { this.PostAuthenticateRequest += (sender, e) => Http ...