عند محاولة بدء discourse، لا يمكنني الوصول إليه من متصفحي. وجدت بعض المعلومات في ملفات السجل قد تكون سبب هذه المشكلة. هل يعرف أحد ما هي المشكلة؟
# /var/discourse/standalone/log/rails/unicorn.stderr.log
فشل في الإبلاغ عن الخطأ: خطأ في الاتصال بـ Redis على localhost:6379 (Errno::EADDRNOTAVAIL) 2 خطأ في الاتصال بـ Redis على localhost:6379 (Errno::EADDRNOTAVAIL) فشل الاشتراك، إعادة الاتصال خلال ثانية واحدة. مكدس الاستدعاء ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:362:in `rescue in establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:343:in `establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:106:in `block in connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:306:in `with_reconnect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:105:in `connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:381:in `ensure_connected'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:231:in `block in process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:319:in `logging'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:230:in `process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:139:in `block in call_loop'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:292:in `with_socket_timeout'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/client.rb:138:in `call_loop'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/subscribe.rb:43:in `subscription'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis/subscribe.rb:12:in `subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis.rb:3467:in `_subscription'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis.rb:2300:in `block in subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis.rb:52:in `block in synchronize'", "/usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis.rb:52:in `synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.3/lib/redis.rb:2299:in `subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus/backends/redis.rb:287:in `global_subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus.rb:721:in `global_subscribe_thread'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus.rb:669:in `block in new_subscriber_thread'"]
فشل في الإبلاغ عن الخطأ: خطأ في الاتصال بـ Redis على localhost:6379 (Errno::EADDRNOTAVAIL) 3 استثناء المهمة: خطأ في الاتصال بـ Redis على localhost:6379 (Errno::EADDRNOTAVAIL)
# /shared/standalone/log/var-log/redis/current
40:M 11 Dec 2019 17:46:24.868 # تحذير: لا يمكن تطبيق إعداد TCP backlog بقيمة 511 لأن /proc/sys/net/core/somaxconn مضبوط على القيمة الأقل وهي 128.
40:M 11 Dec 2019 17:46:24.868 # تم تهيئة الخادم
40:M 11 Dec 2019 17:46:24.868 # تحذير: تم تعيين overcommit_memory إلى 0! قد يفشل الحفظ في الخلفية في حالة انخفاض الذاكرة. لحل هذه المشكلة، أضف 'vm.overcommit_memory = 1' إلى /etc/sysctl.conf ثم أعد تشغيل النظام أو شغّل الأمر 'sysctl vm.overcommit_memory=1' لتطبيق التغيير.
40:M 11 Dec 2019 17:46:24.868 # تحذير: لديك دعم Transparent Huge Pages (THP) مفعّل في نواتك. هذا سيسبب مشاكل في زمن الاستجابة واستهلاك الذاكرة مع Redis. لحل هذه المشكلة، شغّل الأمر 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' بصلاحيات root، وأضفه إلى /etc/rc.local للحفاظ على الإعداد بعد إعادة التشغيل. يجب إعادة تشغيل Redis بعد تعطيل THP.
40:M 11 Dec 2019 17:46:24.885 * تم تحميل قاعدة البيانات من القرص خلال 0.017 ثانية
40:M 11 Dec 2019 17:46:24.891 * جاهز لقبول الاتصالات
تم ترقية Docker بنجاح باستخدام apt upgrade docker (لم تكن النسخة الأحدث)، ثم أُعيد تشغيل الخادم عبر reboot، وأُعيد بناء التطبيق باستخدام ./launcher rebuild app (ظهرت بعض تحذيرات Redis أثناء إعادة البناء، لكنها مطابقة تقريبًا لتلك الموجودة في ملف var-log/redis/current)، ومع ذلك لا يزال من المستحيل الوصول إلى موقعي. حاولت الوصول إليه عبر Apache2 كوكيل (ProxyPass) مما أدى إلى ظهور خطأ 503، وعبر عنوان IP ومنفذ HTTP (لقد قمت بتعطيل HTTPS) مما أدى فقط إلى ظهور رسالة “ERR_CONNECTION_REFUSED” من المتصفح.
في هذه المرة، يُظهر ملف unicorn.stderr.log فقط ما يلي:
I, [2019-12-12T11:58:37.378657 #70] INFO -- : Refreshing Gem list
I, [2019-12-12T11:58:56.751681 #70] INFO -- : listening on addr=127.0.0.1:3000 fd=9
I, [2019-12-12T11:59:04.682642 #70] INFO -- : master process ready
I, [2019-12-12T11:59:23.890076 #172] INFO -- : worker=0 ready
I, [2019-12-12T11:59:24.852000 #179] INFO -- : worker=1 ready
ويستمر ملف Redis الحالي في عرض التحذيرات كما كان من قبل.
ولا زلت لم أجد طريقة لإصلاح هذه المشكلة حتى الآن. كما أنني تحدثت مع بعض مشرفي المنتدى الذين يستخدمون Discourse، ولم يبدو أن أيًا منهم واجه هذه المشكلة من قبل.
I am also having this issue.
In: unicorn.stdout.log:
Starting up 1 supervised sidekiqs
Loading Sidekiq in process id 4160
2020-01-25T19:29:16.281Z pid=4160 tid=orb7qpo9c ERROR: Error fetching job: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)
2020-01-25T19:29:16.288Z pid=4160 tid=orb7qpoj0 ERROR: Error fetching job: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)
2020-01-25T19:29:16.287Z pid=4160 tid=orb7rr8k4 ERROR: Error fetching job: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)
2020-01-25T19:29:16.283Z pid=4160 tid=orb7qpop4 ERROR: Error fetching job: Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL)
This is brand new Discourse install, standalone container with unix socket connection to outer nginx. I’m trying to embed Discourse in Ghost site for comments, the errors are correlated with displaying a post with a Discourse embed (and Discourse tries to queue a job to parse the referring page?) I had a similar config working for a year but that one blew up trying to upgrade, so I’m reconfiguring from (faulty) memory. Plenty of room for user error here …
redis itself seems happy (from standalone/log/var-log/redis/current) current.txt (37.0 KB)
and seems to be handling some connections on the expected port :6379. And some of the connections are from unicorn-worker, FWIW.
أواجه نفس الخطأ في تثبيت جديد لـ Discourse عبر Docker. كان يعمل بشكل جيد، ثم قمت بإيقافه لإعداد PostgreSQL 12 وتمكين صفحة خطأ ثابتة للصيانة. الآن، لا يمكنني تشغيل Discourse مرة أخرى.
يبدو أن هناك مشكلة في اتصال Rails بـ Redis. من ملف production.log:
Error connecting to Redis on localhost:6379 (Errno::EADDRNOTAVAIL) subscribe failed, reconnecting in 1 second. Call stack ["/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:363:in `rescue in establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:344:in `establish_connection'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:106:in `block in connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:307:in `with_reconnect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:105:in `connect'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:382:in `ensure_connected'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:231:in `block in process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:320:in `logging'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:230:in `process'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis/client.rb:125:in `call'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:915:in `block in get'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `block in synchronize'", "/usr/local/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:51:in `synchronize'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/redis-4.1.4/lib/redis.rb:914:in `get'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:360:in `process_global_backlog'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:271:in `block in global_subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus/backends/redis.rb:284:in `global_subscribe'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:741:in `global_subscribe_thread'", "/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-3.2.0/lib/message_bus.rb:689:in `block in new_subscriber_thread'"]
Creating scope :open. Overwriting existing method Poll.open.
Creating scope :open. Overwriting existing method Poll.open.
Creating scope :open. Overwriting existing method Poll.open.
ملف production_errors.log فارغ. يبدو أن Redis يبدأ بشكل طبيعي. تجدر الإشارة إلى أن سجل النظام (syslog) يحتوي على هذه الأسطر:
May 17 13:35:30 wobbly-wiki-forum-app rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
May 17 13:35:30 wobbly-wiki-forum-app rsyslogd: activation of module imklog failed [v8.1901.0 try https://www.rsyslog.com/e/2145 ]
May 17 13:35:30 wobbly-wiki-forum-app rsyslogd: [origin software="rsyslogd" swVersion="8.1901.0" x-pid="51" x-info="https://www.rsyslog.com"] start
أتساءل عما إذا كانت تشير إلى مشكلة؟ على أي حال، هناك ذاكرة ومساحة قرص كافية على الخادم.
تحرير: تم الحل الآن! كنت أستخدم وكيل عكسي nginx، لكنني لم أتبع التعليمات حرفيًا. لقد نسيت إضافة القالب "templates/web.socketed.template.yml"، وقمت أيضًا بإلغاء تفعيل قسم expose: بالكامل في ملف app.yml. الآن يعمل.
هل توصل أي شخص آخر إلى حل لهذا؟ أواجه هذه المشكلة في تثبيت Docker أساسي على Ubuntu Server 20.04. أنا لا أقوم بتشغيل أي شيء من خلال وكيل عكسي Nginx. لقد استخدمت للتو البرنامج النصي الافتراضي لتثبيت Docker.