Зміст дописунатисність на посилання, щоб перейти до потрібного місця
Що таке jemalloc?. jemalloc (скорочено від Jason Evans malloc) — це високопродуктивний аллокатор пам’яті, який замінює стандартний malloc, реалізований у стандартній бібліотеці glibc. Його використовують такі великі проєкти як Redis, Firefox, Facebook та навіть Android.
Його основні переваги:
- Менше фрагментації пам’яті
- Краща мультипотокова продуктивність
- Прозоре логування використання пам’яті (через jemalloc профілювання)
Чому jemalloc важливий для Ruby / Rails?
Ruby використовує malloc для керування пам’яттю, особливо при роботі з об’єктами. В умовах великого навантаження (наприклад, багатопотоковий Puma або Sidekiq) стандартний аллокатор може викликати фрагментацію пам’яті та повільне очищення.
Замінивши malloc на jemalloc, ви можете отримати:
- Менше споживання пам’яті на довготривалих процесах
- Стабільніший RSS (Resident Set Size)
- Потенційно швидший GC (Garbage Collector), бо jemalloc краще керує розміщенням об'єктів
Коли має сенс ввімкнути jemalloc (якщо досі не зробили цього)?
Якщо ви бачите, що ваші Ruby / Rails процеси "роздуваються" у пам’яті після декількох годин чи днів роботи — jemalloc може значно допомогти.
Особливо це помітно на:
- Sidekiq / Resque
- Puma / Unicorn під навантаженням
- Сервісах з довготривалими процесами