mysql 无法连接问题的定位和修复过程分享 |
本文标签:mysql,无法连接 定位结果如下: 客户环境: 问题已复现 。可以优化,无法确定是webshield导致的 。 搭建环境: 搭建环境过程中遇到的几个问题: 在下载apache与php时,请注意apache与php匹配问题 。 a)PHP5.3有VC6与VC9版本,应选择VC6版本 。原因如下: i. VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本 。 b)PHP5.3的Thread Safe和Non Thread Safe版本 。Apache no_ssl版应与php Thread Safe版搭配 。若与Non Thread Safe搭配,apache启动出错:“Apache is running a threaded MPM,but your PHP Modle is not compiled to be threadsafe. You need to recompile PHP.” i. Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源 。ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本; 问题复现: PHP最长执行时间限制 。 a)php最长执行时间默认为30秒,超过30秒后被中止执行,与mysql的连接也被断开 。 网站流量大导致mysql无法连接 。 a)编写php脚本对mysql进行测试,发现当对mysql进行频繁的连接/断开操作时,mysql很快出现无法连接问题(错误代码:10048) 。当中止所有连接,2分钟后mysql又恢复正常 。若不停止连接,mysql一直无法连接 。 c)修改完注册表项后测试,mysql情况大有改善:mysql连接错误出现的情况大有减少,出错后自我恢复的能力大有提高 。 针对以上两种情况,分别对安装了webshield 1.08与未安装webshield 1.08进行了测试,两者测试结果一样 。 优化: max_execution_time的修改: 复制代码 代码如下: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] "TcpTimedWaitDelay"=dword:0000001e "MaxUserPort"=dword:00008000 |