2012-03-01 10 views
8

Przy użyciu SDL Tridion 2011 SP1 czasami pojawiają się błędy GUI gdy wykonujemy zadania na wielu elementów (np publikowania 1000 elementów z jednego folderu na raz). Opublikuj około 100 przedmiotów z tej samej listy działa idealnie.SDL Tridion czasy, kiedy publikując kilka pozycji

Błąd widzimy w CME/GUI jest następujący:

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. 

Istnieje dodatkowy błąd w Podglądzie zdarzeń systemu Windows w dzienniku błędów Tridion następująco:

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 

Jakie wartości limitu czasu są używane tutaj i jak możemy zwiększyć te wartości limitu czasu?

Odpowiedz

12

w% windir% \ Microsoft.N ET \ Framework64 \ v4.0.30319 \ Config \ Machine.config i% windir% \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config

  • Zmień allowExeDefinition z „MachineOnly” do „MachineToApplication”
  • Przed </configuration> dodaj sekcję poniżej

W Tridion \ config \ Tridion.ContentManager.config - podać wartość transactionTimeout w sekundach < sesja transactionTimeout = "3600" />

W Tridion \ bin \ TcmServiceHost.exe.config - wiązanie zmienić 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"> 
  • Dodaj następujący przed < serviceTimeouts transactionTimeout = "00:30:00" />

w Tridion \ Web \ WebUI \ WebRoot \ Web.config - zmiana CoreService_netTcpBinding wiążące

<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"> 

To ustawia swoje limity czasu do 30 minut.

+0

Czy dotyczy to 2013sp1? Nie można znaleźć CoreService_netTcpBinding w web \ WebUI \ WebRoot \ Web.config – esteewhy

3

Jest to limit czasu transakcji. Jeśli publikujesz poprzez GUI można spróbować:

  • otwarty "% TRIDION_HOME% \ Web \ WebUI \ WebRoot \ web.config"
  • idź do system.serviceModel -> Wiązania -> netTcpBinding -> wiążący ("TcmNetTcpBinding")
  • Change "readerQuotas" wartości do mniej więcej tak:

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

+0

Wydaje mi się, że zbliżam się do tego kroku, wygląda na to, że usługa podstawowa jest teraz limitowana. Czy istnieje sposób na zwiększenie limitu czasu transakcji dla tej części łańcucha? –

+0

@ChrisSummers Tak, możesz zwiększyć to tutaj, ale prawdopodobnie będziesz musiał zwiększyć także po stronie serwera. Czy mógłbyś opublikować nowy wyjątek, który otrzymujesz? –

+0

Wydaje się mieć 3 błędy w dziennikach zdarzeń: Pierwszy ______________________________________________________________ wystąpił błąd bazy danych podczas wykonywania Przechowywane procedury „TCM_QUEUE_MESSAGES_READ”. Limit czasu wygasł. Okres oczekiwania upłynął przed zakończeniem operacji lub serwer nie odpowiada. Składnik: Tridion.ContentManager.Publishing ERRORCODE: 0 Użytkownik: ZARZĄDZANIE NT \ SYSTEM –

1

oparciu o komentarze, to czas oczekiwania jest wyraźnie w bazie danych. Komunikat o procedurze przechowywanej mówi to. Po przekroczeniu limitu czasu bazy danych przerwanie transakcji i zamknięcie gniazda jest prawdopodobnie nieuniknione.

Na serwerze CM Tridion można dostosować ustawienia limitu czasu w zarządzaniu Tridion przystawkę. W węźle "timeout settings" znajduje się para, która może być istotna.

Mimo to domyślne ustawienia są dość długie, a jeśli je uderzasz, sugeruję, aby szukać przyczyny źródłowej. Najpierw sprawdziłem, czy statystyki optymalizatora są poprawnie utrzymywane.

2

Otwórz plik TcmServiceHost.exe.config znajdujący się w folderze "C: \ Program Files (x86) \ Tridion \ Bin". Naviagte do konfiguracji -> system.serviceModel-> behaviors-> serviceBehaviors-> behavior-> Węzeł. Dodaj następujący węzeł

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

dokonać także zmienia:

  1. Otwarte web.config się na "% TRIDION_HOME% \ Web \ WebUI \ WebRoot"
  2. Przejdź do systemu.serviceModel -> wiązania -> netTcpBinding -> wiązania ("TcmNetTcpBinding")
  3. zastąpić "readerQuotas" węzeł z tym:

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

Jeśli to nie poskutkuje, to spróbuj tego config:

<readerQuotas maxArrayLength="10485760" maxStringContentLength="10485760"/> 
Powiązane problemy