Всем привет,
У меня есть установка с тремя развертываниями OpenShift: одно для Redis (7.0.10), одно для PostgreSQL (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>'
Затем в логах пода Discourse я вижу сообщение:
(48) Reopening logs
(48) Reopening logs
(48) Reopening logs
Однако, поскольку в /shared/log/rails/ отсутствует файл sidekiq.log, перезапуск не происходит.
Мои знания о 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 МБ памяти?
Если у кого-то есть предложения, пожалуйста, дайте знать. Заранее благодарю за уделённое время и поддержку!
Хорошего дня! ![]()