Error por tiempo de espera agotado en la base de datos

la solicitud para la página de inicio http://10.201.61.8/forum
el tiempo de solicitud ha superado los 5 segundos.
image

siempre obtenemos el error Oops
¿Existe alguna restricción sobre una solicitud que supere los 5 segundos, o alguna otra restricción? ¡gracias!

Oops

El software que impulsa este foro de discusión encontró un problema inesperado. Lamentamos las molestias.

Se registró información detallada sobre el error y se generó una notificación automática. Lo revisaremos.

No es necesaria ninguna acción adicional. Sin embargo, si la condición de error persiste, puedes proporcionar detalles adicionales, incluidos los pasos para reproducir el error, publicando un tema de discusión en la categoría de comentarios del sitio.

Parece que estás ejecutando un proxy personalizado frente al sitio que está agotando el tiempo de espera.


usamos un proxy nginx personalizado fuera.

Parece que necesitas modificar la configuración en el proxy nginx personalizado externo después.

a veces podemos acceder a la web de forma normal cuando el tiempo de la solicitud no supera los 5 segundos.

así que toda la configuración debería funcionar correctamente.
pero cuando la solicitud supera los 5 segundos, simplemente obtenemos un “Oops”.
dudo que haya alguna restricción sobre las solicitudes que excedan los 5 segundos.

la configuración personalizada de nginx externa como se muestra a continuación

server {
  listen       9000;
  server_name  localhost;
  root /opt/nginx/portal;
  location ~* ^.+\\.(jpg|jpeg|gif|png|bmp)$ {
    access_log off;
    expires 30d;
    break;
  }
  location / {
    index index.html index.htm;
  }
  
  location ^~/forum {
   add_header 'Access-Control-Allow-Origin' '*';
   add_header 'Access-Control-Allow-Credentials' 'true';
   add_header 'Access-Control-Allow-Headers' '*';
   proxy_pass http://unix:/opt/oca-forum/shared/ocaforum/nginx.http.sock:;
   proxy_redirect  off;
   }
}

el archivo app.yml es el siguiente:

templates:
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/cron.template.yml"
  - "templates/web.china.template.yml" 
  - "templates/web.socketed.template.yml"  

params:
  db_default_text_search_config: "pg_catalog.english"
  db_shared_buffers: "1280MB"

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8
  
  UNICORN_WORKERS: 8

  DISCOURSE_HOSTNAME: '10.201.61.8:9000'
  DOCKER_USE_HOSTNAME: false
  
  DISCOURSE_RELATIVE_URL_ROOT: /forum

  DISCOURSE_DEVELOPER_EMAILS: 'jxwoeuxer@gmail.com'


  DISCOURSE_SMTP_ADDRESS: gmail.smtp.com
  DISCOURSE_SMTP_PORT: 25
  DISCOURSE_SMTP_USER_NAME: jzwoeuxer@gmail.com
  DISCOURSE_SMTP_PASSWORD: "WEweoier2x2w3e"
  DISCOURSE_SMTP_ENABLE_START_TLS: false           # (opcional, valor predeterminado true)
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

  DISCOURSE_NOTIFICATION_EMAIL: jxwoeuxer@gmail.com   # (dirección desde la cual enviar notificaciones)

  DISCOURSE_DB_HOST: 10.201.61.16
  DISCOURSE_DB_PORT: 5432
  DISCOURSE_DB_NAME: theforum
  DISCOURSE_DB_SOCKET: ''
  DISCOURSE_DB_USERNAME: postgres
  DISCOURSE_DB_PASSWORD: theforum16


volumes:
  - volume:
      host: /opt/oca-forum/shared/ocaforum
      guest: /shared
  - volume:
      host: /opt/oca-forum/shared/ocaforum/log/var-log
      guest: /var/log

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com.cnpmjs.org/discourse/docker_manager.git

run:
  - exec: echo "Inicio de los comandos personalizados"
  - exec:
      cd: $home
      cmd:
         - mkdir -p public/forum
         - cd public/forum && ln -s ../uploads && ln -s ../backups
  - replace:
      global: true
      filename: /etc/nginx/conf.d/discourse.conf
      from: proxy_pass http://discourse;
      to: |
         rewrite ^/(.*)$ /forum/$1 break;
         proxy_pass http://discourse;
  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: location ~ ^/(svg-sprite/|letter_avatar/|letter_avatar_proxy/|user_avatar|highlight-js|stylesheets|theme-javascripts|favicon/proxied|service-worker) {
      to: |
        location ~ ^/(svg-sprite/|letter_avatar/|letter_avatar_proxy/|user_avatar|highlight-js|stylesheets|theme-javascripts|favicon/proxied|service-worker) {
        rewrite ^/(svg-sprite|letter_avatar|letter_avatar_proxy|user_avatar|highlight-js|stylesheets|theme-javascripts|favicon/proxied|service-worker)/([^/]+):[0-9]+/(.*) /forum/$1/$2/$3  break; 
  - replace:
      filename: /etc/nginx/conf.d/discourse.conf
      from: etag off;
      to: |
        etag off;
        location /forum {
           rewrite ^/forum/?(.*)$ /$1;
        }
  - replace:
       filename: /etc/nginx/conf.d/discourse.conf
       from: $proxy_add_x_forwarded_for
       to: $http_your_original_ip_header
       global: true
  - exec: echo "Fin de los comandos personalizados"

Intenta eliminar el proxy inverso y permitir que el contenedor se vincule directamente a los puertos 80/443 para ver si el problema persiste.

¡Gracias!
Pero debo usar el nginx externo porque no hay más puertos disponibles para mi Discourse.

He entrado al contenedor de Discourse y ejecutado

curl http://localhost:3000/forum, pero obtengo el mismo error

---
# # # curl http://localhost:3000/forum
<!DOCTYPE html>
<html>
<head>
  <title>Ups - Error 500</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
    <h1>Ups</h1>
    <p>El software que impulsa este foro de discusión encontró un problema inesperado. Lamentamos las molestias.</p>
    <p>Se registró información detallada sobre el error y se generó una notificación automática. Lo revisaremos.</p>
    <p>No es necesario realizar ninguna acción adicional. Sin embargo, si la condición del error persiste, puedes proporcionar detalles adicionales, incluidos los pasos para reproducir el error, publicando un tema de discusión en la categoría de comentarios del sitio.</p>
</body>
</html>

Uso tu Discourse de código abierto. Solo necesito usar un nginx externo y un subcarpeta para la ruta de la URL. @Falco

Tal vez haya alguna razón relacionada con la base de datos.
He notado que la base de datos es muy lenta.
He cambiado db_timeout = 10, y luego obtuvimos un error después de 10 segundos.
Quizás debería hacer que la base de datos sea más rápida.

He solucionado el problema. La configuración de 5 segundos es un valor predeterminado de la base de datos. Hemos cambiado la configuración de la siguiente manera:

DISCOURSE_DB_TIMEOUT: 10000
DISCOURSE_DB_CONNECT_TIMEOUT: 10

Además, hemos notado que la base de datos era muy lenta.
Por ello, hemos utilizado una nueva base de datos en Linux en lugar de la antigua en Windows.

Gracias de todos modos. Discourse es maravilloso.