Как Facebook Сократил Катастрофические отказы в Своем приложении для iOS

Facebook применял процесс способа исключения, включая миграцию и внутренние инструменты к новым разработкам, для сокращения катастрофических отказов в ее приложении для iOS.Команда инженеров в Facebook всегда настраивает приложения и свои системы для исполнения более гладко и лучшие пользователи иска, в особенности те на мобильных устройствах.С целью этого команды Facebook собираются для сокращения количества катастрофических отказов в приложении для iOS Facebook для повышения его надежности.

«В прошлом большая часть катастрофических отказов было благодаря программируемых неточностей, и они постоянно шли с трассировкой стека, которая обвинила строчок в коде, который вызвал катастрофический отказ и постоянно предлагал подсказку относительно того, какова неприятность имела возможность бы быть», сообщила должность довольно блога разработки Facebook, записанного Али Ансари и Гжегожем Пстрачей, двумя инженерами в Facebook.Согласно должности, Facebook подтверждал понижение его измеренного темпа катастрофического отказа, вместе с тем и увидел из обзоров App Store, что сообщество было все еще расстроено катастрофическим отказом приложения.«Мы вырыли в пользовательские отчеты и начали теоретизировать, что события из памяти (OOMs) имели возможность бы происходить», сообщила должность. «OOMs происходят, когда совокупность испытывает нехватку памяти, и ОС уничтожает приложение для предъявления претензий в отношении памяти.

Это может случиться, есть ли приложение на переднем замысле либо фоне. Мы обращаемся к ним внутренне как FOOMs и БУМ, соответственно – это – легко больше забавы заявить, что приложение пошло БУМ!»

Facebook в итоге решил проблему с комбинацией внутренних инструментов, миграции к последним достижениям науки и техники iOS и некоему дополнительному уму, что помог компании совершенно верно измерить неприятности надёжности и катастрофического отказа во-первых.Для надевания дескриптора, как довольно часто их приложение завершалось благодаря катастрофических отказов OOM Facebook начал вычислять все узнаваемые дороги, через которые приложение могло быть завершено и потом регистрация их, было сообщено в блоге. Вопрос, что изучила команда, был, «Что может вынудить приложение запускать?» Компания придумала шесть причин, по какой причине приложение имело возможность должно быть запустить:* Приложение было обновлено.

* Приложение привело к выходу либо аварийное прекращение работы.* Приложение отказало.* Пользователь очень сильно ударил до выхода силы приложение.

* Устройство перезапустило (что включает обновление ОС).* Приложение исчерпало память (OOM) в фоновом режиме либо передний замысел.

«Методом исключения, ища экземпляры, которые не попадали в другие случаи, мы имели возможность тогда узнать, когда OOM случился», сообщила должность. «Мы также отслеживали то, когда приложение backgrounded и foregrounded так, чтобы мы имели возможность совершенно верно разбить OOMs на БУМ и FOOMs, соответственно».Регистрация продемонстрировала, что был более большой уровень OOMs на устройствах с меньшей памятью, «что ожидался и заверение, поскольку порядок подачи заявки, более возможно, будет выселен на ограниченном запоминающем устройстве», сообщила должность.Первое упрочнение команды сократить количество OOMs было в том, чтобы постараться уменьшить количество потребляемой памяти приложения, заблаговременно высвободив память так скоро, как они имели возможность, когда это больше не было нужно.

Фиксация утечек стала причиной некоему сокращению темпа катастрофического отказа OOM, но не большому сокращению, на которое сохраняла надежду команда. Так, «Потом, мы погрузились в профилировщика памяти в Инструментальное приложение Apple и увидели повторный пример UIWebView, распределяющего громадную память, когда приложение открыло любую веб-страницу.

Мы также нашли, что в отношении памяти довольно часто не предъявляли претензии, даже после того, как пользователь перешел на большом растоянии от страницы, и веб-представление было закрыто».


Блог Хихуса