【问题标题】:ADO and msqli connections very slowADO和mysqli连接很慢
【发布时间】:2012-06-21 15:00:16
【问题描述】:

我的生产 Web 服务器的 ADO 和 mysqli 连接速度非常慢。当前的软件设置是 windows 2008 server R2 Standard Edition SP1、Apache 2.4、PHP 5.3.10、MySql 5.5.24、Pear 1.94、Zend Engine 2.30 版。

我使用 XDEBUG 分析了代码,它显示每个初始连接大约需要 1200 毫秒(无论访问的页面如何),而在我的本地开发机器和另一台测试服务器上,连接只需要大约 8 毫秒。除了 php、pear、mysql、apache ini 和 conf 文件之外,网站的代码都是通过 SVN 同步的。我已经对这些进行了比较以检查差异,但没有任何差异。数据库内容也是完整的副本。生产服务器的所有内容都托管在同一台机器上,因此不存在任何防火墙或互联网问题。

第一个连接配置文件具有以下调用堆栈:

ADOConnecton->Connect
ADODB_mysql->_connect
php::mysql_connect

第二个:

php::mysqli->mysqli

有什么建议吗?

【问题讨论】:

  • 所以第一个代码块说你连接到 mysql 3 次?您不应该基本上将与 mysql 的连接存储在单例中,然后将其传递给需要使用数据库的操作吗?
  • @Tony 如果您尝试连接命令行客户端,您是否有同样的延迟?另外,您是连接到“localhost”还是“127.0.0.1”?
  • Localhost,它看起来是这样..虽然很难说,因为您无法配置命令行客户端。
  • $connection->Connect() 调用的第一个参数是什么?还请比较mysql -hlocalhostmysql -h127.0.0.1的连接时间。

标签: php mysql apache mysqli windows-server-2008


【解决方案1】:

通常(第一次)连接的速度取决于 DNS 解析。 可能是:

  • 客户端解析服务器名称
  • 服务器解析客户端名称以匹配访问规则

使用主机文件让客户端/服务器知道服务器/客户端地址: http://en.wikipedia.org/wiki/Hosts_(file)

【讨论】:

    【解决方案2】:

    我编辑了 Mysql my.ini 以将 mysql 服务更改为仅绑定到 IPV4 环回适配器。

    [mysqld]
    ...
    bind=127.0.0.1
    

    我还更改了 \public_html\conf\face.ini 以使用 IPV4 环回地址而不是本地主机。 (将“本地主机”更改为“127.0.0.1”)

    在那之后,所有问题都消失了。我不确定是因为机器有六个 IP 地址,还是因为它试图决定是使用 IPV6 还是 IPV4。

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多