我们几个月来一直遇到问题,这个网站每天都会在5-15分钟内完全没有响应。我们添加了大量的请求记录,启用了DEBUG日志记录,并且最终找到了一个模式:在中断前大约2分钟(在我看过的每个日志文件中,回到开头),出现以下行: :
2017-09-26 15:13:05,652 [P7940 / D9 / T76] DEBUG Umbraco.Web.PublishedCache.XmlPublishedCache.XmlCacheFilePersister - 计时器:发布。 2017-09-26 15:13:05,652 [P7940 / D9 / T76] DEBUG Umbraco.Web.PublishedCache.XmlPublishedCache.XmlCacheFilePersister - 立即运行(同步)。
从我收集的内容来看,这是重建umbraco.config的过程,对吗?
我们有大约40,000个节点,所以我无法想象这将是最快的完成过程,但奇怪的是Azure Web App上的CPU和内存在这些中断期间不会出现峰值。这似乎表明磁盘I / O是瓶颈。
这引出了一些问题:
托管环境:
提前非常感谢你。
更新10/4/2017
如果有帮助,这些特定的日志条目似乎与当天的第一次发布相对应。
答案 0 :(得分:0)
我不觉得Umbraco有40,000个节点太多,但是如果你想安排重新发布,你可以这样做:
您可以使用以下命令以编程方式调用缓存刷新:
ApplicationContext.Current.Services.ContentService.RePublishAll();
您可以创建一个API控制器,您可以通过URL定期调用它。控制器可能看起来像:
public class CacheController : UmbracoApiController
{
[HttpGet]
public HttpResponseMessage Republish(string pass)
{
if (pass != "passcode")
{
return Request.CreateResponse(HttpStatusCode.Unauthorized, new
{
success = false,
message = "Access denied."
});
}
var result = Services.ContentService.RePublishAll();
if (result)
{
return Request.CreateResponse(HttpStatusCode.OK, new
{
success = true,
message = "Republished"
});
}
return Request.CreateResponse(HttpStatusCode.InternalServerError, new
{
success = false,
message = "An error occurred"
});
}
}
然后,您可以定期ping此网址:
/umbraco/api/cache/republish?code=passcode
我有一篇关于如何阅读如何安排这类事件的博客文章。我建议只使用Windows任务计划程序ping网址:https://harveywilliams.net/blog/better-task-scheduling-in-umbraco#windows-task-scheduler