Prioridade da fila de pedidos do ASP.NET

4

Estou no IIS 7 e no .NET 4.0. Meu entendimento é que o IIS recebe solicitações e as transmite para os threads de trabalho do ASP.NET. Se todos os encadeamentos estiverem em uso, a solicitação entrará em uma fila e será processada assim que um encadeamento se tornar disponível. Se a fila ultrapassar um determinado tamanho, todos os novos pedidos receberão um 503 até que haja espaço na fila novamente.

Existe uma maneira de priorizar a ordem na qual as solicitações enfileiradas são atendidas? Por exemplo, tenho tráfego de tráfego de consumidor e de infraestrutura chegando ao mesmo servidor. Se não houver encadeamentos disponíveis, prefiro que as solicitações do consumidor sejam exibidas primeiro, mesmo que tenham chegado após solicitações de infraestrutura. Basicamente eu quero substituir a fila de pedidos por uma fila de prioridade. Isso é possível com o IIS?

    
por dan 27.03.2012 / 23:24

2 respostas

2

Existem várias filas que podem estar envolvidas; Eu acho que sua descrição está incompleta.

O IIS permite especificar que partes específicas de um site sejam executadas em pools de aplicativos diferentes, cada um deles executado em um processo de trabalho separado.

Cada Pool de Aplicativos tem uma fila de pedidos no modo kernel (padrão para 1000 solicitações) usada para garantir que, no caso de um W3WP reciclado (processo de trabalho), as solicitações não sejam perdidas, mas isso também se torna o limite máximo prático para solicitações pendentes em um determinado momento.

Se esta fila ficar cheia, você receberá um 503.

Frameworks de aplicativos - como .Net ou ASP clássico - também podem implementar sua própria fila de solicitações no modo de usuário, que é executada no processo de trabalho. Não acredito que seja possível priorizar solicitações diferentes dentro da estrutura (a menos que haja um recurso do ASP.Net que faça isso com o qual eu não esteja familiarizado).

Se você tiver um número limitado de encadeamentos no pool de threads de cada processo, separar aplicativos em (por exemplo) conteúdo estático e pools de aplicativos de conteúdo ativo pode ajudar a manter o trabalho básico fora do pool de threads de um processo de aplicativo ocupado. (Da mesma forma, adicionar mais threads é (sem dúvida) uma abordagem razoável para isso).

    
por 28.03.2012 / 07:28
0

Eu não acredito, mas você poderia ter dois sites, um para o tráfego de consumidores e outro para o tráfego de infraestrutura, e cada um deles teria suas próprias filas.

    
por 28.03.2012 / 05:43

Tags