Badoo Desktop:оптимизация приложения на  миллион юзеров онлайн       Аверин Сергей, Badoo
                   —  это:• Социальная сеть для знакомств с новыми людьми• В Top-200 Alexa c 2007 года• 115 миллионов заре...
                   —  это:• 30 тыс. запросов/с к PHP backends• MySQL, PHP, C/C++, Linux, nginx, PHP-FPM, memcached• Много ...
Badoo  Desktop• Бесплатная Win/Mac программа• Поддерживает ваш онлайн-статус• Уведомления о новых событиях• Дает нам ваше ...
Badoo  Desktop• 1,7 миллиона юзеров в месяц• 680 тыс. постоянных коннектов• 17 тыс. запросов/с к PHP backends
Поиск тех, кто неподалеку
Сценарий работы  Соединяемся с главным фронтендом  Он отправляет нас на нужный фронтенд  Создаем/восстанавливаем сессию  П...
Набор командИз программы:  • Создание/Восстановление сессии  • Авторизация  • Данные о wi-fi сетях, работе скрин-сейвераВ ...
Server-side архитектура
Принципы работыПрограммы:  • Протокол асинхронный  • Не требует ответа на большинство команд  • Как можно более простые пр...
Специфика приложения• Маленький набор и размер команд• Большое количество постоянных соединений• Большой поток команд• Обр...
Из беты в устойчивую систему
ОптимизацииПрофилирование и поиск тормозов• Top и профилирование мало результативны• Можно улучшить, изменив логику работы...
ОптимизацииЖелезно-площадочные оптимизации• 4 сетевые карты• Минимум конкуренции• MemCacheDB -> Redis -> MySQL+HandlerSock...
ОптимизацииБорьба с положительной обратной связью• Сам себе DDOS’ер• Прогрессивные паузы между командами/реконнектами• Рек...
ОптимизацииClient-side кеширование и логика• Программы отслеживают время обновления статуса• Реже обновляют статус при скр...
ОптимизацииУбираем лишнюю нагрузку• Скешировали все, что можно• Ввели rate-limiting обновления данных• Не пишем, если не п...
ОптимизацииПороговые срабатывания• Порог на изменение сетевой среды   – Для медленных изменений принудительно обновляем   ...
ОптимизацииАсинхронность и пост-обработка• Ответ на команду как можно раньше• Все сервисные задачи обрабатываем отдельно• ...
Заключение• Мониторинг и профилирование• Необходимы• Если вы выпилили все медленые места в php-коде, вы  сделали 1/7• Меня...
Спасибо!PINBA, PHP-FPM, патчи к PHP:   http://dev.badoo.com/         Контакты:http://twitter.com/ryba_xek        s@averin....
Upcoming SlideShare
Loading in...5
×

Badoo Desktop: оптимизация приложения на миллион юзеров онлайн

1,035
-1

Published on

Badoo Desktop: оптимизация приложения на миллион юзеров онлайн. Сергей Аверин, Badoo.

Доклад рассказывает о реально примененных способах оптимизации производительности API компании Badoo для собственных десктоп-приложений: как специфика «много постоянных соединений/однотипные запросы/большая нагрузка» повлияла на стратегию оптимизации производительности.

Что было сделано:
• Планирование архитектуры изначально (fault-tolerance, адаптивные апдейты и тайм-ауты, отказ от попыток восстановления после ошибок для единичных команд).
• Переехали с redis на handlersocket.
• Rate-limiting запросов к демонам.
• Синхронизация записей.
• Асинхронность.
• Записи при достижении порога изменения параметров.
• Профилирование кода, анализ потребления CPU, времени ответа.
• Статистика, статистика и еще раз статистика.
• Pconnect.

Доклад будет интересен:
• системным архитекторам,
• server-side разработчикам.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,035
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Badoo Desktop: оптимизация приложения на миллион юзеров онлайн

  1. 1. Badoo Desktop:оптимизация приложения на миллион юзеров онлайн Аверин Сергей, Badoo
  2. 2.                    —  это:• Социальная сеть для знакомств с новыми людьми• В Top-200 Alexa c 2007 года• 115 миллионов зарегистрированных пользователей• 10 миллионов пользователей в день• 1,5 миллиона фотографий загружаются ежедневно
  3. 3.                    —  это:• 30 тыс. запросов/с к PHP backends• MySQL, PHP, C/C++, Linux, nginx, PHP-FPM, memcached• Много своего
  4. 4. Badoo  Desktop• Бесплатная Win/Mac программа• Поддерживает ваш онлайн-статус• Уведомления о новых событиях• Дает нам ваше местоположение• Удобный доступ на сайт
  5. 5. Badoo  Desktop• 1,7 миллиона юзеров в месяц• 680 тыс. постоянных коннектов• 17 тыс. запросов/с к PHP backends
  6. 6. Поиск тех, кто неподалеку
  7. 7. Сценарий работы Соединяемся с главным фронтендом Он отправляет нас на нужный фронтенд Создаем/восстанавливаем сессию Получаем настройки, перевод и меню Показываем уведомления Посылаем данные о wi-fi и скринсейвере
  8. 8. Набор командИз программы: • Создание/Восстановление сессии • Авторизация • Данные о wi-fi сетях, работе скрин-сейвераВ программу: • Ваш id сессии, язык и статус авторизации • Настройки, перевод, меню • Уведомления
  9. 9. Server-side архитектура
  10. 10. Принципы работыПрограммы: • Протокол асинхронный • Не требует ответа на большинство команд • Как можно более простые протокол и логика программServer-side: • При ошибке не пытаемся восстановиться, а прерываем обработку команды • Нам не нужна 100% синхронность данных
  11. 11. Специфика приложения• Маленький набор и размер команд• Большое количество постоянных соединений• Большой поток команд• Обработка одной команды занимает мало времени• Время ответа не так критично, как для веб-страниц• Ошибки на серверной стороне программы сильно не расстраивают
  12. 12. Из беты в устойчивую систему
  13. 13. ОптимизацииПрофилирование и поиск тормозов• Top и профилирование мало результативны• Можно улучшить, изменив логику работы• Real-time профилирование (PINBA)• PINBA: мониторинг приложения, а не железок
  14. 14. ОптимизацииЖелезно-площадочные оптимизации• 4 сетевые карты• Минимум конкуренции• MemCacheDB -> Redis -> MySQL+HandlerSocket• Жесткие тайм-ауты• pconnect
  15. 15. ОптимизацииБорьба с положительной обратной связью• Сам себе DDOS’ер• Прогрессивные паузы между командами/реконнектами• Реконнект на свой сервер
  16. 16. ОптимизацииClient-side кеширование и логика• Программы отслеживают время обновления статуса• Реже обновляют статус при скрин-сейвере• Дружат с медленными соединениями
  17. 17. ОптимизацииУбираем лишнюю нагрузку• Скешировали все, что можно• Ввели rate-limiting обновления данных• Не пишем, если не поменялось
  18. 18. ОптимизацииПороговые срабатывания• Порог на изменение сетевой среды – Для медленных изменений принудительно обновляем раз в 10 минут• Порог на вычисление города по координатам
  19. 19. ОптимизацииАсинхронность и пост-обработка• Ответ на команду как можно раньше• Все сервисные задачи обрабатываем отдельно• Синхронизация запуска сервисных задач
  20. 20. Заключение• Мониторинг и профилирование• Необходимы• Если вы выпилили все медленые места в php-коде, вы сделали 1/7• Меняем логику работы — улучшаем в 10 раз• Предусмотрите все возможные проблемы заранее• We build wheels while existing suck or dont exist
  21. 21. Спасибо!PINBA, PHP-FPM, патчи к PHP: http://dev.badoo.com/ Контакты:http://twitter.com/ryba_xek s@averin.ru http://averin.ru/slides/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×