Тайм-аут SDL истекает при публикации нескольких элементов - PullRequest
8 голосов
/ 01 марта 2012

При использовании SDL Tridion 2011 SP1 мы иногда получаем ошибки графического интерфейса при выполнении задачи для нескольких элементов (например, публикация 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.

В средстве просмотра событий Windows есть дополнительная ошибкав журнале ошибок Tridion:

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 ]

12 голосов
/ 17 января 2013

В% 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 - Укажите значение для транзакции в секундах.

В 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 минут.

3 голосов
/ 02 марта 2012

Это тайм-аут транзакции. Если вы публикуете через графический интерфейс, вы можете попробовать:

  • открыть "% TRIDION_HOME% \ Web \ WebUI \ WebRoot \ web.config"
  • Перейти к system.serviceModel -> привязки -> netTcpBinding -> привязка ("TcmNetTcpBinding")
  • Измените значения "readerQuotas" на что-то вроде этого:

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

2 голосов
/ 14 мая 2012

Откройте файл TcmServiceHost.exe.config, расположенный в папке «C: \ Program Files (x86) \ Tridion \ Bin».Перейдите к конфигурации-> system.serviceModel-> поведения-> serviceBehaviors-> поведение-> узел.Добавьте следующий узел

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

Также внесите следующие изменения:

  1. Откройте файл web.config, расположенный в "% TRIDION_HOME% \ Web \ WebUI \ WebRoot"
  2. Перейдите к system.serviceModel -> bindings -> netTcpBinding -> binding ("TcmNetTcpBinding")
  3. Замените узел "readerQuotas" следующим:

Если это не работает, попробуйте эту конфигурацию:

<readerQuotas maxArrayLength="10485760" maxStringContentLength="10485760"/>
1 голос
/ 12 мая 2012

Судя по вашим комментариям, этот тайм-аут явно указан в базе данных. Сообщение о хранимой процедуре говорит об этом. По истечении времени ожидания базы данных прерывание транзакции и закрытие сокета, по-видимому, неизбежны.

На сервере Tridion CM вы можете настроить параметры времени ожидания в оснастке управления Tridion. В узле «настройки тайм-аута» есть пара, которая может иметь значение.

Несмотря на это, значения по умолчанию для них довольно длинные, и если вы их нажимаете, то я бы посоветовал вам найти основную причину. Сначала я проверю, правильно ли ведется статистика оптимизатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...