¿Cómo configurar el tamaño de la memoria JVM cuando se inicia Tomcat?
Parámetros
Descripción
-Xms
El tamaño del montón de inicialización de JVM
-Xmx p>
El tamaño máximo del montón de JVM
Los tamaños de estos dos valores generalmente se establecen según las necesidades. El tamaño del montón inicial implementa el tamaño de memoria solicitado por la máquina virtual al sistema cuando se inicia. En términos generales, este parámetro no es importante. Sin embargo, algunas aplicaciones consumen rápidamente más memoria bajo una carga pesada. En este momento, este parámetro es muy importante. Si la memoria utilizada para el inicio de la máquina virtual es relativamente pequeña y, en este caso, se inicializan muchos objetos, la máquina virtual debe aumentar repetidamente la memoria para satisfacer el uso. Para este propósito, generalmente configuramos -Xms y -Xmx en el mismo tamaño, y el tamaño máximo del montón está limitado por la memoria física utilizada por el sistema. Normalmente, las aplicaciones que utilizan grandes cantidades de datos utilizarán objetos persistentes y el uso de memoria puede aumentar rápidamente. Cuando la memoria requerida por una aplicación excede el valor máximo del montón, la máquina virtual provocará un desbordamiento de memoria, lo que provocará que el servicio de la aplicación falle. Por lo tanto, generalmente se recomienda establecer el tamaño máximo del montón en el 80% de la memoria máxima disponible.
La memoria disponible predeterminada de Tomcat es 128 MB, lo cual no es suficiente en proyectos de aplicaciones más grandes y debe aumentarse.
Antes del archivo /bin/catalina.bat en Windows y del archivo /bin/catalina.sh en Unix, agregue la siguiente configuración:
JAVA_OPTS='-Tamaño de memoria de inicialización de Xms -La memoria máxima que puede utilizar Xmx'
Es necesario aumentar los valores de estos dos parámetros. Por ejemplo:
JAVA_OPTS='-xms 256m-xmx 512m'
Significa que la memoria inicial es de 256MB y la memoria máxima que se puede utilizar es de 512MB.
Otra cosa a considerar es el mecanismo de recolección de basura proporcionado por Java. El tamaño del montón de una máquina virtual determina cuándo y con qué frecuencia la máquina virtual recolecta basura. La velocidad aceptable de recolección de basura es específica de la aplicación y debe ajustarse analizando el momento y la frecuencia reales de la recolección de basura. Si el montón es grande, la recolección completa de basura será lenta, pero menos frecuente. Si hace coincidir el tamaño del montón con sus requisitos de memoria, las colecciones completas serán rápidas, pero más frecuentes. El propósito de ajustar el tamaño del montón es minimizar el tiempo de recolección de basura, maximizando así el procesamiento de las solicitudes de los clientes dentro de un tiempo específico. Para garantizar el mejor rendimiento durante la prueba comparativa, el tamaño del montón debe establecerse en un tamaño grande para garantizar que no se produzca recolección de basura durante toda la prueba comparativa.
Si el sistema pasa mucho tiempo recogiendo basura, reduzca el tamaño del montón. Una recolección de basura completa no debería tomar más de 3 a 5 segundos. Si la recolección de basura se convierte en un cuello de botella, debe especificar el tamaño de generación, examinar el resultado detallado de la recolección de basura y estudiar el impacto de los parámetros de recolección de basura en el rendimiento. En términos generales, se debe utilizar el 80% de la memoria física como tamaño de montón. Al agregar procesadores, recuerde agregar memoria porque las asignaciones se pueden realizar en paralelo, pero la recolección de basura no.
Optimizaciones y configuraciones comunes de Tomcat 5
1. Optimización de la memoria JDK:
La memoria predeterminada que Tomcat puede usar es 128 MB. En Windows, en el archivo {tomcat_home}/bin/catalina.bat, en Unix, se agregan las siguientes configuraciones antes del archivo {tomcat_home}/bin/catalina.sh:
JAVA_OPTS='-Xms[ Tamaño de memoria de inicialización] -Xmx[Memoria máxima que se puede usar]
En términos generales, el 80% de la memoria física debe usarse como tamaño de montón.
2. Optimización del conector:
En la configuración del archivo de configuración de Tomcat server.xml, los parámetros relacionados con el número de conexiones son:
Número máximo de Hilos:
Tomcat utiliza hilos para manejar cada solicitud que recibe.
Este valor representa la cantidad máxima de subprocesos que Tomcat puede crear. El valor predeterminado es 150.
Recuento de aceptación:
Especifica el número de solicitudes que se pueden colocar en la cola de procesamiento cuando se utilizan todos los subprocesos disponibles para procesar solicitudes. Las solicitudes que excedan este número no serán procesadas. El valor predeterminado es 10.
minSpareThreads:
El número de subprocesos creados durante la inicialización de Tomcat. El valor predeterminado es 25.
maxSpareThreads:
Una vez que el número de subprocesos creados supera este valor, Tomcat cerrará los subprocesos del socket que ya no sean necesarios. El valor predeterminado es 75.
Habilitar búsqueda:
Ya sea para consultar inversamente el nombre de dominio, el valor predeterminado es verdadero. Para aumentar la potencia de procesamiento, se debe establecer en falso.
Tiempo de espera de conexión:
Tiempo de espera de conexión de red, el valor predeterminado es 60000, en milisegundos. Establecerlo en 0 significa que nunca expirará, lo cual es un peligro oculto. Por lo general, esto se puede configurar en 30000 milisegundos.
maxKeepAliveRequests:
El número de solicitudes de mantenimiento, el valor predeterminado es 100.
Tamaño del búfer:
Tamaño del búfer del flujo de entrada, el valor predeterminado es 2048 bytes.
Compresión:
Comprimir la transmisión, el valor es activado/desactivado/forzado, el valor predeterminado está desactivado.
Los parámetros relacionados con el número máximo de conexiones son maxThreads y AcceptCount. Si desea aumentar la cantidad de conexiones simultáneas, debe aumentar ambos parámetros al mismo tiempo. El número máximo de conexiones permitidas por el servidor web también está limitado por la configuración de los parámetros del kernel del sistema operativo, normalmente alrededor de 2000 para Windows y 1000 para Linux.
3. ¿Cómo prohibir y permitir que los archivos del directorio aparezcan en Tomcat?
En {tomcat_home}/conf/web.xml, simplemente configure el parámetro de listados en falso de la siguiente manera:
& ltservlet & gt
...
<init-param>
<param-name>list</param-name>
<valor del parámetro & gtfalse & lt/valor-param & gt;
& lt/init-param & gt;
...
& lt/servlet & gt ;
4. ¿Permitir el acceso al host o a la dirección IP en Tomcat?
& lthostname = "localhost"...& gt
...
& ltvalve class name = " org . Apache . catalina . Valves.remotehostvalve "
allow="*.mycompany.com,www.yourcompany.com"/>
<valve class name = "org.Apache.catalina válvulas .remoteaddrvalve "
deny = " 192.168.1. * "/>;
...
& lt/Host & gt;
Configuración del servidor
JAVA _ OPTS = '-server-xms 512m-xmx 768m-XX:NewSize = 128m-XX:MaxNewSize = 192m-XX:proporción de supervivientes = 8 '