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

полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server side api десктопного приложения. с.аверин. зал 1

822

Published on

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

No Downloads
Views
Total Views
822
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
15
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "полмиллиона юзеров в онлайне без падений оптимизация высоконагруженной Server side api десктопного приложения. с.аверин. зал 1"

  1. 1. Полмиллиона  юзеров  в  онлайне  без  падений:  оптимизация  высоконагруженного  server-­‐side  API  десктопного  приложенияАверин  Сергей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  программа• Поддерживает  ваш  онлайн-­‐статус  на  сайте  • Уведомления  о  новых  событиях• Дает  нам  местоположение  пользователя• Удобный  доступ  к  разделам  badoo.com
  5. 5. Badoo  Desktop• 1,7  миллиона  пользователей  в  месяц  • 680  тыс.  подключенных  программ  в  пике• 17  тыс.  запросов/с  к  PHP  backends
  6. 6. Поиск  тех,  кто  неподалеку
  7. 7. Сценарий  работы 1. Соединяемся  с  главным  фронтендом 2. Он  отправляет  нас  на  нужный  фронтенд 3. Создаем/восстанавливаем  сессию 4. Получаем  настройки,  перевод  и  меню 5. Показываем  уведомления 6. Посылаем  данные  о  wi-­‐fi  и  скрин-­‐сейвере
  8. 8. Набор  командИз  программы: • Создание/Восстановление  сессии • Авторизация • Данные  о  wi-­‐fi  сетях,  работе  скрин-­‐сейвераВ  программу: • Ваш  id  сессии,  язык  и  статус  авторизации • Настройки,  перевод,  меню • Уведомления
  9. 9. Server-­‐side  архитектура
  10. 10. Принципы  работыПрограммы: • Протокол  асинхронный • Не  требует  ответа  на  большинство  команд • Как  можно  более  простые  протокол  и  логика  программServer-­‐side: • При  ошибке  не  пытаемся  восстановиться,  а  прерываем  обработку   команды • Нам  не  нужна  100%  синхронность  данных
  11. 11. Специфика  приложения• Маленький  набор  и  размер  команд• Большое  количество  постоянных  соединений• Большой  поток  команд• Обработка  одной  команды  занимает  мало  времени• Время  ответа  сервера  не  так  критично,  как  для  веб-­‐страниц• Ошибки  на  серверной  стороне  программы  сильно  не  расстраивают
  12. 12. Из  беты  в  устойчивую  систему
  13. 13. ОптимизацииПрофилирование  и  поиск  тормозов• top  и  профилирование  мало  результативны• Можно  улучшить,  изменив  логику  работы• Real-­‐•me  профилирование  (PINBA)• PINBA:  мониторинг  приложения,  а  не  железок
  14. 14. ОптимизацииЖелезно-­‐площадочные  оптимизации• 4  сетевые  карты• Минимум  конкуренции• MemCacheDB  -­‐>  Redis  -­‐>  MySQL+HandlerSocket• Жесткие  тайм-­‐ауты• pconnect
  15. 15. ОптимизацииБорьба  с  положительной  обратной  связью• Сам  себе  DDOS’ер• Прогрессивные  паузы  между  командами/реконнектами• Реконнект  на  свой  сервер
  16. 16. ОптимизацииClient-­‐side  кеширование  и  логика• Программы  отслеживают  время  обновления  статуса• Реже  обновляют  статус  при  скрин-­‐сейвере• Дружат  с  медленными  соединениями
  17. 17. Оптимизации  Убираем  лишнюю  нагрузку• Скешировали  все,  что  можно• Ввели  rate-­‐limi•ng  обновления  данных• Не  пишем,  если  не  поменялось
  18. 18. ОптимизацииПороговые  срабатывания• Порог  на  изменение  сетевой  среды -­‐ Для  медленных  изменений  принудительно  обновляем  раз  в  10  минут• Порог  на  вычисление  города  по  координатам
  19. 19. ОптимизацииАсинхронность  и  пост-­‐обработка• Ответ  на  команду  как  можно  раньше• Все  сервисные  задачи  обрабатываем  отдельно• Синхронизация  запуска  сервисных  задач
  20. 20. Заключение• Мониторинг  и  профилирование -­‐ Необходимы -­‐ Если  вы  выпилили  все  медленые  места  в  php-­‐коде,  вы  сделали  1/7 -­‐ Меняем  логику  работы  —  улучшаем  производительность  в  10  раз• Предусмотрите  все  возможные  проблемы  заранее  • We  build  wheels  while  exis•ng  suck  or  dont  exist
  21. 21. Спасибо!PINBA, PHP-FPM, патчи к PHP: h•p://dev.badoo.com/ Контакты: h•p://twi•er.com/ryba_xek s@averin.ru h•p://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.

×