Asignación de memoria para servicios

A medida que su negocio se expande y el número de dispositivos conectados aumenta inevitablemente, también lo hace la demanda de recursos para garantizar el correcto funcionamiento de la plataforma Navixy. Si bien la potencia de la CPU y el espacio en disco se asignan según sea necesario sin limitaciones, la cantidad máxima de RAM que se puede utilizar está estrictamente regulada por las configuraciones del sistema. Por lo tanto, puede llegar un momento en el que constate que la memoria asignada es insuficiente y sea necesario ampliarla. En esta sección, proporcionaremos orientación sobre cómo localizar los archivos de configuración requeridos y realizar los ajustes necesarios para optimizar el rendimiento de la plataforma.

Servicios Java

El backend de la plataforma Navixy consta de tres servicios Java. Las configuraciones predeterminadas asignan las siguientes cantidades de RAM para ellos:

  • API-server - 1024 Mb

  • SMS-server - 512 Mb

  • TCP-server - 1024 Mb

Esta cantidad de memoria es suficiente para un funcionamiento estable de la plataforma con hasta varios miles de dispositivos registrados. Sin embargo, si experimenta inestabilidad en la plataforma, como consultas API lentas, generación de informes prolongada o problemas con el procesamiento de datos de los rastreadores, aumentar la cantidad de memoria asignada puede ser una solución. A continuación veremos dónde encontrar las configuraciones que especifican este valor, dependiendo de cómo esté desplegada la plataforma.

Se recomienda especificar la cantidad de memoria asignada como un múltiplo de 1024. El valor se especifica por servicio por separado.

Al editar las configuraciones, es crucial considerar la memoria total disponible. Esto garantiza que no especifique una cantidad que exceda las limitaciones físicas. Al hacerlo, puede optimizar eficazmente el rendimiento y evitar posibles problemas. Además, si los servicios Java y la base de datos están ubicados en el mismo servidor, no olvide dejar suficiente espacio para la operación de la base de datos: por defecto es el 70% de toda la memoria.

Linux - servicios systemd

Para las versiones actuales de la plataforma (tanto las instaladas recientemente como aquellas que han recibido las últimas actualizaciones), systemd se utiliza como el gestor de inicio de servicios. Las configuraciones de inicio se encuentran en los directorios de servicio en las siguientes rutas:

  • /home/java/api-server/api-server.service.env

  • /home/java/sms-server/sms-server.service.env

  • /home/java/tcp-server/tcp-server.service.env

Dentro de cada archivo hay una línea como MAX_HEAP_SIZE="1024m". Especifique la cantidad de memoria que desea asignar al servicio en megabytes. No olvide conservar la letra m que representa megabytes.

Reinicie la plataforma o el servicio específico para aplicar los cambios.

Linux - servicios runit

Si decide no cambiar a systemd al actualizar su plataforma a la versión más reciente (esta opción se ofrece durante las actualizaciones automáticas), o en caso de que esté utilizando una versión antigua de la plataforma Navixy On-premise, los servicios Java utilizan runit como supervisor de servicios. También tiene sus propios archivos de configuración, que se encuentran en las siguientes rutas:

  • /etc/sv/api-server/run

  • /etc/sv/sms-server/run

  • /etc/sv/tcp-server/run

Entre los parámetros dentro de cada archivo encontrará un valor Xmx - este es la cantidad máxima de memoria que se puede asignar al servicio Java correspondiente. El parámetro completo tiene este aspecto: -Xmx1024m - esto significa que se asignan 1024 Mb de RAM al servicio. Edite este valor y especifique lo necesario, luego guarde el archivo.

Reinicie la plataforma con el restart-navixy comando para aplicar los cambios.

Linux - instancia dockerizada

En la versión dockerizada de la plataforma, la asignación de memoria se establece cuando se despliegan los contenedores, es decir, cuando se ejecuta el docker compose up -d comando. Este es un paso obligatorio al instalar y actualizar una instancia, pero puede realizarse independientemente de estos procesos.

Aunque las configuraciones básicas de la instancia se especifican en el .env archivo, se utiliza un archivo llamado compose.yaml para configurar el funcionamiento de los contenedores: se encuentra en la misma carpeta de trabajo de la instancia que los demás archivos del sistema.

Dentro de este archivo, puede ver las diversas secciones que establecen las opciones de inicio para todos los contenedores. Para cambiar la cantidad de memoria asignada a los contenedores api, sms y tcp necesita encontrar las secciones correspondientes y añadir la opción "MAX_HEAP_SIZE=" a la subsección environment , por ejemplo:

A continuación hay un ejemplo de cómo se hace esto para api-server en una instancia existente:

Guarde el archivo.

Después de aplicar los cambios, ejecute el siguiente comando estando en el directorio de trabajo:

Esto recreará los contenedores teniendo en cuenta las nuevas configuraciones.

El compose.yaml El archivo se reemplaza cuando la instancia dockerizada de Navixy se actualiza, y en ese caso las configuraciones mencionadas arriba deben realizarse nuevamente. Puede hacerlo antes de ejecutar inicialmente la instancia recién actualizada para poder ejecutarla de inmediato con las configuraciones necesarias.

Windows - servicios wrapper

Los servicios Java no están diseñados para ejecutarse en Windows por defecto, por lo que se utiliza software de terceros para habilitarlos. Se llama YAJSW (Yet Another Java Service Wrapper) y está diseñado para convertir archivos ejecutables jar normales en servicios de Windows. Este software se incluye en el paquete de distribución de la plataforma Navixy y se configura durante la instalación inicial.

Wrapper no tiene un directorio de instalación estándar y puede ubicarse en cualquier lugar, pero normalmente se coloca en C:\java\wrapper carpeta. En su interior encontrará la carpeta \conf que contiene los archivos de configuración para los tres servicios:

  • wrapper.api-server.conf

  • wrapper.sms-server.conf

  • wrapper.tcp-server.conf

Al final de cada una de las configuraciones se encuentran los ajustes de inicio del servicio, e incluyen una línea como:

El valor del parámetro -Xmx1024m significa que se asignan 1024 Mb de RAM al servicio. Edite este valor y especifique la cantidad de RAM requerida, conservando la m letra, luego guarde el archivo.

Reinicie el/los servicio(s) para aplicar los cambios.

MySQL

La base de datos es el servicio que más consume recursos dentro de la plataforma. Cuando un gran número de dispositivos ejerce presión sobre una memoria limitada, la base de datos puede tener dificultades para manejar todas las solicitudes entrantes. En consecuencia, esto puede resultar en que la plataforma Navixy funcione de forma lenta e inestable. Recomendamos encarecidamente supervisar el rendimiento de la base de datos y, si es necesario, aumentar la capacidad de RAM del servidor.

La cantidad de RAM asignada a la base de datos es un valor estático que se especifica en la configuración de MySQL. Generalmente se recomienda mantener este valor en el 70% de la cantidad total de RAM del servidor. Por lo tanto, si aumenta la cantidad total de RAM para mejorar el rendimiento de la base de datos, debe cambiar el valor en la configuración después de ello.

El archivo de configuración de MySQL se encuentra en la siguiente ruta:

  • Linux: /etc/mysql/mysql.conf.d/mysqld.cnf

  • Windows: C:\ProgramData\MySQL\MySQL Server 8\my.ini

En la sección [mysqld] de esta configuración, encontrará el parámetro innodb_buffer_pool_size - que establece la cantidad de memoria asignada para la base de datos. Si el tamaño actual es insuficiente, cambie el parámetro en consecuencia (asegúrese de conservar la unidad de medida - G para gigabytes). Guarde el archivo y reinicie MySQL.

Última actualización

¿Te fue útil?