发布多个项目时,SDL Tridion超时

时间:2012-03-01 00:06:19

标签: sql tridion tridion-2011

使用SDL Tridion 2011 SP1时,当我们对多个项目执行任务时(例如,一次从一个文件夹发布1000个组件),我们有时会收到GUI错误。从同一列表中发布约100个项目非常有效。

我们在CME / GUI中看到的错误如下:

The transaction associated with the current connection has completed
but has not been disposed. The transaction must be disposed before the
connection can be used to execute SQL statements.

Tridion错误日志中的Windows事件查看器中存在其他错误,如下所示:

The socket connection was aborted. This could be caused by an error processing 
    your message or a receive timeout being exceeded by the remote host, or an
    underlying network resource issue. Local socket timeout was
    '10675199.02:48:05.4775807'.
The read operation failed, see inner exception.
The socket connection was aborted. This could be caused by an error processing
    your message or a receive timeout being exceeded by the remote host, or an
    underlying network resource issue. Local socket timeout was
    '10675199.02:48:05.4775807'.
An existing connection was forcibly closed by the remote host

此处使用了哪些超时值,以及如何增加这些超时值?

4 个答案:

答案 0 :(得分:12)

%windir%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ machine.config 和%windir%\ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config

  • 将allowExeDefinition从“MachineOnly”更改为“MachineToApplication”
  • 之前< / configuration>添加以下部分

在Tridion \ config \ Tridion.ContentManager.config中 - 以秒为单位为transactionTimeout提供值 < session transactionTimeout =“3600”/>

在Tridion \ bin \ TcmServiceHost.exe.config中 - 更改CoreService_netTcpBinding绑定

<binding name="CoreService_netTcpBinding" 
transactionFlow="true" 
transactionProtocol="WSAtomicTransaction11" 
maxReceivedMessageSize="2147483647" 
closeTimeout="00:30:00" 
openTimeout="00:30:00" 
receiveTimeout="00:30:00" 
sendTimeout="00:30:00">
  • 之前添加以下内容 &LT; serviceTimeouts transactionTimeout =“00:30:00”/&gt;

在Tridion \ web \ WebUI \ WebRoot \ Web.config中 - 更改CoreService_netTcpBinding绑定

<binding name="TcmNetTcpBinding" 
maxBufferSize="2147483647" 
maxReceivedMessageSize="2147483647" 
maxBufferPoolSize="2147483647" 
closeTimeout="00:30:00" 
openTimeout="00:30:00" 
receiveTimeout="00:30:00" 
sendTimeout="00:30:00"
transactionFlow="true" 
transactionProtocol="WSAtomicTransaction11">

这会将您的超时时间设置为30分钟。

答案 1 :(得分:3)

这是事务超时。如果您通过GUI发布,可以尝试:

  • 打开“%TRIDION_HOME%\ Web \ WebUI \ WebRoot \ web.config”
  • 转到system.serviceModel - &gt;绑定 - &gt; netTcpBinding - &gt;绑定(“TcmNetTcpBinding”)
  • 将“readerQuotas”值更改为以下内容:
  

readerQuotas maxArrayLength =“10485760”maxBytesPerRead =“5120”maxDepth =“32”maxNameTableCharCount =“81920”maxStringContentLength =“10485760”/&gt;

答案 2 :(得分:2)

打开位于“C:\ Program Files(x86)\ Tridion \ Bin”文件夹中的TcmServiceHost.exe.config。 Naviagte到 配置 - &GT; system.serviceModel-&GT; behaviors-&GT; serviceBehaviors-&GT;动作 - &GT; 节点。添加以下节点

<serviceTimeouts transactionTimeout="00:10:00" />

同时进行此更改:

  1. 打开位于“%TRIDION_HOME%\ Web \ WebUI \ WebRoot”的web.config
  2. 导航至system.serviceModel - &gt;绑定 - &gt; netTcpBinding - &gt;绑定(“TcmNetTcpBinding”)
  3. 用以下代码替换“readerQuotas”节点:

    &lt; readerQuotas maxArrayLength =“10485760”maxBytesPerRead =“5120”maxDepth =“32”maxNameTableCharCount =“81920”maxStringContentLength =“10485760”/&gt;

  4. 如果这不起作用,请尝试此配置:

    <readerQuotas maxArrayLength="10485760" maxStringContentLength="10485760"/>
    

答案 3 :(得分:1)

根据您的评论,此超时显然在数据库中。有关存储过程的消息说明了这一点。一旦数据库超时发生,那么中止事务并关闭套接字可能是不可避免的。

在Tridion CM服务器上,您可以调整Tridion管理管理单元中的超时设置。在“超时设置”节点中,有一些可能是相关的。

即便如此,这些的默认值都很长,如果你打它们,那么我建议你找一个根本原因。我首先检查是否正确维护了优化器统计信息。