Sintomas
Considere o seguinte cenário:
-
Executar o Microsoft baseadas no .NET Framework 3.0 ou .NET Framework 3.5 service do Windows Communication Foundation (WCF).
-
O serviço WCF utiliza o serviço de partilha de portas NET. TCP (Smsvchost.exe) e é hospedado num computador que esteja a executar serviços de informação Internet (IIS).
-
Uma das seguintes condições for verdadeira:
-
A utilização da CPU é elevada no computador que está executando o IIS.
-
Um controlo de potência ocorre no modelo de serviço para o serviço WCF.
-
Vários pedidos são enviados ao serviço WCF ao mesmo tempo.
-
Neste cenário, o serviço WCF demora mais de um minuto para processar um pedido de uma aplicação cliente. Além disso, uma mensagem de erro que reúne a seguinte entrada de evento é registada no registo de eventos:
Nome de registo: sistema
Origem: SMSvcHost 3.0.0.0
Data:
ID do evento: 8
Categoria de tarefa: Serviço de partilha
Nível: Erro
Palavras-chave: clássico
Utilizador: Serviço LOCAL
Computador:
Descrição: Ocorreu um erro ao emitir um socket duplicado: este identificador é agora fuga no processo.
ID: 2620
Origem: System.ServiceModel.Activation.TcpWorkerProcess
Excepção:
System.TimeoutException: Esta operação de pedido enviada para não recebeu uma resposta dentro do tempo limite configurado (00: 01:00). O tempo atribuído a esta operação pode ter sido uma parte de um tempo limite maior. Isto poderá ser porque o serviço ainda está a processar a operação ou porque o serviço não conseguiu enviar uma mensagem de resposta. Verifique, considere aumentar o tempo limite da operação (por fundição o canal de proxy para IContextChannel e definindo a propriedade OperationTimeout) e certifique-se de que o serviço é capaz de estabelecer ligação com o cliente.
Nota Tem de reiniciar o IIS para recuperar o serviço WCF deste problema.
Causa
Este problema ocorre porque o processo de Smsvchost.exe o tempo limite após um minuto quando tenta transferir um pedido de ligação de entrada para o processo de trabalho W3wp.exe. Além disso, este limite de tempo é não configurável.
Quando a CPU tem uma carga de trabalho pesada, ou quando forem recebidos vários pedidos de ligação simultânea, o processo de Smsvchost.exe não é possível transferir a ligação a receber para o processo de trabalho W3wp.exe dentro de um minuto. Por conseguinte, o processo de Smsvchost.exe o tempo limite e, eventualmente, deixa de responder. Quando este problema ocorre, o processo de Smsvchost.exe não pode encaminhar pedidos posteriores para o processo de trabalho W3wp.exe até que o IIS seja reiniciado.
Resolução
Para resolver este problema, aplique a correcção 2504602 descrita no artigo da Base de dados de conhecimento da Microsoft (KB).
Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Base de Dados de Conhecimento Microsoft
2504602 um pacote de correcções está disponível para WCF no .NET Framework 3.0 SP2, no .NET Framework 3.5 SP1 e no .NET Framework 4
Estado
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".