Когда гигант дал течь: чему утечка памяти Facebook научила веб-разработку
Как Facebook чуть не угробил мой компьютер
Давайте поговорим о том, о чём мало кто хочет думать: даже гиганты индустрии иногда выпускают откровенно кривой код. Один разработчик описал ситуацию, которая звучит настолько абсурдно, что в неё сложно поверить. Facebook открыл свою главную страницу — и она в режиме простоя съел столько памяти, что сработал earlyoom (аварийный убийца процессов в Linux), а браузер просто крашнулся.
Страница загрузила facebook.com/?_rdr, показала крутящийся логотип — и принялась течь памятью так, что любой джун бы покраснел от стыда. 15,3 гигабайта из 16 доступных — почти все ресурсы системы. Раздел подкачки забит наполовину. Процесс в итоге прибило экстренной защитой, только чтобы компьютер вообще выжил.
Наблюдать за системным монитором во время этой спирали смерти было познавательно. Линия памяти ползла вверх, вверх, вверх — а потом срывалась в пропасть. Вот что происходит, когда операционка решает: что-то должно умереть, чтобы всё остальное выжило.
Это недопустимо ни для кого — а для Facebook и подавно
Вот что делает эту историю особенно примечательной. Это не чей-то weekend-проект и не стартап на последние деньги. Это Facebook. Компания, которая стояла у истоков современной веб-архитектуры, где работают тысячи инженеров, которая обрабатывает миллиарды запросов ежедневно. Утечка гигабайтов памяти на редиректе — это баг, который ловят в первую неделю QA.
Стоит обратить внимание на тайминг. В последние месяцы Meta регулярно попадает в новости: инженеров снимают с текущих проектов и бросают на AI-направления. Обучать модели, размечать данные, создавать тестовые наборы — работа захватывающая, спору нет. Но кто-то ведь раньше занимался рутиной. Инфраструктурные инженеры. Специалисты по оптимизации производительности. Люди, которые следят за тем, чтобы главная страница не пожирала оперативку так, будто завтра не наступит.
Убери этих людей — и вот результат: флагманская главная страница, которая не может даже загрузиться нормально.
Что это значит для разработчиков и бизнеса
Эта история должна заставить всех в индустрии задуматься. Вот какие уроки можно извлечь:
1. Оптимизация производительности — не опция
Запускаешь ты социальную сеть или простой сайт для малого бизнеса — управление ресурсами критически важно. Каждый мегабайт памяти, который твоё приложение отжирает, — это мегабайт, недоступный для других процессов. На масштабе эти неэффективности складываются в катастрофу.
2. Базовая инфраструктура требует постоянных вложений
Красивая работа — фичи, AI-тренды — это заманчиво. Но неблагодарная работа по поддержке, оптимизации и тестированию существующих систем — это то, что держит всё на плаву. Пренебрегай ей — и получишь то, что описано выше.
3. Утечки памяти — тихие убийцы
В отличие от явных ошибок, утечки часто незаметны при разработке. Приложение отлично работает в тестах, а потом постепенно деградирует в продакшене — память consumption растёт с каждым днём. Именно поэтому важны мониторинг, автоматические тесты и корректные лимиты на ресурсы.
Какое это имеет отношение к хостингу?
В NameOcean мы ежедневно видим последствия плохого управления ресурсами. Будь то криво настроенное приложение, которое съедает всю доступную RAM, или ресурсоёмкий сайт, который укладывает shared-сервер — принципы остаются неизменными:
- Мониторь свои приложения. Утилиты вроде
earlyoomсуществуют не просто так — системы нуждаются в защите от runaway-процессов. - Выставляй адекватные лимиты на ресурсы. Контейнеризация и правильная изоляция гарантируют, что одно проблемное приложение не положит всю инфраструктуру.
- Выбирай хостинг с прозрачностью. VPS и dedicated-решения с системным мониторингом позволяют ловить проблемы с памятью до того, как они станут катастрофическими.
Общая картина
В этой истории есть своя поэзия. В погоне за AI компании рискуют забросить базовые технологии, на которых держится современный веб. Каждый доллар, вложенный в обучение больших языковых моделей, — это доллар, не потраченный на то, чтобы сайты загружались быстро, потребляли ресурсы разумно и не убивали браузеры пользователей.
Для стартапов и разработчиков это, как ни странно, возможность. Пока технологические гиганты гоняются за AI-мечтами, разработчики, которые понимают оптимизацию производительности, эффективное управление ресурсами и чистый код — именно они будут создавать надёжные продукты.
Ирония не может не бросаться в глаза: Facebook, компания, которая в 2000-х и 2010-х задавала стандарты веб-производительности, теперь не может удержать свою главную страницу от утечки памяти до состояния kill-browser. Возможно, пора коллективно вернуться к основам — потому что как бы ни развивались технологии, мы по-прежнему ограничены фундаментальными физическими ресурсами железа.
Meta, если вы читаете: верните инженеров на их рабочие места. Кое-кто из нас ещё хочет залогиниться.
Что вы думаете о состоянии веб-производительности на масштабе? Сталкивались ли с похожими проблемами на ресурсоёмких сайтах? Делитесь опытом в комментариях.