TrabajadorKiller

Las pérdidas y la fragmentación de recursos y / o memoria son problemas comunes en todos los lenguajes de programación. No importa si hay un recolector de basura allí o no, un lenguaje compilado o interpretado. Ruby no es una excepción, y hoy hablaremos un poco sobre estos problemas, opciones para solucionarlos, e incluso escribiremos los nuestros.





El problema puede aparecer y aparece cuando tenemos un proceso ejecutándose durante mucho tiempo y realizando una gran cantidad de trabajo diferente. La mayoría de estos problemas están relacionados con errores en el código, por lo que el código continúa realizando su función comercial de manera bastante correcta. No siempre son fáciles de encontrar y reparar. Pero la fragmentación de la memoria nos espera un poco desde el otro lado, e incluso el código correcto puede acumular gradualmente memoria fragmentada. En el mundo de Rails, los procesos que entran en la categoría de "larga duración" son, de hecho, un servidor web y varios antecedentes de gestión / tareas pendientes  DelayedJob



, Sidekiq



etc. Eso es todo y luego hablaremos ...





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 en una herida de bala
Band-Aid on a bullet wound





, :





  • Giltab Unicorn killer





  • Gitlab Sidekiq killer





  • Killer puma





  • CĂłmo contar la memoria en Linux  , solo para hombres reales





  • Asesino de unicornio  : ¡fue el primero!





  • CĂłmo depurar fugas de Ruby








All Articles