2

実動 Web サーバーの ADO および mysqli 接続が非常に遅いという問題が発生しています。現在のソフトウェア セットアップは、Windows 2008 サーバー 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 ミリ秒しかかかりません。Web サイトのコードは、php、pear、mysql、apache の ini および conf ファイルを除いて、すべて SVN を介して同期されています。違いを確認するためにこれらの差分を作成しましたが、何もありません。DBの内容も完全コピーです。運用サーバーのすべてが同じマシンでホストされているため、ファイアウォールやインターネットの問題はありません。

最初の接続プロファイルには、次のコール スタックがあります。

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

2番目のもの:

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

また、ローカル ホストの代わりに IPV4 ループバック アドレスを使用するように \public_html\conf\face.ini を変更しました。(「localhost」を「127.0.0.1」に変更)

その後、すべての問題が解消されました。マシンに半ダースの IP アドレスがあるためなのか、それとも IPV6 と IPV4 のどちらを使用するかを決定しようとしているからなのかはわかりません。

于 2012-07-06T18:21:41.493 に答える