1) Parece recomendável ter um pool de aplicativos por site. Existem advertências para essa abordagem? Um pool de aplicativos, por exemplo, pode monopolizar toda a CPU, Memória, Etc ...?
Essa é uma abordagem muito boa; não existem boas razões para pensar em ter "sites" (aplicativos) diferentes compartilhando o mesmo pool. A menos que eles precisem compartilhar um único recurso de algum tipo. Uma aplicação poderia teoricamente consumir muita CPU ou memória, mas alterar a forma como as aplicações são agrupadas não afetará tanto.
2) Quando você deve permitir vários processos de trabalho em um pool de aplicativos. Quando você não deveria?
É melhor deixar sozinho, usando as configurações padrão. A menos que você realmente saiba o que está fazendo, isso poderá afetar negativamente seu site / aplicativo.
3) O limite de memória privada pode ser usado para impedir que um pool de aplicativos interfira em outro? A configuração muito baixa fará com que solicitações válidas reciclem o pool de aplicativos sem obter uma resposta válida?
a) Teoricamente
b) Sim, defini-lo para mais baixo pode ter efeitos negativos. Novamente, a menos que você tenha necessidades específicas e saiba o que está fazendo, deixe-as em paz.
4) Qual é a diferença entre os limites de memória privada e virtual?
Isso é muito complicado, aqui está uma rápida publicação que achei que poderia ajudar: http://cybernetnews.com/cybernotes-windows-memory-usage-explained/
5) Existem razões convincentes para NÃO executar um pool de aplicativos por site?
Novamente, a única razão pela qual consigo pensar é que, se houver algum tipo de "recurso compartilhado" de vários aplicativos, você poderá executá-los no mesmo processo.
Para aplicativos e sites de uso geral, o IIS está muito bem configurado com seus valores padrão.
****ATUALIZAR****
Em relação ao seu pedido de informações adicionais sobre o item 2, você não deve fazer isso, a menos que tenha uma necessidade específica de fazê-lo. Mesmo com ações do servidor que demoram muito tempo, as solicitações são atendidas usando vários encadeamentos e você deseja usar "Solicitações assíncronas" para lidar com tarefas de longa execução (que libera um encadeamento do conjunto de encadeamentos para manipular outras solicitações). Realisticamente, não consigo pensar em nenhum bom motivo para permitir vários processos para um único pool.
Depois que você começa a falar sobre vários processos, você potencialmente encontra coisas como: perdendo o estado da sessão porque uma sessão está ativa no processo 1, mas a solicitação está sendo tratada pelo processo 2. Ou, pior ainda, você precisa descobrir como faça alguma comunicação entre processos, o que é uma verdadeira dor.
Não importa o que você venha com relação a uma razão para vários processos, eu estaria disposto a apostar que há uma maneira melhor de lidar com isso (em vez de iniciar outro processo).