Uso repentino de memoria que no baja

Hace poco más de una semana, revisé el gráfico de DO para la memoria y me sorprendió bastante:

Ha estado estable durante más de un año. Detuve/reinicié el contenedor y el uso volvió a bajar, pero en las últimas horas ha vuelto a subir al nivel anterior.

¿Qué causa esto? top/ps me indican que los principales responsables son los procesos de PostgreSQL. Aquí está la información de free:

$ free -mh
              total        used        free      shared  buff/cache   available
Mem:          7.8Gi       2.5Gi       142Mi       2.3Gi       5.1Gi       2.6Gi

Incluso no puedo acceder al droplet a través de la consola de DO. Se bloquea debido a OOM (falta de memoria). Por suerte, he instalado claves SSH y puedo acceder desde mi portátil personal, por lo que en este momento todavía puedo acceder al droplet.

¿Qué debería hacer? Tengo un presupuesto ajustado, por lo que cambiar el tamaño del droplet es mi última opción, y me pregunto si hay algo más que pueda hacer. Parece que ocurre de la nada. Estoy ejecutando la versión 2.7.0.beta5.

¿Qué, si es que algo, ha cambiado recientemente? ¿Has actualizado?

El único salto vertical en mis gráficos durante los últimos 14 días también ocurrió el 11 de mayo, aunque fue menos drástico, pasando del 78% al 89%. ¿Quizás realizamos una actualización entonces?

Parece estar relacionado con el host, ya que para mí el uso de memoria disminuyó. El aumento de versión a beta9 se añadió el día 10, así que probablemente hice una reconstrucción alrededor de esa fecha (y descargué una nueva imagen, como muestran los datos de uso de disco). No recuerdo haber actualizado el host, aunque es posible que lo haya hecho.


¿No tienes swap?

No, he estado ejecutando la versión 2.7beta5 durante un tiempo. No hemos cambiado nada desde hace un buen rato.

La razón por la que no estoy en la última versión es que hubo preocupaciones con mi desarrollador de frontend después de la última actualización que realizamos, ya que introdujo algunos cambios disruptivos en su código de estilos (yo solo soy administrador de sistemas, no tengo idea de este tipo de cosas). Creo que esos problemas ya se han solucionado en Discourse, pero estábamos esperando la próxima versión menor para actualizar.

¿Qué podría estar causando esto en el host?

Redimensionar el droplet duplica nuestra factura, así que realmente no quiero hacerlo, pero podría ser la solución más sencilla.

El swap es el que venía por defecto, no estoy seguro.

:thinking: ¿y qué dice /sidekiq?

Si añades memoria de intercambio (swap), evitarás los errores OOM. No quieres OOMs, ni tampoco demasiada actividad de paginación; de lo contrario, el aumento en el uso de memoria podría ser importante o no. (Podría ser interesante, pero eso es otro tema.)

Recomiendo ejecutar
vmstat 5 5
o algo similar para ver cómo se comporta la actividad de paginación.

Además,
free -h
es más útil que
free -mh
porque sí importa cuánto espacio de swap te queda.