WorkerKiller

Vazamentos de recursos e / ou memória e fragmentação são problemas comuns em todas as linguagens de programação. Não importa se existe ou não um coletor de lixo, uma linguagem compilada ou interpretada. Ruby não é exceção, e hoje falaremos um pouco sobre esses problemas, opções para resolvê-los e até escreveremos os nossos.





O problema pode aparecer e aparece quando temos um processo em execução por muito tempo e fazendo um monte de trabalho diferente. A maioria desses problemas está relacionada a erros no código, por meio dos quais o código continua a executar sua função de negócios de maneira bastante correta. Eles nem sempre são fáceis de encontrar e consertar. Mas a fragmentação da memória nos espera um pouco do outro lado, e mesmo o código correto pode gradualmente acumular memória fragmentada. No mundo dos processos Rails que se enquadram na categoria de "long-playing" são, na verdade, um servidor web e várias tarefas de gerenciamento de fundo / pendentes -  DelayedJob



, Sidekiq



etc. Isso é sobre eles e então vamos conversar.





servidor web

“” . /, (puma, unicorn), Phusion Passenger . “” -, Rails-. , :





, “”  —  .  —   — .  —  Passenger Enterprise .





 

- , DelayedJob



, ActiveJob



( “ ” ).  —   —  . Sidekiq



, DelayedJob



!





- DelayedJob



WorkerKiller



 — !





?

middleware



, , .





CPU, .  —  , , , “" —  Limiter



.





 —  Killer



. unicorn 



—  SIGTERM.  —  , Passenger Master Process . , , “inflight” . , :





passenger-config detach-process <PID>
      
      



, 500 , 100. Passenger  —  -, , .





!





-, , , - DelayedJob



. , , .





!









? WorkerKiller ? , .  —  , , , .  —  , .





Band-Aid em um ferimento a bala
Band-Aid on a bullet wound





, :





  • Giltab Unicorn killer





  • Gitlab Sidekiq killer





  • Killer puma





  • Como contar a memória no Linux  - apenas para homens reais





  • Assassino por unicórnio  - ele foi o primeiro!





  • Como depurar vazamentos de Ruby








All Articles