这个问题的现象是网站会提示无法连接数据库,phpmyadmin当然也无法连接,重启mysql没有效果,需要重启iis才能恢复正常,一段时间后仍然出现相同问题。
由于服务器没有mysql日志,看不到错误号,不过在一次无意间重置其中一个数据库的密码是提示10055,这个错误是由于“系统缓冲区空间不足或列队已满,不能执行套接字上的操作”,应该是哪个网站程序连接导致的,服务器网站数量不少,短时间内无法检查,先想办法能不能避免这个问题吧。如此奇怪的问题还是第一次遇到,综合网上的搜索结果我是这么设置的:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpTimedWaitDelay 修改为30-60之间的双字节,另外有一部分观点认为是并发连接过多,虽然我认为修改这个能解决的可能性不大,但是也修改了mysql最大连接数,改成了1000。
以上是我第一次的处理方法,不过这一回合扑街了,这果断不能忍啊。
于是准备找到“真凶”,先看下3306的连接情况吧
C:\Documents and Settings\Administrator>netstat -aon|findstr “3306″
TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 2860
TCP 127.0.0.1:2635 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2638 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2643 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2652 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2663 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2665 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2667 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2668 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2670 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2671 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2672 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2678 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2685 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2689 127.0.0.1:3306 TIME_WAIT 0
TCP 127.0.0.1:2693 127.0.0.1:3306 TIME_WAIT 0
好像是有点问题,不过意义不大,然后检查了事件查看器,没有异常的报错,不过安全性中有几个用户异常,既然有异常就先停止账户吧。这边顺带说一下事件查看器的检查,如果你也是遇到这个问题,而事件查看器中有ID:333 注册表启动的 I/O 操作恢复失败 的类似报错可以看下微软的解决方法:http://support.microsoft.com/kb/970054/zh-cn ,这个我没测试过的。
第二次的检查没什么实质性的操作,不出所料再次扑街。
花了这么长时间还是无法解决让我准备重做系统了,不过我想这并非系统问题,还是原来的网站还是会出现同样的问题吧,于是我先做了第三次操作,设置了一个重启iisreset的任务计划,时间间隔自己看情况设置,访问量大的服务器不建议这样设置。
这招属于伤敌一千自损八百呀,要是有完美的解决方法我再更新吧。