Hola a todos:
Tengo una instalación con 3 despliegues de Openshift, uno para Redis (7.0.10), uno para Postgress (13.10) y otro para discourse (estable 3.0.3), todo funciona bien cuando se despliega, sin embargo, después de un par de horas o días, los procesos de sidekiq (UNICORN_SIDEKIQS=3) se detienen. Hay algunas cosas que he notado: en /shared/log/rails/, no se está generando sidekiq.log, y creo que esto es la razón por la que sidekiq no se reinicia automáticamente:
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
Cuando sidekiq se detiene, veo el siguiente mensaje en los 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>'
Luego, puedo ver en el log del pod de discourse el mensaje:
(48) Reopening logs
(48) Reopening logs
(48) Reopening logs
Sin embargo, como no hay sidekiq.log en /shared/log/rails/, no se reinicia.
Mi conocimiento de Rails es casi nulo, por lo que me resulta difícil solucionarlo, pero veo que sidekiq no está pausado:
[1] pry(main)> Sidekiq.paused?
=> false
Y cuando lo inicio manualmente, funciona:
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
Hay un par de cosas que imagino que me ayudarían a resolver este problema:
- ¿Cómo hago para que cree
/shared/log/rails/sidekiq.log? - ¿Cómo hago para permitir que sidekiq use más de 530M de memoria?
Si alguien tuviera alguna sugerencia, por favor, hágamelo saber y le agradezco de antemano por tomarse el tiempo de apoyarme.
¡Que tengan un excelente día! ![]()