我对Sitecore CMS有一个相当耗时的问题。
是否可以缩短每次在bin文件夹或web.config中进行更改时应用程序池回收所需的时间?
服务器需要2到5分钟才能在更改后立即响应。
有什么想法吗?
答案 0 :(得分:4)
来自sitecore的alex shyba上有一篇文章Reducing Sitecore Startup time
文章摘要是
<runtime>
<generatePublisherEvidence enabled="false"/>
</runtime>
<setting name="Counters.Enabled" value="false" />
关于提高sitecore性能的文章很多我在下面列出了几个链接:
答案 1 :(得分:1)
他需要重新启动应用程序池才能加载新的dll
您可以尝试最小化您在启动时所做的事情(但我猜它主要是您无法影响的sitecore东西)所以我能给出的最佳建议是让2个网络服务器带有内容切换。
<登记/>
您将在2台服务器上运行您的应用程序,内容交换机决定哪个服务器处理哪个请求(请注意会话和静态,因为每个服务器都不会知道另一个)。
如果在某些时候您需要发布新版本,您只需指示您的内容交换机将所有流量指向Web服务器A.然后部署到Web服务器B,通过不通过内容交换机的直接URL打开网站并确保它工作正常+热身。
然后告诉内容交换机将所有流量指向B,并且您可以随时更新Web服务器A并将内容交换机切换回正常模式。
答案 2 :(得分:1)
我也有这个问题。
无论出于何种原因,我的本地副本大约需要5分钟才能在任何更改或新网站启动后完全启动。测试任何东西都是非常可怕的。这只是当地的一个问题。我的开发服务器环境和生产似乎没有受到影响。
我发现了一个分析工具,它允许我找到一个异常值控制器,它需要花费大量时间来渲染。试试这个......
在我的情况下,我发现最大的问题来自一个对一个项目进行昂贵搜索的控件。
它看起来像这样 - &gt; Sitecore.Context.Database.SelectItems("" + Sitecore.Context.Item.Paths.Path + "/ancestor-or-self::*[@@templateid='" + templateId + "']");
这主要是本地问题,因为SQL服务器远离我的机器,而其他服务器位于同一建筑物中。因此开发和生产相对不受影响。
答案 3 :(得分:0)
但是2-5分钟听起来很极端。这不正常。你的硬件是最新的吗? 我也会查看你的预取缓存。在您的开发环境中,您可能不希望我在启动时获取太多内容,因为在开发过程中不需要这样做。
我还会研究初始化管道和global.asax,看看你是否在做任何自定义启动工作。
答案 4 :(得分:0)
您可以减少核心,主数据库和Web数据库上的预取缓存大小,但不建议这样做,仅在开发计算机上执行此操作,而不是在生产服务器上执行此操作。