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@ ...
随机推荐
- PLSQL导出对象的表结构和表数据
https://jingyan.baidu.com/article/fcb5aff78e6a48edab4a7146.html
- switch case 变量初始化问题
今天再写alsa的时候遇到一个稀奇古怪的问题,网上看了下资料,摘出来入下 代码: int main() { ; switch(a) { : ; break; : break; default: bre ...
- 入坑机器学习?听听MIT在读博士的AI心得
随着人工智能技术的火热,越来越多的年轻学者正准备投身其中,开启自己的研究之路.和所有其他学科一样,人工智能领域的新人总会遇到各种各样的难题,其中不仅有研究上的,也有生活方面的.MIT EECS 在读博 ...
- MySQL数据库的高可用方案总结
高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用.虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法 ...
- TableStore:创建SyncClient+getRow读取一行数据
1.通过控制台或者客户端,在TableStore中新建了实例owlforest,在实例详情中获取到实例访问地址endPoint 2.新建表user,确定主键为userid(Interger)类型,因为 ...
- scrapy中 selenium(中间件) + 语言处理 +mysql
在通过scrapy框架进行某些网站数据爬取的时候,往往会碰到页面动态数据加载的情况发生,如果直接使用scrapy对其url发请求,是绝对获取不到那部分动态加载出来的数据值.但是通过观察我们会发现,通过 ...
- linux进程端口防火墙
进程端口: 1.netstat –apn :查看所有的进程和端口使用情况 2.查看8080端口是否被占用 [root@localhost bin]# lsof -i:8080 3.查看防火墙开放的端口 ...
- [java,2017-12-01] 播放音频文件
废话不多说,直接上代码 jar包 <!-- 2017-12-01音频播放jar包 --> <dependency> <groupId>javazoom</gr ...
- hive之窗口函数
窗口函数 1.相关函数说明 COVER():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化 CURRENT ROW:当前行 n PRECEDING:往前n行数据 n FOLLO ...
- 38.spiderkeeper的配置
配置spiderkeeper管理scrapy爬虫 1.安装所需文件包pip install spiderkeeper pip install scrapyd pip install scrapy_cl ...