我有一个类似的问题,虽然希望我已经缩小了一点。
我目前正在测试我的 Tridion 2011 安装的发布部分(Conent Manager 和 Content Delivery 在不同的服务器上)。当我尝试一次发布多个页面(在我的情况下为 1000 个)时,该过程dllhst3g.exe *32
开始获取大量内存。这是可以理解的,因为有很多工作要做,但它永远不会回报。这导致内容管理器运行缓慢并最终崩溃。
dllhst3g.exe *32
当进程有大约 3.6GB 的内存时(我认为这是因为它是 32 位进程),Tridion Content Manager 抛出了内存不足的异常。为了防止这些,我将SDL Tridion Content Manager
COM+ 应用程序限制为每个进程任意 500Mb,在达到限制后 15 分钟被强制终止。这暂时停止了内存不足的异常,但如果在 15 分钟窗口内分配的服务器超过 8GB,我仍然存在性能问题和内存不足的可能性。更多关于这里
我已经排除了底层的 PageTemplate 代码,因为关联的页面模板没有关联的代码。这些页面是空白的。
在使用核心服务 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,但随后我遇到了消息限制错误,据我所知,多次调用和一次调用的结果实际上是相同的)
有任何想法吗?
(如果我错过了任何细节,请告诉我,我会相应地更新问题)
忘记加了。内容管理器安装在具有 4 个 CPU、8GB RAM 和 50GB 磁盘空间的虚拟化 Windows Server 2008 上。Content Delivery 安装在具有相同规格的单独服务器上。