2012-03-01 22 views
8

Quando si utilizza SDL Tridion 2011 SP1, a volte vengono visualizzati errori della GUI quando eseguiamo attività su più elementi (ad esempio pubblicando 1000 componenti da una cartella in una sola volta). Pubblicare circa 100 elementi della stessa lista funziona perfettamente.SDL Tridion timeout durante la pubblicazione di più elementi

L'errore che vediamo è la CME/GUI è la seguente:

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. 

C'è un ulteriore errore nel Visualizzatore eventi di Windows nel log degli errori Tridion come segue:

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 

Quali valori di timeout vengono utilizzati qui e come possiamo aumentare questi valori di timeout?

risposta

12

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

  • Change allowExeDefinition da “MachineOnly” a “MachineToApplication”
  • Prima </configuration> aggiungere la sezione di seguito

In Tridion \ config \ Tridion.ContentManager.config - Fornire un valore per transactionTimeout in secondi < sessione transactionTimeout = "3600" />

In Tridion \ bin \ TcmServiceHost.exe.config - vincolante cambiare il 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"> 
  • Aggiungere il seguente prima di < serviceTimeouts transactionTimeout = "00:30:00" />

in Tridion \ web \ WebUI \ WebRoot \ Web.config - cambiare il CoreService_netTcpBinding vincolante

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

Questo imposta i timeout a 30 minuti.

+0

Si applica a 2013sp1? Impossibile trovare CoreService_netTcpBinding in web \ WebUI \ WebRoot \ Web.config – esteewhy

3

Questo è il timeout della transazione. Se si pubblica attraverso l'interfaccia grafica si può provare:

  • aperta "% TRIDION_HOME% \ Web \ WebUI \ WebRoot \ web.config"
  • Vai a system.serviceModel -> attacchi -> netTcpBinding -> vincolante ("TcmNetTcpBinding")
  • Change "readerQuotas" valori a qualcosa di simile:

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

+0

Questo sembra farmi un passo avanti, sembra che il Core Service stia scadendo. C'è un modo per aumentare il timeout della transazione per questa parte della catena? –

+0

@ChrisSummers Sì, puoi aumentarlo qui, ma probabilmente dovrai aumentare anche dal lato server. Potresti pubblicare una nuova eccezione che stai ricevendo? –

+0

Sembriamo avere 3 errori nei registri eventi: La Prima ______________________________________________________________ un errore di database si è verificato durante l'esecuzione di stored procedure "TCM_QUEUE_MESSAGES_READ". Timeout scaduto. Il periodo di timeout è trascorso prima del completamento dell'operazione o il server non risponde. Componente: Tridion.ContentManager.Publishing Errorcode: 0 Utente: NT AUTHORITY \ SYSTEM –

1

Sulla base dei vostri commenti, questo timeout è chiaramente nel database. Il messaggio sulla stored procedure lo dice. Una volta che si verifica il timeout del database, interrompere la transazione e chiudere il socket sono presumibilmente inevitabili.

Sul server Tridion CM è possibile regolare le impostazioni di timeout nello snap-in di gestione Tridion. Nel nodo "timeout settings" ci sono un paio che potrebbe essere rilevante.

Anche così, i valori predefiniti per questi sono piuttosto lunghi, e se li stai colpendo, ti suggerisco di cercare una causa principale. Per prima cosa controllerei che le statistiche dell'ottimizzatore siano state correttamente gestite.

2

Aprire TcmServiceHost.exe.config nella cartella "C: \ Programmi (x86) \ Tridion \ Bin". Naviagte a configurazione-> system.serviceModel-> comportamenti-> servizio Behaviour-> comportamento-> nodo. Aggiungere il seguente nodo

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

anche rendere questo cambia:

  1. Aperto web.config situato a "% TRIDION_HOME% \ Web \ WebUI \ WebRoot"
  2. Passare a sistema.ServiceModel -> attacchi -> netTcpBinding -> binding ("TcmNetTcpBinding")
  3. Sostituire il nodo "readerQuotas" con questo:

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

Se questo non funziona, allora provate questo config:

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