PHP:远程 MySQL 连接非常慢

Posted

技术标签:

【中文标题】PHP:远程 MySQL 连接非常慢【英文标题】:PHP: Remote MySQL connections very slow 【发布时间】:2012-01-03 16:14:42 【问题描述】:

我有两台服务器,都运行 CentOS 5.7 和 cPanel-CURRENT。一个是 x86,另一个是 x64。两者都使用 Apache 2.2.21、php 5.3.8 和 mysql 5.1。

如果我在任何一台服务器上查询本地数据库,结果会立即返回。在这种情况下,将返回几千个结果。但是,从一台服务器到另一台服务器运行相同的查询,查询需要 10 多秒才能完成。

如果我使用 MySQL Workbench 5.2 从我的工作站用相同的查询查询远程数据库,它会在不到一秒的时间内完成,这让我认为 PHP 或其他与服务器相关的问题存在问题。

有没有其他人遇到过这个问题并且知道如何解决它?任何帮助将不胜感激。

【问题讨论】:

试试 mysql_pconnect() php.net/manual/en/function.mysql-pconnect.php 可能会有帮助 使用持久连接没有帮助。查询仍然需要相同的时间才能完成。 可能是您的数据库有点不同?例如。并非本地计算机上的所有索引都存在于远程服务器上。 php 在远程 mysql 服务器上运行良好,可能还有其他问题。网络连接呢? Ping远程服务器。 如果我在本地 PC 上使用 MySQL Workbench 通过同一连接连接到远程数据库,没问题。 请澄清:您使用的是 php 脚本中的 pdo 吗?您是否输入了主机名或 IP 地址来连接到 mysql 服务器?您是否运行过查询并获得查询的实际完成时间或显示输出的时间? 【参考方案1】:

初步猜测:

这可能是 DNS 问题,您可以在 my.cnf 中使用 --skip-name-resolve 选项,或者您可以在 MySQL 授权表中仅使用 IP 地址。

第二次猜测:

可能是安全级别有问题,建议暂时disable selinux或者防火墙重新运行测试。

【讨论】:

我在 PHP 和 MySQL Workbench 中都使用 IP 地址连接到远程服务器。 “--skip-name-resolve”也在配置文件中,服务器已重新启动。最后 selinux 被禁用(运行 cPanel 的要求之一),我尝试禁用防火墙但无济于事。 您注意到任何改进了吗?你能告诉我连接功能需要多长时间吗?我想知道究竟什么是耗时的,而您的问题实际上并不清楚。 在配置文件中,它应该是“skip-name-resolve”而不是“--skip-name-resolve” - 前面的破折号仅在您启动mysqld时用作参数服务。 而且,“skip-name-resolve”行应该在 [mysqld] 下(或至少在那个块中) 我遇到了同样的问题。尝试查看 /etc/resolve.conf,并 ping 配置的 DNS 服务器。也许无法访问它。【参考方案2】:

我在 PHP/MySQL 应用程序中遇到了这个确切的问题。

只是想分享在 my.ini 中添加“skip-name-resolve”为我修复了它。我对此感到有些困惑,因为我在桌面 1 上的应用程序正在使用 IP 地址访问桌面 2(mysql)。我在两个 Windows 7 桌面之间切换。

【讨论】:

以上是关于PHP:远程 MySQL 连接非常慢的主要内容,如果未能解决你的问题,请参考以下文章

mysql远程连接很慢问题解决

mysql 远程连接速度慢的解决方案

PerformanceCounter 在连接远程服务器时非常慢

MS 通过 odbc 访问 mySql 连接慢

解决远程连接mysql很慢的方法(mysql_connect 打开连接慢)

解决远程连接mysql很慢的方法(mysql_connect 打开连接慢)