Umbraco 7.6.0 - 网站每天都会无响应几分钟

时间:2017-10-04 14:03:39

标签: azure umbraco umbraco7

我们几个月来一直遇到问题,这个网站每天都会在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是瓶颈。

这引出了一些问题:

  1. 有没有办法以只运行它的方式安排此任务 在非高峰时段?
  2. 新版本(我们在7.6.0上)是否可以改善此功能?
  3. 是否有任何其他建议可以帮助纠正此行为?
  4. 托管环境:

    • Azure App Service B2(基本)
    • SQL Azure标准版(20个DTU) - DTU使用率达到20%,所以我认为没有任何东西。只是注意完整性
    • 用于媒体存储的Azure存储
    • 用于媒体请求的Azure CDN

    提前非常感谢你。

    更新10/4/2017

    如果有帮助,这些特定的日志条目似乎与当天的第一次发布相对应。

1 个答案:

答案 0 :(得分:0)

我不觉得Umbraco有40,000个节点太多,但是如果你想安排重新发布,你可以这样做:

您可以使用以下命令以编程方式调用缓存刷新:

ApplicationContext.Current.Services.ContentService.RePublishAll();

(Umbraco source)

您可以创建一个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