Когато и Facebook се препъне: Какво ни показа проблемът с паметта за производителността на уеб сайтовете
Денят, в който Facebook почти уби моята машина
Да си поговорим за нещо неудобно: дори най-големите имена в технологиите понякога пускат наистина счупен код. Наскоро един разработчик документира преживяване, което звучи почти твърде абсурдно, за да е вярно — началната страница на Facebook, докато си стои бездействаща, консумира толкова много памет, че предизвика earlyoom (Linux killer-а при изчерпване на паметта) и напълно срина браузъра.
Страницата зареди facebook.com/?_rdr, показва въртящо се лого и после започна да тече като решето. 15.3 GB от 16 GB RAM — почти всички системни ресурси — изчезнаха. Swap дялът на половина пълен. Процесът най-накрая беше прекратен от системните аварийни мерки, само за да оцелее компютърът.
Гледането на системния монитор по време на тази спирала на смъртта беше поучително. Линията на паметта се покачваше, покачваше, покачваше — после падна от скала. Ето какво се случва, когато операционната система реши, че нещо трябва да умре, за да диша всичко останало.
Това не е приемливо за никого — камо ли за Facebook
Ето какво прави тази ситуация забележителна: това не е проект на някой през уикенда или стартъп, който работи с кътчетата на бюджета си. Това е Facebook. Компанията, която пионерира модерната уеб архитектура, която наема хиляди инженери, която обработва милиарди заявки всеки ден. Цикъл за пренасочване, който тече с гигабайти памет, е бъгът, който хващаш през първата си седмица QA.
Стойността на тези доклади си заслужава да се отбележи. През последните месеци Meta нашумя с това, че изтегли инженери от съществуващи екипи и ги пренасочи към AI инициативи. Обучение на модели, етикетиране на данни, създаване на тестови сетове — вълнуваща работа, да. Но някой винаги е бил отговорен за скучните неща. Инфраструктурните инженери. Специалистите по оптимизация на производителността. Хората, които гарантират, че началната страница не изяжда RAM-а ти, сякаш е излязла от мода.
Пренасочи тези хора и това получаваш: начална страница-знаме, която не може дори да се зареди.
Какво означава това за разработчиците и бизнеса
Тази ситуация трябва да накара всички в технологиите да се замислят. Ето няколко урока, които можем да извлечем:
1. Оптимизацията на производителността не е по избор
Независимо дали управляваш технологичен гигант или малък уебсайт за бизнес, управлението на ресурси има значение. Всеки мегабайт памет, който твоето приложение консумира, е мегабайт недостъпен за други процеси. В мащаб тези неефикасности се натрупват драматично.
2. Основната инфраструктура заслужава непрекъснато инвестиране
Гlamурната работа — изграждане на нови функции, преследване на AI тенденции — е изкушаваща. Но несекси работата по поддържане, оптимизиране и тестване на съществуващи системи е това, което поддържа нещата работещи. Пренебрегни я на свой риск.
3. Течовете на памет са тихи убийци
За разлика от очевидните грешки, течовете на памет често остават незабелязани по време на разработка. Приложението работи перфектно при тестване, после постепенно се влошава в production, докато консумацията на памет расте с времето. Затова мониторингът, автоматизираното тестване и правилните лимити на ресурси са толкова важни.
Какво можем да научим за хостинга?
В NameOcean виждаме последствията от лошото управление на ресурси всеки ден. Дали става дума за зле конфигурирано приложение, което консумира целия наличен RAM, или за сайт, натоварен с ресурси, който срива споделен сървър — принципите са последователни:
- Мониторирайте приложенията си. Инструменти като
earlyoomсъществуват, защото системите се нуждаят от защита от процеси на свобода. - Задавайте подходящи лимити на ресурси. Контейнеризацията и правилната изолация гарантират, че едно проблемно приложение не може да свали цялата ти инфраструктура.
- Изберете хостинг, който ти дава видимост. VPS и dedicated решения, предлагащи системен мониторинг, помагат да хванеш проблемите с паметта, преди да станат катастрофални.
По-голямата картина
Има нещо поетично в този инцидент. В бързината да прегърнат AI, компаниите може би пренебрегват фундаменталните технологии, които захранват съвременния уеб. Всеки долар, похарчен за обучение на големи езикови модели, е долар, непохарчен за това уебсайтовете да се зареждат ефективно, да консумират ресурси отговорно и да не сриват машините на потребителите.
За стартъпи и разработчици това всъщност е възможност. Докато технологичните гиганти преследват AI мечти, разработчиците, които разбират оптимизацията на производителността, ефективното управление на ресурси и чистия код, ще бъдат тези, които изграждат надеждни приложения.
Иронията не е загубена за никого: Facebook, компанията, която помогна да се дефинират стандартите за уеб производителност през 2000-те и 2010-те, сега очевидно не може да предотврати теча на памет от началната си страница, докато не убие браузъра. Може би е време за колективно връщане към основите — защото колкото и да напредва технологията, ние все още сме обвързани с фундаменталните ограничения на хардуерните ресурси.
Meta, ако слушате: върнете тези инженери на постовете им. Някои от нас все още трябва да се логват.
Какво мислиш за състоянието на уеб производителността в мащаб? Срещал ли си подобни проблеми с сайтове, натоварени с ресурси? Сподели опита си в коментарите.