Configuración de Memoria
Descripción General
En aplicaciones Java, es necesario configurar la memoria heap máxima utilizada por cada proceso. En fess, la configuración de memoria se realiza para cada uno de los siguientes tres componentes:
Aplicación Web fess
Proceso del Rastreador
OpenSearch
Una configuración de memoria apropiada permite mejorar el rendimiento y lograr una operación estable.
Configuración de Memoria de la Aplicación Web fess
Cuándo es Necesaria la Configuración
Considere ajustar el tamaño de memoria en los siguientes casos:
Se registran errores OutOfMemory en
fess.logEs necesario procesar un gran número de accesos simultáneos
Las operaciones de la pantalla de administración son lentas o se produce timeout
El tamaño de memoria predeterminado es suficiente para uso general, pero se requiere incremento en entornos de alta carga.
Configuración mediante Variables de Entorno
Configure la variable de entorno fess_HEAP_SIZE.
export fess_HEAP_SIZE=2g
Unidades:
m: megabytesg: gigabytes
Para Paquetes RPM/DEB
Para instalación con paquete RPM, edite /etc/sysconfig/fess.
fess_HEAP_SIZE=2g
Para paquetes DEB, edite /etc/default/fess.
fess_HEAP_SIZE=2g
Advertencia
Después de cambiar el tamaño de memoria, es necesario reiniciar el servicio fess.
Tamaños de Memoria Recomendados
| Entorno | Tamaño Heap Recomendado | Observaciones |
|---|---|---|
| Entorno de Desarrollo/Prueba | 512m〜1g | Índice de pequeña escala |
| Entorno de Producción Pequeño | 1g〜2g | Decenas a cientos de miles de documentos |
| Entorno de Producción Mediano | 2g〜4g | Cientos de miles a millones de documentos |
| Entorno de Producción Grande | 4g〜8g | Millones o más documentos |
Configuración de Memoria del Rastreador
Cuándo es Necesaria la Configuración
Es necesario aumentar el tamaño de memoria del rastreador en los siguientes casos:
Al aumentar el número de rastreos paralelos
Al rastrear archivos grandes
Cuando ocurren errores OutOfMemory durante la ejecución del rastreo
Método de Configuración
Edite app/WEB-INF/classes/fess_config.properties o /etc/fess/fess_config.properties.
jvm.crawler.options=-Xmx512m
Por ejemplo, para cambiar a 1GB:
jvm.crawler.options=-Xmx1g
Nota
Esta configuración se aplica por unidad de proceso del rastreador (por unidad de trabajo del programador). Si ejecuta múltiples trabajos de rastreo simultáneamente, cada trabajo utilizará la memoria especificada.
Configuración Recomendada
Rastreo Web normal: 512m〜1g
Rastreo paralelo masivo: 1g〜2g
Rastreo de archivos grandes: 2g〜4g
Opciones Detalladas de JVM
Las opciones detalladas de JVM para el rastreador se pueden configurar en jvm.crawler.options. La configuración predeterminada incluye las siguientes optimizaciones.
Opciones principales:
| Opción | Descripción |
|---|---|
-Xms128m -Xmx512m | Tamaño heap inicial y máximo |
-XX:MaxMetaspaceSize=128m | Tamaño máximo de Metaspace |
-XX:+UseG1GC | Uso del recolector de basura G1 |
-XX:MaxGCPauseMillis=60000 | Tiempo objetivo de pausa de GC (60 segundos) |
-XX:-HeapDumpOnOutOfMemoryError | Desactivar heap dump en OutOfMemory |
Configuración de Memoria de OpenSearch
Consideraciones Importantes
Para OpenSearch, es necesario considerar los siguientes dos puntos al configurar la memoria:
Memoria Heap Java: Utilizada por el proceso de OpenSearch
Caché del Sistema de Archivos del SO: Importante para el rendimiento de búsqueda
Advertencia
Si hace la memoria heap Java demasiado grande, disminuirá la memoria disponible para la caché del sistema de archivos del SO, reduciendo el rendimiento de búsqueda.
Método de Configuración
Entorno Linux
La memoria heap de OpenSearch se especifica mediante variables de entorno o el archivo de configuración de OpenSearch.
Configuración mediante variable de entorno:
export OPENSEARCH_HEAP_SIZE=2g
O edite config/jvm.options:
-Xms2g
-Xmx2g
Nota
Se recomienda configurar el tamaño heap mínimo (-Xms) y el tamaño heap máximo (-Xmx) al mismo valor.
Entorno Windows
Edite el archivo config\jvm.options.
-Xms2g
-Xmx2g
Tamaños de Memoria Recomendados
| Tamaño del Índice | Tamaño Heap Recomendado | Memoria Total Recomendada |
|---|---|---|
| 〜10GB | 2g | 4GB o más |
| 10GB〜50GB | 4g | 8GB o más |
| 50GB〜100GB | 8g | 16GB o más |
| 100GB o más | 16g〜31g | 32GB o más |
Advertencia
No configure la memoria heap de OpenSearch por encima de 32GB. Superar 32GB desactiva Compressed OOP y reduce la eficiencia de memoria.
Mejores Prácticas
Asignar el 50% de la memoria física al heap
Asigne aproximadamente el 50% de la memoria física del servidor al heap de OpenSearch. El resto se utiliza para el SO y la caché del sistema de archivos.
Máximo de 31GB
El tamaño heap debe ser hasta 31GB como máximo; si se necesita más, aumente el número de nodos.
Verificación en Entorno de Producción
Consulte la documentación oficial de OpenSearch y realice la configuración óptima según su entorno.
Configuración de Memoria para Procesamiento de Sugerencias y Miniaturas
Proceso de Generación de Sugerencias
La configuración de memoria para el proceso de generación de sugerencias se configura en jvm.suggest.options.
jvm.suggest.options=-Xmx256m
Por defecto se utiliza la siguiente configuración:
Heap inicial: 128MB
Heap máximo: 256MB
Metaspace máximo: 128MB
Proceso de Generación de Miniaturas
La configuración de memoria para el proceso de generación de miniaturas se configura en jvm.thumbnail.options.
jvm.thumbnail.options=-Xmx256m
Por defecto se utiliza la siguiente configuración:
Heap inicial: 128MB
Heap máximo: 256MB
Metaspace máximo: 128MB
Nota
Si procesa imágenes grandes en la generación de miniaturas, es necesario aumentar la memoria.
Monitoreo y Ajuste de Memoria
Verificación del Uso de Memoria
Uso de Memoria de fess
Puede verificar en «Información del Sistema» en la pantalla de administración.
O utilice herramientas de monitoreo de JVM:
jps -l # Verificar proceso de fess
jstat -gcutil <PID> 1000 # Mostrar estadísticas de GC cada segundo
Uso de Memoria de OpenSearch
curl -X GET "localhost:9201/_nodes/stats/jvm?pretty"
curl -X GET "localhost:9201/_cat/nodes?v&h=heap.percent,ram.percent"
Síntomas de Falta de Memoria
Si aparecen los siguientes síntomas, es posible que haya falta de memoria.
Aplicación Web fess:
Respuesta lenta
OutOfMemoryErrorregistrado en logsEl proceso termina inesperadamente
Rastreador:
El rastreo se detiene a mitad
OutOfMemoryErrorregistrado enfess_crawler.logFalla el rastreo de archivos grandes
OpenSearch:
Búsqueda lenta
Creación de índice lenta
Ocurre error
circuit_breaker_exception
Procedimiento de Ajuste
Verificar el uso actual de memoria
Monitoree el uso de memoria de cada componente.
Identificar el cuello de botella
Identifique qué componente tiene falta de memoria.
Aumentar gradualmente
En lugar de aumentar mucho de una vez, aumente en incrementos del 25-50% y verifique el efecto.
Considerar el equilibrio del sistema completo
Asegúrese de que el total de memoria de cada componente no exceda la memoria física.
Monitoreo continuo
Monitoree continuamente el uso de memoria y ajuste según sea necesario.
Contramedidas para Fugas de Memoria
Si se sospecha una fuga de memoria:
Obtener heap dump
jmap -dump:format=b,file=heap.bin <PID>
Análisis del heap dump
Analice con herramientas como Eclipse Memory Analyzer (MAT).
Reportar el problema
Si descubre una fuga de memoria, repórtela en GitHub Issues.
Solución de Problemas
Ocurre OutOfMemoryError
Aplicación Web fess:
Aumente
fess_HEAP_SIZE.Limite el número de accesos simultáneos.
Reduzca el nivel de log para disminuir el uso de memoria por salida de logs.
Rastreador:
Aumente
-Xmxenjvm.crawler.options.Reduzca el número de rastreos paralelos.
Ajuste la configuración de rastreo para excluir archivos grandes.
OpenSearch:
Aumente el tamaño heap (hasta 31GB como máximo).
Revise el número de shards del índice.
Verifique la complejidad de las consultas.
Tiempo de Pausa Largo por GC
Ajuste la configuración de G1GC.
Configure el tamaño heap apropiadamente (GC frecuente si es demasiado grande o demasiado pequeño).
Considere actualizar a una versión más reciente de Java.
El Rendimiento No Mejora Después de Configurar la Memoria
Verifique otros recursos como CPU, I/O de disco, red.
Realice optimización del índice.
Revise las consultas y la configuración de rastreo.
Información de Referencia
Configuración de Puerto y Red - Configuración de Puerto y Red
Configuración Avanzada del Rastreador - Configuración Avanzada del Rastreador
Configuración de Registro - Configuración de Logs