Cómo modificar la configuración de la memoria en Java

Edge para la nube privada v4.19.01

Según tus requisitos de tráfico y procesamiento, es posible que debas cambiar el tamaño de la memoria del montón o el tamaño de los metadatos de clase de los nodos que ejecutan componentes de la nube privada basados en Java.

En esta sección, se proporcionan los tamaños de memoria del montón de Java predeterminados y recomendados, así como el proceso para cambiar los valores predeterminados. Por último, en esta sección, se describe cómo cambiar otras opciones de configuración de JVM con archivos de propiedades.

Tamaños de memoria de montón predeterminados y recomendados

En la siguiente tabla, se enumeran los tamaños predeterminados y recomendados de memoria del montón de Java para los componentes de la nube privada basados en Java:

Componente Nombre del archivo de propiedades Predeterminado
Tamaño del montón
Recomendado
Tamaño del montón
Tiempo de ejecución
Cassandra N/A Configuración automática1 Configuración automática1
Procesador de mensajes message-processor.properties 512 MB De 3 GB a 6 GB2
Router router.properties 512 MB 512 MB
Analytics
Servidor Postgres postgres-server.properties 512 MB 512 MB
Servidor Qpid qpid-server.properties 512 MB De 2 GB a 4 GB
Administración
Servidor de administración management-server.properties 512 MB 512 MB
IU ui.properties 512 MB 512 MB
OpenLDAP N/A Aplicación nativa3 Aplicación nativa3
Zookeeper zookeeper.properties 2,048 MB 2,048 MB
Notas

1 Cassandra calcula de forma dinámica el tamaño máximo de montón cuando se inicia. Actualmente, es la mitad de la memoria total del sistema, con un máximo de 8,192 MB. Si quieres obtener información para configurar el tamaño del montón, consulta Cómo cambiar el tamaño de la memoria del montón.

2 Para los procesadores de mensajes, Apigee recomienda que establezcas el tamaño del montón entre 3 GB y 6 GB. Aumenta el tamaño del montón más allá de los 6 GB solo después de realizar pruebas de rendimiento.

Si el uso del montón se acerca al límite máximo durante las pruebas de rendimiento, aumenta ese límite. Si quieres obtener información para configurar el tamaño del montón, consulta Cómo cambiar el tamaño de la memoria del montón.

3 No todos los componentes de la nube privada se implementan en Java. Como no están basadas en Java, las apps que se ejecutan de forma nativa en la plataforma host no tienen tamaños de montón de Java configurables. En cambio, dependen del sistema host para la administración de la memoria.

Para determinar la cantidad total de memoria que Apigee recomienda que asignes a tus componentes basados en Java en un nodo, agrega los valores enumerados arriba para cada componente de ese nodo. Por ejemplo, si tu nodo aloja los servidores Postgres y Qpid, Apigee recomienda que la asignación de memoria combinada sea de entre 2.5 GB y 4.5 GB.

Para obtener una lista del hardware requerido (como la RAM), consulta Requisitos de instalación.

Cómo cambiar los tamaños de memoria del montón

Para cambiar la configuración de memoria de montón, edita el archivo de propiedades del componente. Por ejemplo, para Message Processor, edita el archivo /opt/apigee/customer/application/message-processor.properties.

Si el archivo message-processor.properties no existe, o si el archivo .properties correspondiente para cualquier componente de Edge no existe, créalo y, luego, cambia la propiedad del archivo al usuario de “apigee”, como se muestra en el siguiente ejemplo:

chown apigee:apigee /opt/apigee/customer/application/message-processor.properties

Si el componente está instalado en varias máquinas, como Message Processor, debes editar el archivo de propiedades en todas las máquinas que lo alojan.

En la siguiente tabla, se enumeran las propiedades que puedes editar para cambiar los tamaños del montón:

Propiedad Descripción
bin_setenv_min_mem

Es el tamaño mínimo de montón. El valor predeterminado se basa en los valores que se indican en Tamaños predeterminados y recomendados de memoria del montón.

Esta configuración corresponde a la opción -Xms de Java.

bin_setenv_max_mem

Es el tamaño máximo de montón. El valor predeterminado se basa en los valores que se indican en Tamaños predeterminados y recomendados de memoria del montón.

Esta configuración corresponde a la opción -Xmx de Java.

bin_setenv_meta_space_size

El tamaño predeterminado de los metadatos de la clase. El valor predeterminado se establece en bin_setenv_max_permsize, que es de 128 MB. En Message Processor, Apigee recomienda establecer este valor en 256 MB o 512 MB, según el tráfico.

Esta configuración corresponde a la opción -XX:MetaspaceSize de Java.

Cuando configures las propiedades de tamaño de montón en un nodo, usa el sufijo "m" para indicar megabytes, como se muestra en el siguiente ejemplo:

bin_setenv_min_mem=4500m
bin_setenv_max_mem=4500m
bin_setenv_meta_space_size=1024m

Después de establecer los valores en el archivo de propiedades, reinicia el componente:

/opt/apigee/apigee-service/bin/apigee-service component restart

Por ejemplo:

/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Cambia otras propiedades de JVM

En el caso de la configuración de Java no controlada por las propiedades mencionadas anteriormente, también puedes establecer lo siguiente en el archivo de propiedades correspondiente para cualquier componente de Edge:

  • bin_setenv_ext_jvm_opts: Configura cualquier propiedad de Java que no esté especificada por otras propiedades. Por ejemplo:
    bin_setenv_ext_jvm_opts=-XX:MaxGCPauseMillis=500
    .

    Sin embargo, no uses bin_setenv_ext_jvm_opts para configurar -Xms, -Xmx ni -XX:MetaspaceSize, ya que las propiedades mencionadas anteriormente controlan estos valores.

Si quieres obtener sugerencias adicionales sobre la configuración de la memoria para componentes de nube privada, consulta este artículo en los foros de Edge.