2

我的生产 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

有什么建议么?

4

2 回答 2

1

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

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

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

于 2012-07-01T19:47:57.423 回答
1

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

[mysqld]
...
bind=127.0.0.1

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

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

于 2012-07-06T18:21:41.493 回答