web-dev-qa-db-ja.com

DBがPHPコードと同じマシン上にない場合、PHP-> MSSQLが非常に遅いのはなぜですか

WebサイトをAzureに移動しようとしたときに、MSSQLと通信するPHPコードに問題があることがわかりました。

現在の専用ホスト(PHPとDBの両方をホストしている))では、ページに移動するのに通常2秒もかかりません。また、SMSそしてそれらは1秒未満かかります。クエリによって返されるデータの量は非常に少なく、10〜20レコード、確かに合計で100kb未満です。

AzureでホストされているWebサイト(Azure SQLデータベースに接続している)では、同じページの読み込みに約40秒かかります。さらに調査したところ、これは、元のWebサイトがリモートデータベース(別の専用マシンまたはAzure SQLインスタンスのいずれか)を指している場合に、データベースがPHP-と同じマシン上にないことが原因である可能性があります。 )ページの読み込み時間が40秒の範囲になります。

Azureの場合、Webサイトとデータベースの両方が同じリージョン(北ヨーロッパ)にあります。私たちのマシンを使用してテストする場合、両方とも英国にあります。

現在のウェブホスティングマシンはPHP 5.4およびMicrosoftSQL Server ExpressEditionを実行しています。AzureWebサイトはPHP 5.4で実行されています。

どちらの場合も、3.0.1 MicrosoftSQLSRVドライバーを使用しています

リモートSQLDBに接続するときのパフォーマンスをどのように改善できますか?

Stackoverflowに関する同じ質問に答えて、これをここにクロスポストしました: https://stackoverflow.com/questions/15835623/why-is-php-mssql-very-slow-when-the-db -is-not-on-the-same-machine-as-the-php

1
Tony Harrison

これを引き起こす可能性のあるものはたくさんあります。秘訣はそれを正しいものに削ることです。最も可能性の高い原因は、ネットワークの問題、接続の問題、またはDBの問題です。この順序で:

私が最初に試みることは、ネットワークの問題を除外することです。WebサーバーからDBサーバーにpingを実行してみてください。接続文字列はDNSまたはIPを使用していますか? DNSとIPをpingすると違いがありますか?

Ping時間が正常で高速な場合、DBログインの問題である可能性がありますか? SSMSからDBサーバーに接続できますか?速いですか?

それでもすべて問題がない場合は、SSMSを使用してWebサイトが実行するクエリを実行します-それでも高速ですか?そうでない場合、それはDBの問題です-新しいDBはおそらく元のDBと同一ではありません。おそらく、特定のインデックス/制約がコピーされませんでした。

1
TTT