使用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
此处使用了哪些超时值,以及如何增加这些超时值?
答案 0 :(得分:12)
%windir%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ machine.config 和%windir%\ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config
之前< / 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">
在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发布,可以尝试:
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" />
同时进行此更改:
用以下代码替换“readerQuotas”节点:
&lt; readerQuotas maxArrayLength =“10485760”maxBytesPerRead =“5120”maxDepth =“32”maxNameTableCharCount =“81920”maxStringContentLength =“10485760”/&gt;
如果这不起作用,请尝试此配置:
<readerQuotas maxArrayLength="10485760" maxStringContentLength="10485760"/>
答案 3 :(得分:1)
根据您的评论,此超时显然在数据库中。有关存储过程的消息说明了这一点。一旦数据库超时发生,那么中止事务并关闭套接字可能是不可避免的。
在Tridion CM服务器上,您可以调整Tridion管理管理单元中的超时设置。在“超时设置”节点中,有一些可能是相关的。
即便如此,这些的默认值都很长,如果你打它们,那么我建议你找一个根本原因。我首先检查是否正确维护了优化器统计信息。