Então, estou com um problema com o Sidekiq.
Ele executa as tarefas incrivelmente rápido quando monitorado pela interface web do Sidekiq. Mas ocasionalmente parece ficar sobrecarregado e começa a rodar extremamente lento. Rodando a cerca de 1-5% da sua velocidade normal e não se recupera a menos que eu limpe o Redis, apesar do uso de recursos do servidor estar normal/baixo.
Parece que, assim que a fila atinge um certo tamanho, ela trava e fica drasticamente mais lenta. Fazendo a fila crescer ainda mais. Estou apenas chutando aqui, talvez a fila esteja grande apenas porque ela está ficando lenta por algum outro motivo.
Este gif descreve como isso parece para mim.
Há muitos recursos de servidor disponíveis, o uso de CPU está muito baixo agora - abaixo de 10%. Há muita RAM e SSD disponíveis também. Sobre o servidor, ele tem 16 núcleos de CPU com 32 threads. Tentei rodar entre 8-14 unicorn_sidekiqs. Também tentei 20, mas isso criou muitos erros 5xx.
Consegui acelerar as tarefas lentas exibidas na aba ‘busy’ da interface web do Sidekiq usando
Could sidekiq queue be reason for 500 errors? - #30 by bartv (
adicionando ‘vm.overcommit_memory = 1’ ao arquivo /etc/sysctl.conf e reiniciando) e também reduzindo os unicorn_sidekiqs para 8 (de 12).
Ainda está rodando lento, no entanto. Vi isso no log do Redis ontem (o único outro aviso era sobre não ter o overcommit_memory definido como 1, o que modifiquei acima):
# WARNING: /proc/sys/net/core/somaxconn está definido para o valor mais baixo de 128
^ Alguém já corrigiu esse aviso acima?
De qualquer forma, se alguém tiver ideias sobre qual poderia ser a causa e/ou a solução - por favor, me avise. Agradeceria muito.
Seria ótimo resolver esse problema para que não aconteça novamente, em vez de apenas limpar.
Aqui está uma captura de tela do que estou vendo no painel do Sidekiq:
E algumas capturas de tela das tarefas na aba busy:
Além disso, alguém sabe se é seguro usar essa opção? Excluir a fila de baixa prioridade da interface web do Sidekiq?





