Apache-2.2
兩個 Windows Azure 託管服務之間的性能下降
我們有一個 Facebook 應用程序,我們正在嘗試遷移到 Azure 雲託管。我們已經打開了兩個託管服務,一個用於 MySQL 數據庫,另一個用於我們的 Web 應用程序。在每項服務上,我們都部署了一個虛擬機。
在 Web 應用程序的機器上,我們使用 PHP 5.3.14 和 Apache 2.4.2,在數據庫機器上,我們使用 Apache 2.4.2、PHP 5.3.14 和 MySQL 5.5.25。
兩台機器都是 Windows Server 2008 R2 SP1。
我們在兩個 Azure 託管服務之間存在性能問題。對於性能測試,我們執行這個簡單的 PHP 腳本,它位於數據庫機器和 Web 應用程序機器上。這只是簡單地查詢並返回目前時間 4000 次:
<?php $serverInfoArray = array("host" => HOST, "user" => USER, "pass" => PASS); //Create connection to server// $connectionFB = mysql_connect($serverInfoArray["host"], $serverInfoArray["user"], $serverInfoArray["pass"]); //Select database// mysql_select_db(DBNAME_FB_NEW, $connectionFB); mysql_query("set names utf8", $connectionFB); //For hebrew support// $time = microtime(); $time = explode(' ', $time); $time = $time[1] + $time[0]; $start = $time; for($i=0; $i < 4000; $i++) { $result = mysql_query("SELECT NOW()"); $array = mysql_fetch_assoc($result); echo $array['NOW()']; echo "<br>"; } $time = microtime(); $time = explode(' ', $time); $time = $time[1] + $time[0]; $finish = $time; $total_time = round(($finish - $start), 4); echo 'Page generated in '.$total_time.' seconds.'; ?>
當我們從數據庫機器內部訪問這個腳本時(主機 = localhost),那麼這個腳本需要不到一秒鐘的時間來完成(通常是 +-0.7 秒)。
但是,當我們嘗試從我們的Web 應用程序機器訪問這個腳本到我們的數據庫機器(主機 = IPofDataBaseMachine)時,這個腳本需要超過 5 秒才能完成!
當一個服務試圖從另一個服務接收資訊時,Azure 似乎出現了問題(只有當我們從位於 Web 應用程序服務上的 PHP 腳本查詢數據庫時才會出現性能低下的問題)。
我們還沒有找到任何關於它的文件,我想問一下你們中是否有人遇到過類似的問題,知道什麼會導致這種性能問題。
謝謝
如果我們假設虛擬機之間存在網路延遲(例如 1 毫秒),那麼您的 4000 次到數據庫的往返很容易加起來幾秒鐘。這並不罕見。
您可以查看不同的部落格(例如此處),了解其他人在 Azure 延遲方面的體驗。