≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > MySQL

MySQL 无法连接问题的定位和修复过程分享

人气:320 时间:2020-07-09

这篇文章主要为大家详细介绍了MySQL 无法连接问题的定位和修复过程分享,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编小韵来看看吧!

定位结果如下:

客户环境:
windows server 2003 r2 standard edition sp2
mysql Ver 14.12 Distrib 5.0.18, for Win32 (ia32)
apache 2.2
瑞星
webshield客户端1.08

问题已复现。可以优化,无法确定是webshield导致的。

搭建环境:
windows server 2003 r2 standard edition sp2
mysql 5.0.18 for win32
apache-2.2.21-win32-x86-no_ssl
php-5.2.17-win32-vc6-x86
瑞星23.00.50.25

搭建环境过程中遇到的几个问题:

在下载apache与php时,请注意apache与php匹配问题。

a)PHP5.3有VC6与VC9版本,应选择VC6版本。原因如下:

i. VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本。
ii. VC9版本是使用Visual Studio 2008编译器编译的,如果你的PHP是用IIS来架设的,那你就选择VC9版本。

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版本;
ii. Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择Non Thread Safe版本。
注意apache对网站及PHP的正确配置。特别注意配置文件中LoadModule, PHPIniDir,DocumentRoot,ServerRoot,Directory,DirectoryIndex,AddType application/x-httpd-php等项的配置
安装后 mysql 后(管理员账号密码:admin/admin),在PHP代码中使用admin连接数据库失败,cmd执行mysql –u root -p启用root用root可正常连接数据库。

问题复现:

PHP最长执行时间限制。

a)php最长执行时间默认为30秒,超过30秒后被中止执行,与mysql的连接也被断开。
b)尝试增大此值,修改php目录下的php.ini配置文件,将max_execution_time = 30 改为max_execution_time = 300。如果设为0,表示不限制PHP最大执行时间。
c)避免了因最长执行时间限制而导致mysql连接失败。

网站流量大导致mysql无法连接。

a)编写php脚本对mysql进行测试,发现当对mysql进行频繁的连接/断开操作时,mysql很快出现无法连接问题(错误代码:10048)。当中止所有连接,2分钟后mysql又恢复正常。若不停止连接,mysql一直无法连接。
b)尝试从两方面优化:
i. 修改windows注册表项TcpTimedWaitDelay值为30(默认为240秒),减少此条目的值允许 TCP/IP 更快地释放已关闭的连接, 为新连接提供更多资源。
ii. 修改windows注册表项MaxUserPort为53768 (该值表示从系统请求任何可用用户端口时所用最大端口数,TCP/IP 可指定的最高端口号,默认值为5000)以处理更多的请求。

c)修改完注册表项后测试,mysql情况大有改善:mysql连接错误出现的情况大有减少,出错后自我恢复的能力大有提高。

针对以上两种情况,分别对安装了webshield 1.08与未安装webshield 1.08进行了测试,两者测试结果一样。

优化:

max_execution_time的修改:
打开php目录下的php.ini文件,找到max_execution_time = 30 这行,将30修改为想要的数字。
TcpTimedWaitDelay与MaxUserPort的修改:

代码如下:


[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"TcpTimedWaitDelay"=dword:0000001e
"MaxUserPort"=dword:00008000

 

本文来自:http://www.q1010.com/177/10000-0.html

注:关于MySQL 无法连接问题的定位和修复过程分享的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:MYSQL

您可能感兴趣的文章

  • 解决bash: MySQL: command not found 的方法
  • MySQL中的find_in_set的使用方法介绍
  • 内网ssh/MySQL登录缓慢的解决方法
  • MySQL 5.6 如何更改安全的处理密码探讨
  • 查询MySQL中执行效率低的sql语句的方法
  • MySQL占用CPU过高的解决办法(添加索引)
  • SQL字符型字段按数字型字段排序实现方法
  • Windows环境下重置MySQL密码操作命令
  • MySQL 按照时间段来获取数据的方法
  • MySQL SELECT同时UPDATE同一张表问题发生及解决
上一篇:基于ubuntu中使用MySQL实现opensips用户认证的解决方法
下一篇:Windows环境下重置MySQL密码操作命令
热门文章
  • mysql 修改character_set_server为utf-8的简单示例
  • 解决MySQL丢失文件localhost.localdomain.pid、mysql.sock的示例
  • MySQL 数据类型binary和varbinary的简单示例
  • MySQL:reading initial communication packet问题解决方法
  • MySql 表类型MYISAM、InnoDB区别
  • bash: mysql: command not found 的解决方法
  • MYSQL默认用户名ROOT修改方法
  • MySQL 常用命令菜鸟教程
  • MySQL 使用命令行新建用户并授予权限
  • MySql 数据库物理文件存放位置查看示例
  • 最新文章
    • MySQL查看死锁与解除死锁的简单示例
    • MySQL 慢查询的功能实例
    • MySQL查看死锁与去除死锁的简单示例
    • MySQL找出未提交事务的SQL的简单示例
    • MySQL锁阻塞的的简单示例
    • MySQL中的binary类型使用操作的示例
    • SQL优化教程之in与range查询的简单示例
    • MySQL 的 21 个规范、优化最佳实践!
    • MySQL 字符类型大小写敏感的简单示例
    • 解决mybatis-plus分页传入参数后sql where条件没有limit分页信息的问题

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。