0

在尝试将我们的网站迁移到 Azure 的过程中,我们发现我们的 PHP 代码与 MSSQL 对话存在问题。

在当前的专用主机(同时托管 PHP 和 DB)上,访问一个页面通常需要不到 2 秒的时间。我还通过 SSMS 运行了必要的查询,它们花费的时间不到 1 秒。查询返回的数据量非常小 - 10-20 条记录,当然总共不到 100kb。

使用 Azure 上托管的网站(连接到 Azure SQL 数据库),加载相同的页面大约需要 40 秒。进一步调查表明,这可能是由于数据库与 PHP 不在同一台机器上造成的 - 当原始网站指向远程数据库(另一台专用机器或 Azure SQL 实例)时,页面加载时间会上升到40 秒范围。

在 Azure 案例中,网站和数据库都位于同一区域(欧洲北部)。使用我们的机器进行测试时,两者都位于英国。

当前的虚拟主机运行 PHP 5.4 和 Microsoft SQL Server Express Edition。Azure 网站在 PHP 5.4 上运行。

在这两种情况下,我们都使用 3.0.1 Microsoft SQLSRV 驱动程序

连接到远程 SQL 数据库时如何提高性能?

此问题已在https://serverfault.com/questions/496505/why-is-php-mssql-very-slow-when-the-db-is-not-on-the-same交叉发布到服务器故障-machine-as-the-php

4

2 回答 2

2

在我的情况下,DNS解析很慢,在输入IP而不是MSSQL名称后一切正常

于 2017-11-28T15:31:02.400 回答
1

不知道为什么您的响应时间会从 2 秒跳到 40 秒,但是……需要考虑一些事项:

  • 如果您的 SQL 数据库实例位于另一个数据中心,您将看到延迟和带宽费用。如果数据中心按大陆分开(例如,一个在美国西部,一个在香港),您会看到比美国西部 <--> 美国东部更多的延迟)。
  • 如果您因查询而传输大量数据,这将受到网络管道大小的限制。每个核心可以获得 100Mbps,但超小型 (XS) 实例只有 5Mbps 带宽。

您提到在 SQL Server Management Studio 中测试查询(至少我假设 SMS 确实是 SSMS)。对 SQL 数据库进行测试时的查询性能如何?如果它接近 40 秒标记,则很可能在将数据从本地数据库移植到 SQL 数据库实例时缺少索引。

于 2013-04-05T14:08:28.657 回答