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-. , :
https://about.gitlab.com/blog/2015/06/05/how-gitlab-uses-unicorn-and-unicorn-worker-killer/
https://github.com/schneems/puma_worker_killer
https://docs.gitlab.com/ee/administration/operations/sidekiq_memory_killer.html
, “”  —  .  —   — .  —  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 ? , .  —  , , , .  —  , .
, :
-
-
-
Cómo contar la memoria en Linux  , solo para hombres reales
Asesino de unicornio  : ¡fue el primero!
-