Oops, Fehler wegen database timeout

Die Anfrage für die Startseite http://10.201.61.8/forum
hat mehr als 5 Sekunden gedauert.
image

Wir erhalten ständig den Fehler „Oops“.
Gibt es eine Einschränkung für Anfragen, die länger als 5 Sekunden dauern, oder andere Einschränkungen? Vielen Dank!

Oops

Die Software, die dieses Diskussionsforum betreibt, ist auf ein unerwartetes Problem gestoßen. Wir entschuldigen uns für die Unannehmlichkeiten.

Detaillierte Informationen zum Fehler wurden protokolliert und eine automatische Benachrichtigung ausgelöst. Wir werden uns das ansehen.

Es sind keine weiteren Schritte erforderlich. Sollte der Fehler jedoch weiterhin auftreten, können Sie weitere Details, einschließlich der Schritte zur Reproduktion des Fehlers, bereitstellen, indem Sie ein Diskussionsthema in der Feedback-Kategorie der Website erstellen.

Es klingt so, als würdest du einen benutzerdefinierten Proxy vor der Website betreiben, der die Verbindung abbrechen lässt.

Ja,
außerhalb verwenden wir einen benutzerdefinierten Nginx-Proxy.

Sie müssen die Konfiguration des benutzerdefinierten Nginx-Proxy außerhalb ändern.

Manchmal können wir normal auf das Web zugreifen, wenn die Anfragezeit 5 Sekunden nicht überschreitet.

Also sollte die gesamte Konfiguration funktionieren.
Aber wenn die Anfrage länger als 5 Sekunden dauert, erhalten wir einfach „Oops".
Ich vermute, es gibt eine Einschränkung für Anfragen, die länger als 5 Sekunden dauern.

Die benutzerdefinierte Nginx-Konfiguration befindet sich außerhalb wie unten gezeigt

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;
   }
}

Die app.yml sieht wie folgt aus:

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           # (optional, default true)
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

  DISCOURSE_NOTIFICATION_EMAIL: jxwoeuxer@gmail.com   # (Adresse, von der aus Benachrichtigungen gesendet werden)

  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 "Beginn der benutzerdefinierten Befehle"
  - 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 "Ende der benutzerdefinierten Befehle"

Versuchen Sie, den Reverse-Proxy zu entfernen und den Container direkt an die Ports 80/443 binden zu lassen, und prüfen Sie, ob das Problem weiterhin besteht.

Vielen Dank!
Aber ich muss den externen Nginx verwenden, da für mein Discourse keine weiteren Ports verfügbar sind.

Ich habe den Discourse-Container betreten und ausgeführt

curl http://localhost:3000/forum, und ich erhalte denselben Fehler

---
# # # curl http://localhost:3000/forum
<!DOCTYPE html>
<html>
<head>
  <title>Ups – Fehler 500</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
    <h1>Ups</h1>
    <p>Die Software, die dieses Diskussionsforum betreibt, ist auf ein unerwartetes Problem gestoßen. Wir entschuldigen uns für die Unannehmlichkeiten.</p>
    <p>Detaillierte Informationen zum Fehler wurden protokolliert, und eine automatische Benachrichtigung wurde generiert. Wir werden uns das ansehen.</p>
    <p>Weitere Maßnahmen sind nicht erforderlich. Sollte der Fehler jedoch weiterhin auftreten, können Sie weitere Details bereitstellen, einschließlich der Schritte zur Reproduktion des Fehlers, indem Sie ein Diskussionsthema in der Feedback-Kategorie der Website veröffentlichen.</p>
</body>
</html>

Ich verwende euer offenes Discourse.
Ich muss lediglich einen externen Nginx verwenden und benötige einen Unterordner für den URL-Pfad.
@Falco

Vielleicht gibt es einen Grund bezüglich der Datenbank.
Ich habe festgestellt, dass die Datenbank sehr langsam ist.
Ich habe db_timeout = 10 gesetzt, dann erhalten wir nach 10 Sekunden einen Fehler.
Vielleicht sollte ich die Datenbank schneller machen.

Ich habe das Problem behoben. Die Einstellung von 5 Sekunden ist eine Standard-Datenbankeinstellung. Wir haben die Einstellung wie folgt geändert:

DISCOURSE_DB_TIMEOUT: 10000
DISCOURSE_DB_CONNECT_TIMEOUT: 10

Und noch etwas mehr: Wir haben festgestellt, dass die Datenbank sehr langsam ist. Daher nutzen wir nun eine neue Datenbank unter Linux anstelle der alten unter Windows.

Trotzdem vielen Dank. Discourse ist wirklich großartig.