Umbraco 本影记录表

Umbraco 本影记录表,umbraco,Umbraco,在负载平衡的服务器设置中,我们的umbraclog表每秒会收到50条记录,这些记录都遵循相同的模式写入(抱歉格式化) 在24小时内,这将导致一个6.9GB的表和一个在CPU和mem使用方面持续运行的数据库 我们已经检查了其他类似站点设置的web.config和umbraco.config设置文件,在配置方面没有差异 我们可以禁用系统级日志记录,但会丢失其他有意义的消息 有人能帮助隔离这个问题吗 TL;Umbraco医生,记录表每毫秒都会被多次呼叫所困扰。我建议你有两种选择,两种都可以 在问题追踪

在负载平衡的服务器设置中,我们的umbraclog表每秒会收到50条记录,这些记录都遵循相同的模式写入(抱歉格式化)

在24小时内,这将导致一个6.9GB的表和一个在CPU和mem使用方面持续运行的数据库

我们已经检查了其他类似站点设置的web.config和umbraco.config设置文件,在配置方面没有差异

我们可以禁用系统级日志记录,但会丢失其他有意义的消息

有人能帮助隔离这个问题吗


TL;Umbraco医生,记录表每毫秒都会被多次呼叫所困扰。

我建议你有两种选择,两种都可以

在问题追踪器(issues.umbraco.org)上报告问题,这样小伙子们就可以调查问题是否不同寻常

然后,要停止它,您可以使用注释掉的日志消息进行自定义构建。请参阅此文件以了解有问题的代码:

这并不理想,但可以让您启动并运行,并减轻DB服务器上的负载,直到您得到修复为止


一个更大的问题是,为什么代码会如此频繁地运行,也许值得在代码中深入研究一下,看看您是否能理解其中的原因。如果您确实发现了,请将其报告回Umbraco总部,以便他们可以为其他人解决;)

我们已经确定了这个问题。归根结底是过期文档以及umbraco 4.5.2如何处理这些文档

在分解dll后,我们在publishingService类(umbraco.presentation)中的CheckPublishing方法中找到了罪魁祸首:

GetDocumentsForexPrivation()将运行以下查询:

IRecordsReader dr = CMSNode.SqlHelper.ExecuteReader("select distinct nodeId from cmsDocument where newest = 1 and not expireDate is null and expireDate <= @today", new IParameter[] { CMSNode.SqlHelper.CreateParameter("@today", DateTime.Now) });

IRecordsReader dr=CMSNode.SqlHelper.ExecuteReader(“从cmsDocument中选择不同的nodeId,其中最新的=1且未过期的日期为null,过期的日期此问题在更高版本的umbraco中已得到解决-我们现在已升级到最新版本。在此之前,我们添加了一个sql代理作业来更新所有过期文档的日期。为您的答案干杯:)
foreach (Document d in Document.GetDocumentsForExpiration())
{
   library.UnPublishSingleNode(d.Id);
}
IRecordsReader dr = CMSNode.SqlHelper.ExecuteReader("select distinct nodeId from cmsDocument where newest = 1 and not expireDate is null and expireDate <= @today", new IParameter[] { CMSNode.SqlHelper.CreateParameter("@today", DateTime.Now) });