Eu tenho um aplicativo de servidor personalizado que é executado no Windows 2008 R2. É um serviço Windows desenvolvido em casa, escrito em .Net, que suporta vários terminais personalizados. Eu tenho uma máquina de teste que tem uma especificação semelhante ao servidor ativo e um conjunto de simuladores de clientes que posso usar para produzir uma carga que é uma aproximação razoável do sistema real. Preciso suportar 12.000 delas e, atualmente, o servidor está ficando sem memória (a paginação está passando do teto).
Meu plano era iniciar apenas 100 dos simuladores, medir o uso de memória e, em seguida, iniciar mais 100 medidas de memória novamente e repetir até que a paginação comece a subir (na realidade, eu vou usar mais de três pontos de dados). a quantidade de memória extra necessária para 100 simuladores e me permite projetar quanta memória é necessária. Eu só preciso de uma idéia aproximada de +/- 30 GB para evitar comprar os 2 TB completos (valor de US $ 150.000) que o servidor levará. Minha pergunta é se esse é um método razoável de usar e, em caso afirmativo, quais contadores de desempenho você monitoraria para fornecer a quantidade de memória realmente usada?
Estou falando especificamente sobre memória aqui, pois a diferença entre conjunto de trabalho, bytes privados, confirmada, compartilhada, virtual e todos os outros termos de memória me confunde. Acho que consigo monitorar a CPU, E / S e redes sozinho. A outra coisa que notei é que o .Net Cache ajusta seu uso de memória dependendo do que está disponível, o que dificulta a visualização de uma tendência.