Cómo optimizar la configuración de Tomcat
Tomcat tiene muchos aspectos. Presentaré métodos de optimización desde cuatro aspectos: memoria, concurrencia y caché.
1. Optimización de la memoria de Tomcat
La optimización de la memoria de Tomcat es principalmente para optimizar los parámetros de inicio de Tomcat. Podemos configurar los parámetros JAVA_OPTS en el script de inicio de Tomcat catalina.sh.
Descripción del parámetro JAVA_OPTS
-server habilita la versión del servidor de jdk;
-memoria mínima Xms al inicializar la máquina virtual java;
-Xmx La memoria máxima que puede utilizar la máquina virtual Java;
-XX:PermSize Área de reserva permanente de memoria
-XX:MaxPermSize Área máxima de reserva permanente de memoria
Configuración de parámetros del servidor
Hoy en día, la memoria del servidor de la empresa generalmente se puede aumentar hasta un máximo de 2G, por lo que se puede adoptar la siguiente configuración:
JAVA_OPTS='-Xms1024m - Xmx2048m -XX:PermSize=256M -XX: MaxNewSize=256m -XX:MaxPermSize=256m'
Una vez completada la configuración, puede reiniciar Tomcat y ejecutar el siguiente comando para verificar si la configuración surte efecto:
Primero verifique el número de proceso de Tomcat:
sudo lsof -i:9027
Podemos ver que el número de proceso de Tomcat es 12222.
Comprueba si la configuración ha surtido efecto:
sudo jmap – heap 12222
Podemos ver que parámetros como MaxHeapSize han surtido efecto. ,
2. Optimización de la concurrencia de Tomcat
1. Configuración de los parámetros relacionados con la conexión de Tomcat
1>Descripción del parámetro
minProcessors: el número mínimo de subprocesos de conexión inactivos, utilizado para mejorar el rendimiento del procesamiento del sistema, el valor predeterminado es 10
maxProcessors: el número máximo de subprocesos de conexión, es decir: el número máximo de solicitudes procesadas simultáneamente, el valor predeterminado es 75
acceptCount: el número máximo de conexiones permitidas, debe ser mayor o igual a maxProcessors, el valor predeterminado es 100
enableLookups: si se debe revertir Verifique el nombre de dominio, el valor es: verdadero o falso. Para mejorar las capacidades de procesamiento, se debe establecer en falso
connectionTimeout: tiempo de espera de la conexión de red, unidad: milisegundos. Establecerlo en 0 significa que nunca expirará, lo cual es una configuración peligrosa. Normalmente se establece en 30000 milisegundos.
Los parámetros relacionados con el número máximo de conexiones son maxProcessors y AcceptCount. Si desea aumentar la cantidad de conexiones simultáneas, debe aumentar estos dos parámetros al mismo tiempo.
El número máximo de conexiones permitidas por el servidor web también está sujeto a la configuración de los parámetros del kernel del sistema operativo. Por lo general, es de aproximadamente 2000 para Windows y aproximadamente 1000 para Linux.
2>Ejemplo de configuración en Tomcat
protocol="HTTP/1.1" maxHttpHeaderSize = "8192" minProcessors="100" maxProcessors="1000" acceptCount="1000" redirectPort=" 8443 " disableUploadTimeout="true"/> 2. Ajustar la capacidad de procesamiento concurrente del conector 1>Descripción del parámetro maxThreads El número máximo de subprocesos solicitados por el cliente minSpareThreads El número de subprocesos de socket creados cuando se inicializa Tomcat maxSpareThreads El número máximo de subprocesos de socket inactivos para el conector Tomcat enableLookups Si se establece Si es verdadero, se admite la resolución de nombres de dominio y la dirección IP se puede resolver en un nombre de host redirectPort reenvía las solicitudes de los clientes al puerto de redirección basado en SSL cuando se requiere un canal seguro acceptAccount El número máximo de colas de puertos de escucha. Cuando están llenas, las solicitudes de los clientes serán rechazadas (no puede ser menor que maxSpareThreads) connectionTimeout tiempo de espera de conexión minProcessors El número mínimo de subprocesos de procesamiento cuando se crea el servidor maxProcessors El número máximo de subprocesos de procesamiento simultáneos del servidor URIEncoding URL de codificación unificada 2>Ejemplo de configuración en Tomcat protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThreads ="1000" minSpareThreads="100" p> maxSpareThreads="1000" minProcessors="100" maxProcessors=" 1000" enableLookups="false" URIEncoding="utf-8" acceptCount="1000" redirectPort=" 8443" disableUploadTimeout="true"/> p> 3.Optimización de caché de Tomcat 1>Descripción del parámetro la compresión se activa la función de compresión compressionMinSize habilita el tamaño del contenido de salida comprimido, aquí el valor predeterminado es 2 KB tipo de compresión compressableMimeType connectionTimeout define el tiempo de espera para establecer una conexión de cliente. Si es -1, significa que el tiempo para establecer una conexión de cliente no está limitado 2 >Ejemplo de configuración en Tomcat protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThreads="1000" minSpareThreads="100" maxSpar eThreads="1000" minProcessors="100" maxProcessors="1000" enableLookups="false" compresión= "on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" connectionTimeout="20000" URIEncoding="utf-8" acceptCount="1000" redirectPort="8443" disableUploadTimeout="true"/> 4. Configuración de referencia 1>Configuración anterior Consulte la red y configure el servidor de la siguiente manera, tome Ven y comparte: protocol="HTTP/1.1" maxHttpHeaderSize="8192" maxThreads="1000" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" compresión ="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" connectionTimeout="20000" URIEncoding="utf-8" acceptCount="200" redirectPort="8443" disableUploadTimeout="true" /> Más tarde se descubrió que se produjo un cuello de botella en el rendimiento cuando el número de visitas alcanzó más de 3 millones. 2>Configuración modificada protocol="HTTP/1.1" maxHttpHeaderSize="8192 " maxThreads="1000" minSpareThreads="100" maxSpareThreads="1000" minProcessors="100 " maxProcessors="1000" enableLookups="false" compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" connectionTimeout="20000" URIEncoding= "utf -8" acceptCount="1000" redirectPort="8443" disableUploadTimeout="true"/>