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

http://support.microsoft.com/default.aspx?scid=kb;EN-US;918609

 

httpRuntime Element (ASP.NET Settings Schema)

http://msdn.microsoft.com/en-us/library/e1f13641.aspx

 

 

Os valores do SQLConnectTimeout 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

http://support.microsoft.com/kb/328476

 

TcpTimedWaitDelay

http://technet.microsoft.com/en-us/library/cc938217.aspx

 

 

 

José Alves

CRM Support Engineer PT