Typically the default timeout settings are adequate and it is not necessary to extend timeouts. However it is sometimes necessary to extend the core service timeouts, such as when:
- there is an inordinate amount of data with unpurged versions, completed workflow activities, or a high volume of item associationshttps://gateway.sdl.com/CommunitySearchResults#q=purge&d=sdlWeb
- When database maintenance (index rebuilding, update statistics) is not regularly donehttps://gateway.sdl.com/CommunitySearchResults#q=statistics&d=SDLTridionSites
There is no disadvantage to proactively extending the core service timeouts to mitigate application issues.
Take a backup of the original file(s) first as a precaution as the setting change could be easily not entered correctly or the .config is made mal-formed for some reason. Screenshots are from an Web 8.5/Windows Server 2012 R2 environment **before** the modifications are made.
- In %windir%\Microsoft.net\Framework\v4.0.30319\config (and %windir%\Microsoft.net\Framework64\v4.0.30319\config)
modify the machine.config as follow:
Change allowExeDefinition from MachineOnly to MachineToApplication for 3 elements in that file:
Add these setting before the </configuration> element:
<defaultSettings timeout="01:00:00" />
- Next, in %TRIDION_HOME%\bin\TcmServiceHost.exe.config, edit the existing element called <serviceTimeouts transactionTimeout=”01:00:00” />
(The existing element should reside inside <behaviors>/<serviceBehaviors>/<behavior name="Tridion.ContentManager.ServiceHost.WindowsServiceHost.CoreServiceBehavior">
NOTE: The setting is case-sensitive:
- Add attributes closeTimeout, openTimeout, receiveTimeout and sendTimeout to binding name="CoreService_netTcpBinding"
(inside <bindings>/<netTcpBinding><binding name="CoreService_netTcpBinding"....> )
NOTE: The attributes are case-sensitive and they can be on the same line. For the example screenshot below, they are shown on individual line for clarity:
- Increase timeout setting in %TRIDION_HOME%\web\webui\webroot\web.config
Increase sendTimeout and receiveTimeout attributes in <bindings>/ <webHttpBinding>/<binding name="Tridion.Web.UI.ContentManager.WebServices.WebHttpBindingConfig
NOTE: The example here is for HTTP. If your Content Manager uses HTTPS in its protocol, make the increase/change to the HTTPS section as well.
- Increase various timeout setting in %TRIDION_HOME%\webservices\web.config. Essentially, any bindings in that web.config such as in <basicHttpBinding> and <netTcpBinding>.
ImportExport_StreamUpload_basicHttpBinding receiveTimeout="02:00:00" sendTimeout="02:00:00"
NOTE: The 2 hour (“02:00:00”) in the example code snippet of course, of course, can be set to 01:00:00 just like other web.config files but here it is set to 2 hours instead as this web.config is used by Content Porter and large Content Porter import might need a longer timeout.
Also, add <serviceTimeouts transactionTimeout setting like the one listed in step #2.
- Increase various sendTimeout or receiveTimeout settings in %TRIDION_HOME%\web\web.config.
- Increase sendTimeout in <binding name=”StreamDownload_netTcpBinding” … in SDLWeb\bin\TcmSearchIndexer.exe.config
- Increase Transaction timeout in COM+ Application to 3600 (maximum value, do not use anything higher):
- Increase session transactionTimeout in %TRIDION_HOME%\config\Tridion.ContentManager.config, to a value such as "6000"
- For any processes (such as rendering, database connection) that takes a long time to execute, consider extending these timeout in the Tridion Snap-in as well.
To make it easy, consider adding another zero to the settings that were already there:
NOTE: The values above are just general suggestions. These values have accommodated most scenarios but might not meet specific requirements so may need more tuning.
- For timeout setting related to the use of powershell commandlet such as Remove-TcmQueueMessages, for example, edit the TcmBatchProcessor.exe.config ( under %TRIDION_HOME%\bin folder) and add various timeout attributes in the "CoreService_NetTcpBinding" binding under <netTcpBinding> element as seen below.
- After all the changes are applied, restart Tridion COM+ (if used), IISReset and all SDL Web services for the new settings to take effect.