Używam SDL Tridion 2009 SP1 na 64-bitowym serwerze i próbuję opublikować ogromny XML wszystkich komponentów multimedialnych w systemie (190K +). Używam metody folder.GetListItems(filter)
z filtrem ustawionym na Recursive="true"
.Błąd braku pamięci podczas publikowania dużego wyniku z GetListItems
Szablon działa przez kilka sekund, a następnie wysadza z poza błędu pamięci:
<?xml version="1.0"?>
<tcm:Error xmlns:tcm="http://www.tridion.com/ContentManager/5.0" ErrorCode="7" Category="7" Source="Kernel" Severity="1"><tcm:Line ErrorCode="7" Cause="true"><![CDATA[Out of memory]]></tcm:Line><tcm:Details><tcm:CallStack><tcm:Location>FolderBLST.GetListData</tcm:Location></tcm:CallStack></tcm:Details></tcm:Error>
at Tridion.ContentManager.Interop.TDSBL._IBLOrganizationalItemST.GetListData(UserContext userContext, String URI, EnumListKind listKind, ListColumnFilter columnFilter, String rowFilter)
at Tridion.ContentManager.ContentManagement.OrganizationalItem.GetListItems(Filter filter)
at myNS.myTbb.Transform(Engine engine, Package package)
at Tridion.ContentManager.Templating.Assembly.AssemblyMediator.Transform(Engine engine, Template template, Package package)
at Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.RunTemplate(Engine engine, Package package, String templateUri, String className)
at Tridion.Templating.CSharpTemplate.CSharpSourceTemplate.Transform(Engine __engine, Package __package)
at Tridion.ContentManager.Templating.Assembly.CSharpSourceCodeMediator.Transform(Engine engine, Template template, Package package)
at Tridion.ContentManager.Templating.Engine.ExecuteTemplate(Template template, Package package)
at Tridion.ContentManager.Templating.Engine.InvokeTemplate(Package package, TemplateInvocation templateInvocation, Template template)
at Tridion.ContentManager.Templating.Compound.CompoundTemplateMediator.Transform(Engine engine, Template templateToTransform, Package package)
at Tridion.ContentManager.Templating.Engine.ExecuteTemplate(Template template, Package package)
at Tridion.ContentManager.Templating.Engine.InvokeTemplate(Package package, TemplateInvocation templateInvocation, Template template)
at Tridion.ContentManager.Templating.Engine.TransformPackage(Template template, Package package)
at Tridion.ContentManager.Templating.Engine.TransformItem(Template template, IdentifiableObject itemToRender)
at Tridion.ContentManager.Templating.Debugging.DebuggingEngine.Run()
at Tridion.ContentManager.Templating.Debugging.DebugSession.Run()
ze stosu prześledzić to wygląda tak, jakby błąd dzieje się w warstwie biznesowej serwera CM. Czy istnieje ustawienie pamięci, które mogę zwiększyć, a jeśli tak, to co to jest?
Dzięki Miguel. Zamierzamy podzielić ten proces na kilka podfolderów (zgodnie z drugą sugestią). Chociaż bardzo podoba mi się twoja sugestia w scenariuszu 1 z systemem zdarzeń. –
Cieszę się, że przydał się Nickoli. Ten rodzaj obciążenia zawsze powoduje problemy, gdy istnieje ogromna ilość przedmiotów. Dodałem scenariusz 3 jako inny przykład – Miguel