【问题标题】:SDL Tridion times out when publishing multiple items发布多个项目时 SDL Tridion 超时
【发布时间】:2012-03-19 12:08:46
【问题描述】:

使用 SDL Tridion 2011 SP1 时,我们有时会在对多个项目执行任务时收到 GUI 错误(例如,一次从一个文件夹发布 1000 个组件)。从同一个列表中发布大约 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

这里使用了哪些超时值,我们如何增加这些超时值?

【问题讨论】:

    标签: sql tridion tridion-2011


    【解决方案1】:

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

    • 将 allowExeDefinition 从“MachineOnly”更改为“MachineToApplication”
    • 在之前添加下面的部分

    在 Tridion\config\Tridion.ContentManager.config - 以秒为单位提供 transactionTimeout 的值

    在 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 分钟。

    【讨论】:

    • 是否适用于2013sp1?在 web\WebUI\WebRoot\Web.config 中找不到 CoreService_netTcpBinding
    【解决方案2】:

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

    • 打开“%TRIDION_HOME%\Web\WebUI\WebRoot\web.config”
    • 转到 system.serviceModel -> 绑定 -> netTcpBinding -> 绑定(“TcmNetTcpBinding”)
    • 将“readerQuotas”值更改为如下所示:

    readerQuotas maxArrayLength="10485760" maxBytesPerRead="5120" maxDepth="32" maxNameTableCharCount="81920" maxStringContentLength="10485760"/>

    【讨论】:

    • 这似乎让我更近了一步,似乎核心服务现在正在超时。有没有办法增加这部分链的交易超时?
    • @ChrisSummers 是的,您可以在这里增加它,但您可能还必须在服务器端增加它。你能发布一个你得到的新异常吗?
    • 我们似乎在事件日志中有 3 个错误:第一个 _________________________________________________________ 执行存储过程“TCM_QUEUE_MESSAGES_READ”时发生数据库错误。超时已过。在操作完成之前超时时间已过或服务器没有响应。组件:Tridion.ContentManager.Publishing 错误代码:0 用户:NT AUTHORITY\SYSTEM
    • 第二个 ______________________________________________________________ 该操作对于事务的状态无效。事务超时组件:Tridion.ContentManager.CoreService 错误代码:0 用户:NT AUTHORITY\NETWORK SERVICE
    • 第三个套接字连接被中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题引起的。本地套接字超时为“10675199.02:48:05.4775807”。读取操作失败,请参阅内部异常。套接字连接被中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题引起的。本地套接字超时为“10675199.02:48:05.4775807”。一个现有的连接被...强行关闭了。
    【解决方案3】:

    打开位于“C:\Program Files (x86)\Tridion\Bin”文件夹中的 TcmServiceHost.exe.config。导航到 配置->system.serviceModel->行为->serviceBehaviors->行为-> 节点。添加以下节点

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

    也进行此更改:

    1. 打开位于“%TRIDION_HOME%\Web\WebUI\WebRoot”的 web.config
    2. 导航到 system.serviceModel -> 绑定 -> netTcpBinding -> 绑定(“TcmNetTcpBinding”)
    3. 用这个替换“readerQuotas”节点:

    如果这不起作用,请尝试以下配置:

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

    【讨论】:

      【解决方案4】:

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

      在 Tridion CM 服务器上,您可以在 Tridion 管理插件中调整超时设置。在“超时设置”节点中,有几个可能是相关的。

      即便如此,这些默认值还是相当长的,如果您遇到它们,那么我建议您寻找根本原因。我会首先检查优化器统计信息是否得到正确维护。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-11
        • 2012-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多