Tengo una aplicación de servidor personalizada que se ejecuta en Windows 2008 R2. Es un servicio de Windows casero escrito en .Net que admite una serie de terminales personalizadas. Tengo una máquina de prueba que tiene una especificación similar al servidor en vivo y tengo un conjunto de simuladores de clientes que puedo usar para producir una carga que sea una aproximación razonable del sistema real. Necesito poder soportar 12,000 de estos y actualmente el servidor se está quedando sin memoria (la paginación está por las nubes).
Mi plan era comenzar solo 100 de los simuladores, medir el uso de la memoria, luego comenzar nuevamente 100 más medir la memoria y repetir hasta que la paginación comience a subir (en realidad tomaré más de tres puntos de datos). Esto debería darme una cifra para la cantidad de memoria adicional requerida para 100 simuladores y me permite proyectar cuánta memoria se requiere. Solo necesito una idea aproximada de +/- 30Gb para evitar comprar los 2Tb completos (valor de $ 150,000) que tomará el servidor. Mi pregunta es si este es un método razonable de usar y, de ser así, ¿qué contadores de rendimiento supervisaría para dar la cantidad de memoria que realmente se está usando?
Estoy hablando específicamente de memoria aquí, ya que la diferencia entre Conjunto de trabajo, Bytes privados, Comprometido, Compartido, Virtual y todos los demás términos de memoria me confunden. Creo que puedo controlar la CPU, las E / S y las redes yo solo. La otra cosa que he notado es que .Net Cache ajusta su uso de memoria dependiendo de lo que esté disponible, lo que hace que detectar una tendencia sea difícil de ver.