我们有一个Facebook应用程序,我们正在尝试转移到Azure云托pipe。 我们已经打开了两个托pipe服务,一个用于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托pipe服务之间存在性能问题。 为了进行性能testing,我们运行这个简单的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.'; ?>
当我们从数据库机器内部访问这个脚本到本身 (Host = localhost)时,这个脚本花费的时间less于一秒钟(通常为+ -0.7秒)。
但是,当我们试图从我们的Web应用程序机器访问我们的数据库机器 (Host = IPofDataBaseMachine)这个脚本,这个脚本需要超过5秒钟完成!
当一个服务尝试从另一个服务接收信息时,Azure似乎有问题(低性能只发生在从位于Web应用程序服务上的PHP脚本查询数据库时)。
我们还没有find任何有关它的文档,我想问你们中的任何一个是否遇到类似的问题,对于什么会导致这种性能问题有一个想法。
谢谢
如果我们假设虚拟机之间存在networking延迟(例如1ms),那么数据库的往返时间为4000,那么您可以轻松地将其累加到几秒钟。 这并不罕见。
您可以查看不同的博客(例如此处 ),以查看其他人在Azure中的延迟方面的体验。