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
これを引き起こす可能性のあるものはたくさんあります。秘訣はそれを正しいものに削ることです。最も可能性の高い原因は、ネットワークの問題、接続の問題、またはDBの問題です。この順序で:
私が最初に試みることは、ネットワークの問題を除外することです。WebサーバーからDBサーバーにpingを実行してみてください。接続文字列はDNSまたはIPを使用していますか? DNSとIPをpingすると違いがありますか?
Ping時間が正常で高速な場合、DBログインの問題である可能性がありますか? SSMSからDBサーバーに接続できますか?速いですか?
それでもすべて問題がない場合は、SSMSを使用してWebサイトが実行するクエリを実行します-それでも高速ですか?そうでない場合、それはDBの問題です-新しいDBはおそらく元のDBと同一ではありません。おそらく、特定のインデックス/制約がコピーされませんでした。