Estoy escribiendo un servlet de Java que planeo implementar en Amazon AWS utilizando Elastic Beanstalk. Mis pruebas muestran que las cosas funcionan bien con una instancia de Small EC2 utilizando su stock AMI de Tomcat que utiliza Beanstalk.Asignación de un montón de Java para Tomcat en una instancia de EC2
Estoy intentando averiguar cómo asignar correctamente el espacio de montón de Java para esta configuración. Una instancia pequeña tiene 1.7 GB de memoria, por lo que estoy pensando que un montón de 1024MB funcionará bien. Me doy cuenta de que la memoria será necesaria para otras cosas, aunque el único propósito "real" de esta instancia es ejecutar Tomcat. Y también sé que hay algún punto con montones grandes donde la JVM Sun/Oracle estándar realmente no funciona.
¿Es esta una forma razonable de asignar la memoria? ¿Debo usar más o menos? ¿Qué herramientas puedo usar para ayudar a determinar la configuración óptima?
Gracias por su aportación. No entraré en detalles sobre nuestra aplicación. Permite a los usuarios ver información sobre diferentes temas y luego posiblemente agregarles más información. Parte de la información sobre los temas se genera dinámicamente desde una base de datos, mientras que la mayoría son datos estáticos que leemos desde los archivos al inicio y se guardan en nuestras propias estructuras de datos en el montón. En conjunto, tiene alrededor de 250-300 MB de datos. Supongo que cuando realmente funcione, tendremos unas pocas decenas de miles de usuarios por día. –
En mi proyecto anterior de AWS intenté controlar todo. Para este proyecto, decidí que necesitaba dedicar más tiempo a la aplicación "real" y a cómo comercializarla, y no a simples trabajos de TI, así que simplemente estoy usando stock Beanstalk. Eso significa usar su stock AMI, que es Linux, y Elastic Load Balancer. ¿Hay alguna razón por la que está utilizando mod_jk para distribuir carga en lugar de ELB? Por lo tanto, ¿por qué crees que 1024 es demasiado? Eso deja 700MB para todo lo demás, que en realidad no es más que tareas estándar del sistema operativo. ¿Estoy mirando esto correctamente? –
@SanderSmith Todavía estoy usando el ELB, pero lo estoy usando para equilibrar entre 2 pequeñas instancias del servidor web de apache. Luego mod_jk se usa desde mis instancias de servidor web de apache para distribuir la carga a mis instancias de tomcat. Apache es mejor en el servicio de recursos estáticos y maneja mejor SSL, por eso los estoy usando. Supongo que lo mejor que puedes hacer es probar la carga y tomar tus decisiones desde allí. Si su aplicación espera recibir 10k usuarios por día, no creo que una pequeña instancia de ec2 sea suficiente sin importar cómo ajuste la JVM –