Error de programación

Buenas, hace un tiempo ya que estamos teniendo un problema, los usuarios reportan errores y que sudocu anda “muy lento”, que tienen que hacer varias veces las cosas porque cuando crean un documento por ejemplo les tira un error, al rato vuelven a probar y les funciona. Estuvimos viendo los logs de sudocu_api-server y notamos un error que aparece bastante, el error es el siguiente:

ERROR DE PROGRAMACION 
 Error: Connection terminated due to connection timeout
    at Connection.<anonymous> (/app/node_modules/pg/lib/client.js:132:73)
    at Object.onceWrapper (events.js:519:28)
    at Connection.emit (events.js:400:28)
    at Socket.<anonymous> (/app/node_modules/pg/lib/connection.js:57:12)
    at Socket.emit (events.js:400:28)
    at TCP.<anonymous> (net.js:686:12)
    at TCP.callbackTrampoline (internal/async_hooks.js:130:17)
[2023-02-09T13:44:01] error_db_query  {
  details: null,
  stack: 'Error: Connection terminated due to connection timeout\n' +
    '     Connection.<anonymous> (/app/node_modules/pg/lib/client.js:132:73)\n' +
    '     Object.onceWrapper (events.js:519:28)\n' +
    '     Connection.emit (events.js:400:28)\n' +
    '     Socket.<anonymous> (/app/node_modules/pg/lib/connection.js:57:12)\n' +
    '     Socket.emit (events.js:400:28)\n' +
    '    ',
  string: 'Connection terminated due to connection timeout',
  clientmessage: 'Connection terminated due to connection timeout',
  url: '/documentos/eventos',
  msg: 'error_db_query',
  type: 'error',
  id_err: '6sgoo',
  trace: 'Error: Connection terminated due to connection timeout\n' +
    '     Connection.<anonymous> (/app/node_modules/pg/lib/client.js:132:73)\n' +
    '     Object.onceWrapper (events.js:519:28)\n' +
    '     Connection.emit (events.js:400:28)\n' +
    '     Socket.<anonymous> (/app/node_modules/pg/lib/connection.js:57:12)\n' +
    '     Socket.emit (events.js:400:28)\n' +
    '    '
}
ERROR DE PROGRAMACION 
 [object Object]
ERROR DE PROGRAMACION 
 Error: Connection terminated due to connection timeout

Y sigue bastantes lineas con lo mismo…

Creíamos que era un problema con las conexiones a la base de datos, así que le subimos la cantidad de conexiones máximas a postgres a 400 (por defecto estaba en 100). Esto no mejoro, pero si notamos que cuando hay mas de 100 conexiones simultaneas a la base de datos es cuando empieza a tirar el error, por ejemplo cuando hay 135 conexiones (cuando acepta 400) ya tira “ERROR DE PROGRAMACION”. Encontramos el siguiente hilo en éste mismo foro:
https://foro.comunidad.siu.edu.ar/index.php?topic=24551.0
Aparentemente tenían el mismo problema que nosotros así que decidimos probar esa solución. Lo primero que hicimos fue cambiar NODE_OPTIONS: “–max-old-space-size=4096” nada más, como funcionó un poco mejor pusimos toda la configuración que sugería, esto es agregar a sudocu.yml lo siguiente:


environment:
      TZ: "America/Buenos_Aires"
      NODE_OPTIONS: "--max-old-space-size=8192"
      UV_THREADPOOL_SIZE: "512"

Y anduvo peor que antes, así que volvimos a sacar “UV_THREADPOOL_SIZE” y en “NODE_OPTIONS” dejarlo en 4096, pero los usuarios siguen reportando que es muy dificil a veces usar el sistema y el error en el log del api-server sigue apareciendo.

A alguien más le pasa? Encontraron una solución?

Saludos!

Hola, buenas tardes
Te hago unas consultas inciales:

  • Qué recursos tienen asignados para los nodos del cluster?
  • Qué recursos tienen asignados los contenedores de los servicios de docker?
    Esto serían los limits y reservation de recursos de los servicios

Saludos

Hola Federico, muchas gracias por la respuesta, el nodo de docker swarm donde está desplegado sudocu-api-server tiene 8 CPUS y 8GB de ram y en sudocu.yml los resources y reservations del api-server son:


      resources:
        limits:
          cpus: '6'
          memory: 8192M
        reservations:
          cpus: '0.5'
          memory: 512M

Saludos!

Hola
Este punto lo tuvieron en cuenta al momento de configurar Araí Documentos?

https://expedientes.siu.edu.ar/docs/guia-aumentando-recursos/

Si no lo tuvieron en cuenta, consideren que los valores ahí sugeridos son mínimos, podrían probar con :
memory_limit = 2048M
post_max_size = 512M