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 associations
https://gateway.sdl.com/CommunitySearchResults#q=purge&d=sdlWeb- When database maintenance (index rebuilding, update statistics) is not regularly done
https://gateway.sdl.com/CommunitySearchResults#q=statistics&d=SDLTridionSitesThere 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.
1 | In %windir%\Microsoft.net\Framework\v4.0.30319\config and %windir%\Microsoft.net\Framework64\v4.0.30319\config modify the machine.config file as follows. Change allowExeDefinition from MachineOnly to MachineToApplication for 3 elements in that file:
<section name="commonBehaviors"……
<section name="machineSettings"……
<sectionGroup name="system.transactions"……
Add these setting before the </configuration> element:
<system.transactions>
<defaultSettings timeout="01:00:00" />
<machineSettings maxTimeout="01:00:00"/>
</system.transactions>
| |
2 | 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: | |
3 | 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: | |
4 | 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. | |
5 | Increase various timeout setting in %TRIDION_HOME%\webservices\web.config. Essentially, any bindings in that web.config such as in <basicHttpBinding> and <netTcpBinding>
StreamDownload_basicHttpBinding sendTimeout="01:00:00
StreamUpload_basicHttpBinding receiveTimeout="02:00:00
ImportExport_StreamDownload_basicHttpBinding sendTimeout="01:00:00
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. | |
6 | Increase various sendTimeout or receiveTimeout settings in %TRIDION_HOME%\web\web.config. | |
7 | Increase sendTimeout in <binding name=”StreamDownload_netTcpBinding” … in SDLWeb\bin\TcmSearchIndexer.exe.config | |
8 | Increase Transaction timeout in COM+ Application to 3600 (maximum value, do not use anything higher): | |
9 | Increase session transactionTimeout in %TRIDION_HOME%\config\Tridion.ContentManager.config, to a value such as "6000" | |
10 | 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: Default values: Extended values: 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. | |
11 | 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. | |
12 | After all the changes are applied, restart Tridion COM+ (if used), IISReset and all SDL Web services for the new settings to take effect. | |