解决方案
通过对导航进行一些自定义来解决这个问题。我们的导航也有数百个使用“ContentMenuItem”的链接。每个项目的惰性查找以及最重要的是我们的自定义视图生成让它变得非常慢。我们将事情带到客户端(使用 ajax 请求),并且在页面加载时只加载了很小的导航足迹。这解决了整个问题。
问题
我们遇到了一个非常奇怪的性能问题。我们正在使用 Orchard CMS 1.9.1,这是 orchardproject.net 提供的最新版本
我们有两个环境 Stage 和 QA。大约 2 周前,我们创建了用于 QA 的数据库作为 Stage DB 的克隆。两个应用程序的代码库完全相同。
Stage 应用程序的响应时间非常糟糕。在 QA 平台上,除了导航之外什么都没有的页面大约需要 3 到 4 秒,而在暂存该页面的 100% 副本上大约需要 20 秒。
我们将这些托管在 Azure 上,一旦我们将其导出并在本地导入,我们就会看到相同的行为。通过 NewRelic 分析,我们看到数据库查询正在使用 aaprox。Stage DB 的时间是 QA 的两到三倍。
我们尝试为这两个应用程序切换数据库,我们得到相同的结果,这提供了一些线索,表明它与数据库有关。
我们尝试研究 SQL 分析,但我们无法从中获得任何有用的见解,因为它涉及数百个底层 Nhibernate 查询,这使得分析正在发生的事情变得非常困难。
请指导我们应该调查什么。
非常感谢