لدي تثبيت به 3 عمليات نشر لـ Openshift، واحدة لـ Redis (7.0.10)، وواحدة لـ Postgress (13.10)، وأخرى لـ discourse (stable 3.0.3)، كل شيء يعمل بشكل جيد عند النشر، ومع ذلك، بعد بضع ساعات أو أيام، تتوقف عمليات sidekiq (UNICORN_SIDEKIQS=3)، وهناك بعض الأشياء التي لاحظتها، تحت /shared/log/rails، لا يتم إنشاء ملف sidekiq.log، وأعتقد أن هذا هو سبب عدم إعادة تشغيل sidekiq تلقائيًا:
root@discourse-b9f766dcf-52zjq:/var/www/discourse# ls -laF /shared/log/rails/
total 32
drwxr-xr-x. 2 nobody www-data 4096 Jun 9 08:57 ./
drwxr-xr-x. 3 root root 4096 May 30 06:16 ../
-rw-r--r--. 1 nobody www-data 16082 Jun 9 09:28 production.log
-rw-r--r--. 1 nobody www-data 1345 Jun 9 09:02 unicorn.stderr.log
-rw-r--r--. 1 nobody www-data 204 Jun 9 09:02 unicorn.stdout.log
عندما يتوقف sidekiq، أرى الرسالة التالية في host/logs:
Info:
Sidekiq is consuming too much memory (using: 530.35M) for 'discourse.internal.odencluster.com', restarting
backtrace:
config/unicorn.conf.rb:163:in `check_sidekiq_heartbeat'
config/unicorn.conf.rb:243:in `master_sleep'
unicorn-6.1.0/lib/unicorn/http_server.rb:295:in `join'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `load'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `<main>'
ثم يمكنني رؤية الرسالة التالية في سجل pod الخاص بـ discourse:
ومع ذلك، نظرًا لعدم وجود ملف sidekiq.log تحت /shared/log/rails/، فإنه لا يعاد تشغيله.
معرفتي بـ Rails قريبة من الصفر، لذلك أجد صعوبة في استكشاف الأخطاء وإصلاحها، ولكني أرى أن sidekiq ليس متوقفًا مؤقتًا:
[1] pry(main)> Sidekiq.paused?
=> false
وعندما أقوم بتشغيله يدويًا، فإنه يعمل:
2023-06-09T09:47:15.556Z pid=195386 tid=449q INFO: Booting Sidekiq 6.5.8 with Sidekiq::RedisConnection::RedisAdapter options {:host=>"redis", :port=>6379, :namespace=>"sidekiq"}
2023-06-09T09:47:20.528Z pid=195386 tid=449q INFO: Booted Rails 7.0.4.3 application in production environment
2023-06-09T09:47:20.528Z pid=195386 tid=449q INFO: Running in ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
2023-06-09T09:47:20.528Z pid=195386 tid=449q INFO: See LICENSE and the LGPL-3.0 for licensing details.
2023-06-09T09:47:20.528Z pid=195386 tid=449q INFO: Upgrade to Sidekiq Pro for more features and support: https://sidekiq.org
هناك بعض الأشياء التي أتخيل أنها ستساعدني في حل هذه المشكلة:
كيف أجعلها تنشئ ملف /shared/log/rails/sidekiq.log؟
كيف أجعل sidekiq يسمح باستخدام أكثر من 530 ميجابايت من الذاكرة؟
إذا كان لدى أي شخص اقتراح، فيرجى إخباري وأشكركم مقدمًا على وقتكم في دعم هذا!
مرحباً @trobiyo، شكراً جزيلاً على الدعم السريع والمباشر!
نعم، إعادة تشغيل الـ sidekiq لدي بسبب OOM، لكنني الآن اتبعت نصيحتك وقللت UNICORN_SIDEKIQS=1 وخصصت المزيد من الذاكرة لـ RSS باستخدام البيئة UNICORN_SIDEKIQ_MAX_RSS.
آمل أن يساعد ذلك في تجنب إعادة تشغيل الـ sidekiq.
هل لديك أي فكرة عن سبب عدم قيام الـ sidekiq بإنشاء أي سجلات في /shared/log/rails/sidekiq.log؟