我在使用 Umbraco CMS(当前版本为 13.5.1)的 Web 应用程序中遇到了一些性能瓶颈(尽管在多个颠覆版本中都观察到了该问题)。具体来说,当利用 Umbraco 的 _contentService 创建或编辑节点时,不同数据库设置之间存在显着的性能差异。
`
var stopwatch = new Stopwatch();
stopwatch.Start();
var isSaved = false;
if (!isToPublish)
{
isSaved = _contentService.Save(node).Success;
}
else
{
isSaved = _contentService.SaveAndPublish(node).Success;
}
stopwatch.Stop();
var elapsed = stopwatch.ElapsedMilliseconds;
`
使用 SQL Server(在 Docker 容器中)本地运行应用程序时,节点创建大约需要 300 毫秒。但是,当切换到 Azure SQL 数据库(S1 层)时,相同的操作需要 3 到 6 秒。使用物理 SQL Server 时也会发生这种性能下降。
性能下降似乎与网络延迟或数据库设置有关,因为只有在将 Umbraco 与非本地数据库一起使用时才会出现此问题。
我尝试了不同的连接字符串,但没有发现任何改进。
`
“umbracoDbDSN”:“服务器=tcp:XXXX.database.windows.net,1433;数据库=YYYYY;用户ID=UUUU@IIIIII;密码=TTTTTTTTTTTT;”
或者
“umbracoDbDSN”:“服务器=XXXX.database.windows.net,1433;数据库=YYYYY;用户ID=UUUU;密码=TTTTTTTTTTTT;”,
`
有人在使用 Umbraco 和 Azure SQL 时遇到过类似的问题吗?使用 Azure 数据库时是否有任何优化性能的建议?
我想提高此操作的性能,并承认网络延迟会导致一些性能损失。然而,目前的时间增长远远大于预期。
我认为 Umbraco 生产站点的最低推荐级别是 S2。我预计 S1 在保存/发布时会慢一些,因为这是相当数据库密集型的。如果您将实例升级到 S2,这会对您的性能数据产生很大影响吗?
也就是说,您看到的延迟比我预期的要高。站点和数据库是否位于同一地理区域/全部位于 Azure 中?
我还会检查您是否有任何其他代码挂接到保存和发布事件处理程序中,最后检查您的检查设置,因为如果配置不正确,在 Azure 中可能会变慢,但我又不期望你看到的大幅下降。