Aumentar o uso de RAM para o servidor IIS

2

Estou executando um sistema ERP de grande escala na seguinte configuração do servidor. O aplicativo é desenvolvido usando AngularJS e ASP.NET 4.5

Dell PowerEdge R730 (Quad Core de 2,7 Ghz, 32 GB de RAM, 5 x 500 GB de disco rígido, configurado para RAID5) Software: O sistema operacional host é o VMWare ESXi 6.0 Duas VMs são executadas no VMWare ESXi .. uma é o Windows Server 2012 R2 com 16 GB de memória alocado ... isso contém o servidor IIS 8 com o código do meu aplicativo Outra VM também é o Windows Server 2012 R2 com SQL Server 2012 e 16 GB de memória alocados .... isso apenas contém o banco de dados do meu aplicativo.

Veja, separei o servidor de aplicativos e o servidor de banco de dados para fins de balanceamento de carga.

Meu aplicativo contém um módulo de registro no qual se espera que a carga seja muito alta (cerca de 10.000 visitantes em 10 minutos)

Para suportar esse volume de solicitações, fiz o seguinte no meu servidor IIS - > aumentar a fila de solicitações no tamanho do pool de aplicativos para 5000 - > ativar o cache de saída para arquivos aspx - > ativar a compactação estática e dinâmica no servidor IIS - > definir limite de memória virtual e limite de memória particular de cada pool de aplicativos para 0 - > Aumentar o processo máximo de trabalho de cada pool de aplicativos para 6

Eu então usei gatling para executar o teste de carga no meu aplicativo. Eu injetou 500 usuários ao mesmo tempo em meu módulo de registro.

No entanto, vejo que apenas 40% / 45% da minha RAM está sendo usada. Cada processo de trabalho está usando apenas uma quantidade máxima de 130 MB ou mais.

E a gatling está informando que cerca de 20% das minhas solicitações estão recebendo erro 403 e mais de 60% de todas as solicitações HTTP têm um tempo de resposta maior que 20 segundos .

Um único usuário faz 380 solicitações HTTP em um intervalo de aproximadamente 3 minutos. A transferência total de dados de um único usuário é de 1,5 MB. Eu simulei 500 usuários assim.

Há algo faltando no meu servidor? Eu já ajustei o código do meu aplicativo para minimizar vazamentos de memória, aumentar o tempo limite e assim por diante.

    
por Shuaib 12.04.2016 / 15:58

1 resposta

0

Coloque seu SQL Server em um host dedicado. Você tem duas gerações de sistema operacional convidado executando aqui antes de obter acesso a um recurso físico. Você tem o hipervisor como o SO base, o Child Guest é o host do Windows Server, o sistema operacional do Grandchild é o SQL Server que captura blocos de disco e RAM e os gerencia com seu próprio namespace. Você pode atenuar parte disso se tiver discos dedicados e rede dedicada. Não permita que a VM seja relocável.

link

Você terá alguma arbitragem sobre recursos compartilhados, pois terá 32 GB alocados entre seus dois hosts, o que deixa precisamente zero para o hipervisor, para que o hipervisor comece a arbitrar o acesso para compartilhar segmentos enquanto deixa um bloco para si mesmo. Você teria um desempenho muito melhor se instalasse os dois componentes na mesma instância do sistema operacional e usasse um canal nomeado local para toda a comunicação entre o SQL Server e o SQL Server. Atualmente, você está cultivando muita sobrecarga para uma assinatura excessiva do host físico hipervisor, duas instâncias do SO e o sistema operacional neto em execução.

"Um único usuário faz 380 solicitações HTTP ..."

Presumivelmente, estes não são todos elementos dinâmicos e há muito fluff estático aqui na forma de imagens, folhas de estilo, JavaScript, fontes e afins. Obtenha um CDN na frente desses elementos estáticos, para que a carga caia para quase NIL na origem dos componentes estáticos. Você quer que os recursos e a carga sejam destinados exclusivamente à parte dinâmica, ao formulário enviado aos dados e não ao tratamento geral de arquivos. Porra, eu sugeriria que você deseja que a idade do cache no cliente seja pelo menos tão longa quanto a duração da implantação da sua compilação. Implante no sábado e meia-noite toda semana, depois faça a idade do cache expirar à meia-noite de sábado, mais uma semana a cada compilação. Isso manterá seu CDN bem distribuído e você poderá evitar os acessos, a carga da rede e a carga do servidor.

    
por 12.09.2016 / 17:17