`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Александр Москалюк

Как умирал Foursquare

+66
голосов

4 октября сервис Foursquare ушел в довольно длительный даун. На следующий день компания опубликовала пост-мортем касательно проблем, которые испытывал сервис, разрешив заодно заглянуть в инфраструктуру весьма крупного проекта. Foursquare использует MongoDB в качестве базы данных, которая до этого работала всего на двух серверах в амазоновском EC2. В какой-то момент потребление памяти одним из серверов начало расти бешеными темпами, компания приняла решение расширить MongoDB на третий сервер, однако проблемы с памятью на этом не закончились.

СТО компании 10gen, которая производит и продает коммерческую поддержку к MongoDB (сама база доступна бесплатно), сегодня предоставил подробное описание проблемы:

  • Foursquare разбила данные на 200 секторов, и пока масштабирование между двумя серверами происходило по принципу "пятьдесят на пятьдесят"
  • MongoDB все держит в памяти, каждый из серверов Foursquare содержал 66 гигов памяти
  • Чек-ины пользователей – дело случайное, и в какой-то момент их количество на один из серверов серьезно превысило количество чек-инов на другой сервер
  • В какой-то момент MongoDB переросла за 66 ГБ, и начала сохранять данные на жесткий диск, с соответствующим торможением
  • Подключение третьего сервера и последующий передел чек-инов должны были помочь, однако
    • все еще требовалось время на миграцию
    • MongoDB упорно не освобождала память – чек-ины от Foursquare весьма миниатюрны (300 байтов в среднем), одна страница оперативки в конфигурации сервера занимала 4КБ, итого даже если базе данных говорили, что какие-то из чек-инов теперь будут обслуживаться третьим сервером, количество оставшихся чек-инов в секторе на 4 килобайта все равно поддерживало его в рабочем состоянии
  • Сервис пришлось убить для того, чтобы за 4 часа завершить миграцию нужных чек-инов на третий сервер. После этого на старых серверах MongoDB прогнали repairDatabase(), которая дефрагментировала секторы, освободив нужную память
+66
голосов

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT