两个 Windows Azure 托管服务之间的性能缓慢

两个 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.';

?>

当我们访问这个脚本时从数据库机器内部进入其自身(主机 = 本地主机)那么该脚本需要不到一秒的时间才能完成(通常为 +-0.7 秒)。

但是,当我们尝试从我们的Web 应用程序机器到我们的数据库机器(主机 = IPofDataBaseMachine),此脚本需要超过 5 秒才能完成!

当一个服务尝试从另一个服务接收信息时,Azure 似乎出现了问题(仅当我们从位于 Web 应用程序服务上的 PHP 脚本查询数据库时才会出现性能低下的情况)。

我们没有找到有关此问题的任何文档,我想问一下你们中是否有人遇到过类似的问题,知道是什么原因导致了这种性能问题。

谢谢

答案1

如果我们假设虚拟机之间存在网络延迟(例如 1ms),那么您与数据库的 4000 次往返很容易累积到几秒钟。这并不罕见。

你可以看看不同的博客(例如这里) 了解其他人在 Azure 方面遇到的延迟情况。

相关内容