Select the product you need help with
Contenção, desempenho fraco e bloqueios quando você fazer chamadas para serviços da Web de um aplicativo ASP.NETArtigo: 821268 - Ver produtos para os quais este artigo se aplica. Nesta páginaSintomasQuando você faz chamadas a serviços Web de um aplicativo do Microsoft ASP.NET, você pode enfrentar contenção, mau desempenho e deadlocks. Os clientes podem relatar que solicitações parar de responder (ou "travar") ou levam muito tempo para executar. Se houver suspeita de um deadlock, o processo de trabalho pode ser reciclado. Você pode receber as seguintes mensagens no log de eventos do aplicativo.
"System. InvalidOperationException:
Não havia segmentos livres suficientes no objeto ThreadPool para concluir o
operação." "HttpException (0x80004005): solicitação atingiu o tempo
out." CausaEsse problema pode ocorrer porque o ASP.NET limita o número
de threads de trabalho e de threads de porta de conclusão que uma chamada pode usar para executar
solicitações. Normalmente, uma chamada para um serviço da Web usa um thread de trabalho para executar o código que envia a solicitação e um segmento de porta de conclusão para receber o retorno de chamada do serviço da Web. No entanto, se a solicitação é redirecionada ou requer autenticação, a chamada pode usar até dois threads de trabalho e dois threads de porta de conclusão. Portanto, você pode esgotar o ThreadPool gerenciado quando ocorrem várias chamadas de serviço da Web ao mesmo tempo. Por exemplo, suponha que o ThreadPool é limitado a 10 threads de trabalho e que todos os threads de trabalho 10 atualmente estão executando o código que está aguardando um retorno de chamada executar. O retorno de chamada nunca pode ser executado, pois os itens de trabalho que estão enfileirados para o ThreadPool são bloqueados até que um segmento estiver disponível. Outra fonte potencial de contenção é o parâmetro maxconnection que usa o namespace System.Net para limitar o número de conexões. Em geral, Esse limite funciona conforme o esperado. No entanto, se muitos aplicativos tentam fazer muitas solicitações para um único endereço IP ao mesmo tempo, segmentos podem ter de esperar uma conexão disponível. ResoluçãoPara resolver esses problemas, você pode ajustar os seguintes parâmetros no arquivo Machine. config para melhor se adequarem a sua situação:
maxWorkerThreads e maxIoThreadsASP.NET usa as seguintes definições de configuração de dois para limitar o número máximo de threads de trabalho e de threads de conclusão são usado:2 * maxWorkerThreads minFreeThreads e minLocalRequestFreeThreadsASP.NET também contém a seguinte configuração configurações que determinam quantos threads de trabalho e conclusão de threads de porta deve estar disponível para iniciar uma solicitação remota ou uma solicitação de local: (maxWorkerThreads*número de CPUs)-minFreeThreads Observação Os parâmetros minFreeThreads e minLocalRequestFreeThreads não são multiplicados implicitamente pelo número de CPUs.minWorkerThreadsNo ASP.NET 1.0 Service Pack 3 e ASP.NET 1.1, ASP.NET também contém a seguinte configuração que determina como muitos threads de trabalho podem ser disponibilizadas imediatamente atender a um controle remoto solicitação.maxconnectionO parâmetro maxconnection determina quantas conexões podem ser feitas para um endereço IP específico. O parâmetro aparece da seguinte maneira:executionTimeoutASP.NET usa a seguinte configuração para limite o tempo de execução de solicitação:Observação Se você aumentar o valor do parâmetro executionTimeout , talvez você também precise modificar processModel responseDeadlockInterval configuração de parâmetro. RecomendaçõesAs configurações recomendadas nesta seção podem não funcionar para todos os aplicativos. No entanto, as seguintes informações adicionais podem ajudar a Faça os ajustes adequados.Se Você está fazendo uma chamada de serviço da Web para um único endereço IP de cada página ASPX, A Microsoft recomenda que você use as seguintes configurações:
Observação Quando você usa esta configuração, você pode executar um máximo de 12 Solicitações ASP.NET por CPU ao mesmo tempo porque 100-88 = 12. Portanto, pelo menos 88 *N operador segmentos e 88 *N threads de porta de conclusão são disponível para outros usos (como retornos de chamada de serviço da Web). Por exemplo, você tem um servidor com quatro processadores e hyperthreading ativado. Com base nas seguintes fórmulas, você usaria os seguintes valores para o definições de configuração que são mencionadas neste artigo. Além disso, quando você usa esta configuração, 12 conexões estão disponíveis por CPU por endereço IP para cada AppDomain. Portanto, no seguinte cenário, muito pouco contenção ocorre quando solicitações estão aguardando conexões e o ThreadPool não é esgotado:
Ponto Da Situação Isso
comportamento é por design. Mais InformaçãoSe você estiver tendo um desempenho ruim e contenção no IIS 7.0 com o ASP.NET, consulte os seguintes blogs da Microsoft: Uso de threads do ASP.NET no IIS 7.5, o IIS 7.0 e o IIS 6.0
(http://blogs.msdn.com/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx)
Congelamento do ASP.net no IIS 7.0
(http://blogs.msdn.com/webtopics/archive/2009/02/13/asp-net-hang-in-iis-7-0.aspx)
ReferênciasPara obter mais informações, consulte o seguinte site da Microsoft Developer Network (MSDN): Melhorar o desempenho do ASP.NET
(http://msdn2.microsoft.com/en-us/library/ms998549.aspx)
PropriedadesArtigo: 821268 - Última revisão: quarta-feira, 6 de Fevereiro de 2013 - Revisão: 1.0 A informação contida neste artigo aplica-se a:
Tradução automática IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 821268
(http://support.microsoft.com/kb/821268/en-us/
)
| Traduções de Artigos
|




Voltar ao topo








