发布许多项目会占用大量内存

时间:2012-10-04 08:33:05

标签: tridion tridion-2011

我遇到类似于this的问题,虽然希望我能将其缩小一点。

我目前正在测试我的Tridion 2011安装的发布部分(Conent Manager和Content Delivery在不同的服务器上)。当我尝试一次发布多个页面(在我的情况下为1000)时,进程dllhst3g.exe *32开始获取大量内存。这是可以理解的,因为有很多工作要做,但它永远不会回复。这导致内容管理器运行缓慢并最终崩溃。

dllhst3g.exe *32进程有大约3.6GB的内存时,Tridion内容管理器会抛出内存异常(我假设这是因为它是32位进程)。为了防止这些,我将SDL Tridion Content Manager COM +应用程序限制为每个进程任意500Mb,在达到限制后15分钟强制终止。这已经停止了内存不足的例外,但是如果超过我的服务器8GB在15分钟的窗口中分配,我仍然会遇到性能问题并且可能会耗尽内存。 More about this here

我排除了底层的PageTemplate代码,因为关联的页面模板没有关联的代码。这些页面是空白的。

使用Core Service API时,问题似乎也更加突出。我正在使用的代码是

using (var client = new Tridion2011CoreService.CoreServiceClient())
{
    foreach (var id in ids) // ids is a collection of 500 page ids
    {
        // publishing to staging and live
        var targets = new string[] { "tcm:0-7-65538", "tcm:0-8-65538" };

        var publishInstructionData = new PublishInstructionData();
        publishInstructionData.ResolveInstruction = new ResolveInstructionData();
        publishInstructionData.RenderInstruction = new RenderInstructionData();

        var readOptions = new ReadOptions();

        client.Publish(new string[] { id }, publishInstructionData, targets, PublishPriority.Normal, readOptions);
    }
}

(我知道我可以通过一次调用发送所有ID,然后我点击了一个消息限制错误,据我所知,多次调用和单次调用的结果实际上是相同的)

有什么想法吗?

(如果我错过了任何细节,请告诉我,我会相应地更新问题)

忘记添加。 Content Manager安装在具有4个CPU,8GB RAM和50GB磁盘空间的虚拟化Windows Server 2008上。 Content Delivery安装在具有相同规范的单独服务器上。

2 个答案:

答案 0 :(得分:1)

在联系SDL客户支持后,我被告知唯一的解决方案是在占用预定量的内存时回收dllhost进程。

为在Windows Server 2008上运行的SDL Tridion Content Manager 2011执行此操作

  1. 打开组件服务(搜索它或Control Panel -> Administrative Tools
  2. 展开树Component Services -> Computers -> My Computer -> COM+ Applications
  3. 右键单击SDL Tridion Content Manager,然后选择属性
  4. 选择Pooling & Recycling标签
    • Pool Size设为1
    • Lifetime limit设为0
    • Memory Limit设置为524288(512 MB)或选择您自己的限制(我的值小于1GB)
    • Call Limit设为0
    • Activation Limit设为0
  5. 如果可以,请重新启动系统。否则,重新启动所有Tridion服务(Control Panel -> Administrative Tools -> Services并重新启动以“Tridion”开头的所有内容)
  6. 也许“真正的”修复只是一个补丁......

答案 1 :(得分:0)

尝试监控传输包根文件夹。这将在SDL Tridion MMC管理单元中设置。默认值为CMS服务器中的C:\ temp。请检查传输的工作区文件夹,该文件夹将在Tridion安装的文件夹\ Config中的cd_transport config xml中设置。还要检查部署者传入和工作文件夹。在这些文件夹中累积的大量文件可能导致性能不佳,如果您出错文件夹或文件以防止Tridion重试失败的事务,请尝试清理这些文件夹。此外,如果您的部署者作为网站httpupload.asp运行,请尝试验证部署者的应用程序域回收设置,以确保您每隔几分钟不重置appdomain。

您还可以尝试查看发布项目的相关项目。如果您有许多版本或不需要的相关项目,您可以考虑自定义解析发布项目以避免使用特定架构等不需要的组件.Nuno已提供一个非常好的 文章在下面链接。感谢Nuno .. http://nunolinhares.blogspot.nl/2011/10/tridion-publisher-and-custom-resolvers.html