Ressourcen- und / oder Speicherlecks und Fragmentierung sind in allen Programmiersprachen häufige Probleme. Es spielt keine Rolle, ob es dort einen Garbage Collector gibt oder nicht, eine kompilierte oder eine interpretierte Sprache. Ruby ist keine Ausnahme, und heute werden wir ein wenig über diese Probleme sprechen, Möglichkeiten, sie zu lösen, und sogar unsere eigenen schreiben.
Das Problem kann und tritt auf, wenn ein Prozess lange läuft und viele verschiedene Arbeiten ausführt. Die meisten dieser Probleme hängen mit Fehlern im Code zusammen, wobei der Code seine Geschäftsfunktion weiterhin recht korrekt ausführt. Sie sind nicht immer leicht zu finden und zu reparieren. Aber die Speicherfragmentierung erwartet uns ein wenig von der anderen Seite, und selbst korrekter Code kann allmählich fragmentierten Speicher ansammeln. In der Welt der Rails - Prozesse , die fallen unter die Kategorie der „long-playing“ sind in der Tat, ein Web - Server und verschiedene Management - Hintergrund / anstehenden Aufgaben -  DelayedJob
, Sidekiq
usw. Das ist ĂĽber sie und dann werden wir reden ..
Webserver
“” . /, (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 ? , .  —  , , , .  —  , .
, :
-
-
-
Wie man Speicher unter Linux zählt  - nur für echte Männer
Killer für Einhorn  - er war der erste!
-