“Timeouts” em acções/operações de CRM.
Por vezes em ambientes CRM muito “customizados” ou com elevada carga, podemos receber erros como estes em varias acções/operações:
Import timeout error.
Maximum request length exceeded.
The file could not be uploaded or Import failed
This is not a valid customization file. Please use an .XML file that was generated by exporting customizations.
Microsoft CRM Platform Error Report:
Error Description: Timeout expired
Error Details: Details on this error have not been provided by the platform.
Error Number: 0x80040E31
Stack Trace Info: [SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
The statement has been terminated.]
>MessageProcessor fail to process message 'Merge' for 'account'.
Estes erros podem ocorrer quando:
· O tempo de importação ou upgrade excede o OLEDBTimeout (valor máximo em segundos para cada pedido SQL).
· O tempo de importação ou upgrade excede o ExtendedTimeout (valor máximo em segundos para operações demoradas, tais como a importação de customizações).
· Quando se excede o valor definido em SQLConnectTimeout ou SQLCommandTimeout
· Quando se excede o valor definido em maxRequestLength, como o limite máximo de um pedido HTTP em ASP .NET (por exemplo, quando o tamanho do ficheiro Customization.xml é superior a 7.5MB).
· Quando a conexão atinge o valor definido no TcpTimedWaitDelay e é fechada.
Valores por defeito destes parâmetros para uma instalação por defeito de CRM são:
OLEDBTimeout = 30 segundos
ExtendedTimeout = 900000 milissegundos
executionTimeout = 300 segundos
maxRequestLength = 8192 Kilobytes
SQLConnectTimeout = -1 (desactivado)
SQLCommandTimeout = 30 segundos
TcpTimedWaitDelay = 240 segundos
Localização e valores de teste sugeridos para ultrapassar estes erros:
Os valores do OLEDBTimeout e do ExtendedTimeout devem ser alterados/criados em:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM
O valor de teste sugerido para o OLEDBTimeout é 86400, que equivale a 24 horas.
O valor de teste sugerido para o ExtendedTimeout é 1200000,que equivale a 20 minutos.
Pode encontrar o valor executionTimeout e o maxRequestLength, dentro do ficheiro Web.config existente na raiz do website de CRM e num segundo ficheiro com o mesmo nome na pasta MSCRMServices. Dentro dos ficheiros, basta localizar o elemento httpRuntime:
<httpRuntime executionTimeout="300" maxRequestLength="8192"/>
O valor de teste sugerido para o executionTimeout é 1200 que equivale a 15 minutos.
O valor de teste para o maxRequestLength deverá ser superior ao tamanho do ficheiro Customization.xml.
Referências:
A time-out occurs when you import large customization files into Microsoft Dynamics CRM
https://support.microsoft.com/default.aspx?scid=kb;EN-US;918609
httpRuntime Element (ASP.NET Settings Schema)
https://msdn.microsoft.com/en-us/library/e1f13641.aspx
Os valores doSQLConnectTimeout e o SQLCommandTimeout encontram-se na base de dados MSCRM_CONFIG,tabela DeploymentProperties, coluna IntColumn e podem ser actualizados com um simples update:
update DeploymentProperties set IntColumn = 600 where columnname = ‘SQLConnectTimeout’
update DeploymentProperties set IntColumn = 600 where columnname = ‘SQLCommandTimeout’
Os valores de teste para o SQLConnectTimeout e o SQLCommandTimeout, alteram consoante o cenário, mas um valor médio usado com regularidade no suporte é 600, que equivale a 10 minutos.
Por fim, gostava ainda de deixar uma nota sobre o TcpTimedWaitDelay, que embora seja definido ao nível do sistema operativo, pode causar também timeouts na aplicação de CRM.
Este parâmetro determina o tempo máximo que uma conexão espera no estado “TIME_WAIT”, até ser fechada. Este estado é também conhecido por “2MSL” e o seu valor deve rondar geralmente duas vezes o TTL do segmento de rede.
Este valor pode ser definido, através da criação de uma chave de registo tipo DWORD com o nome TcpTimedWaitDelay em:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
O valor de teste sugerido para o TcpTimedWaitDelay é260 (decimal).
Referências:
Description of TCP/IP settings that you may have to adjust when SQL Server connection pooling is disabled
https://support.microsoft.com/kb/328476
TcpTimedWaitDelay
https://technet.microsoft.com/en-us/library/cc938217.aspx
José Alves
CRM Support Engineer PT