خطأ بسبب انتهاء مهلة قاعدة البيانات

تم تجاوز وقت الطلب لصفحة الرئيسية http://10.201.61.8/forum 5 ثوانٍ.
image

نواجه دائمًا خطأ “أوبس”.
هل هناك أي قيود تتعلق بالطلبات التي تتجاوز 5 ثوانٍ، أو أي قيود أخرى؟ شكرًا لكم!

أوبس

واجهت البرمجيات التي تشغل هذا المنتدى مشكلة غير متوقعة. نعتذر عن الإزعاج.

تم تسجيل معلومات مفصلة حول الخطأ، وتم إنشاء إشعار تلقائي. سنقوم بفحصه.

لا حاجة لاتخاذ أي إجراء إضافي. ومع ذلك، إذا استمر وجود حالة الخطأ، يمكنك تقديم تفاصيل إضافية، بما في ذلك خطوات إعادة إنتاج الخطأ، من خلال نشر موضوع نقاش في فئة ملاحظات الموقع.

يبدو أنك تشغل وكيلًا مخصصًا أمام الموقع يتسبب في انتهاء مهلة الاتصال.

نعم، نستخدم وكيل nginx مخصصًا خارجيًا.

يبدو أنك بحاجة إلى تعديل التكوين على وكيل nginx المخصص خارجيًا بعد ذلك

في بعض الأحيان يمكننا الوصول إلى الويب بشكل طبيعي عندما لا يتجاوز وقت الطلب 5 ثوانٍ.

إذن، يجب أن يعمل كل شيء في الإعدادات بشكل صحيح.
لكن عندما يتجاوز الطلب 5 ثوانٍ، نعرض رسالة “عفوًا” فقط.
أعتقد أن هناك بعض القيود المفروضة على الطلبات التي تتجاوز 5 ثوانٍ.

إعداد nginx المخصص خارجي كما هو موضح أدناه

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

ملف app.yml أدناه:

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           # (اختياري، الافتراضي true)
  DISCOURSE_SMTP_AUTHENTICATION: login
  DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none

  DISCOURSE_NOTIFICATION_EMAIL: jxwoeuxer@gmail.com   # (العنوان المرسل منه الإشعارات)

  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 "بداية الأوامر المخصصة"
  - 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 "نهاية الأوامر المخصصة"

جرب إزالة الوكيل العكسي والسماح للحاوية بالارتباط مباشرةً بالمنافذ 80/443، ثم راجع ما إذا كانت المشكلة مستمرة.

شكرًا لك!
لكن يجب أن أستخدم nginx الخارجي لأنه لا توجد منافذ متاحة لـ Discourse الخاص بي.

لقد دخلت حاوية discourse وقمت بتشغيل

curl http://localhost:3000/forum ثم حصلت على نفس الخطأ

---
# # # curl http://localhost:3000/forum
<!DOCTYPE html>
<html>
<head>
  <title>عفوًا - خطأ 500</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
    <h1>عفوًا</h1>
    <p>واجه البرنامج الذي يشغل منتدى النقاش هذا مشكلة غير متوقعة. نعتذر عن الإزعاج.</p>
    <p>تم تسجيل معلومات مفصلة حول الخطأ، وتم إنشاء إشعار تلقائي. سنقوم بمراجعته.</p>
    <p>لا يلزم اتخاذ أي إجراء إضافي. ومع ذلك، إذا استمر شرط الخطأ، يمكنك تقديم تفاصيل إضافية، بما في ذلك خطوات تكرار الخطأ، عن طريق نشر موضوع نقاش في فئة التغذية الراجعة للموقع.</p>
</body>
</html>

أنا أستخدم Discourse المفتوح الخاص بكم
أحتاج فقط إلى استخدام nginx خارجي وتخصيص مجلد فرعي لمسار عنوان URL
@Falco

ربما يكون هناك بعض الأسباب المتعلقة بقاعدة البيانات.
لاحظت أن قاعدة البيانات بطيئة جدًا.
لقد قمت بتغيير db_timeout = 10، ثم حصلنا على خطأ بعد 10 ثوانٍ.
ربما يجب أن أجعل قاعدة البيانات أسرع.

تم حل المشكلة. إعداد 5 ثوانٍ هو إعداد افتراضي لقاعدة البيانات. قمنا بتغيير الإعداد على النحو التالي:

DISCOURSE_DB_TIMEOUT: 10000
DISCOURSE_DB_CONNECT_TIMEOUT: 10

بالإضافة إلى ذلك، لاحظنا أن قاعدة البيانات بطيئة جدًا.
وقد استخدمنا قاعدة بيانات جديدة على نظام Linux بدلاً من القديمة على نظام Windows.

شكرًا لكم على أي حال. إن منصة Discourse رائعة جدًا.