Facebook подвело основное хранилище данных Михаил Карпов
Facebook подвело основное хранилище данных
Михаил Карпов
ОпубликованоМихаил Карпов
Многие пользователи социальной сети Facebook не могли получить доступ к сайту 23 сентября 2010 года в течение примерно 2,5 часов. Ничего подобного не случалось уже почти четыре года. Не работал как сам сайт, так и кнопки Like («Мне нравится»), соединённые с этой сетью. У сторонних ресурсов также не было доступа к инструментам разработчика Facebook.
Во всём виноват кэш — сервера, данные которых дублируют значения, находящиеся в основном хранилище. Эта информация периодически актуализируется. Иногда случается, что информация в кэше устаревает, но обычно это не представляет собой проблемы, так как сервер кэша просто делает запрос к основному хранилищу и получает актуальные данные. Это срабатывает, когда проблема возникает в самом кэше. Но на этот раз всё получилось иначе.
Вскоре после того, как сайт поднялся, Роберт Джонсон, директор подразделения разработки ПО Facebook, написал в блоге, что же произошло. По его словам, основной причиной, из-за которой сайт был недоступен в течение продолжительного периода заключается именно в том, что система, которая призвана устранять ошибки в кэше и актуализировать данные, «перестаралась» и причинила больше вреда, чем пользы.
23 сентября в основное хранилище данных были внесены изменения, которые были признаны кэшем ошибочными. Таким образом, каждый клиент кэша стал обращаться к базе для того, чтобы получить верные значения, однако опять получал то, что интерпретировалось как ошибка. Таким образом, ситуация повторялась постоянно на всех машинах. Вскоре основные хранилища данных были буквально завалены запросами кэша.
Каждый раз, когда клиент получал ошибку, полученные данные стирались и он вновь делал запрос к базе, получая оттуда очередную информацию, которую вновь интерпретировал как ошибочную и стирал. Но это ещё не всё — даже исправив данные в хранилище, остановить поток запросов оказалось невозможно. Некоторые сервера уже были перегружены и не пропускали запросы кэша, что также истолковывалось клиентами как ошибка, и они продолжали обращаться к машинам основной базы данных.
Именно для того, чтобы снизить плотность запросов, администрации пришлось ограничить доступ к сайту. Как только война кэша с хранилищем данных стихла, пользователи вновь получили доступ к Facebook. По словам Роберта Джонсона, компания работает над модернизацией системы актуализации информации в кэше, чтобы подобное больше не повторялось.
К оглавлению