SlideShare a Scribd company logo
1 of 21
Download to read offline
Полмиллиона  юзеров  в  онлайне  
без  падений:  оптимизация  
высоконагруженного  server-­‐side  
API  десктопного  приложения




Аверин  Сергей
Badoo
                         —  это:
• Социальная  сеть  для  знакомств  с  новыми  людьми
• В  Top-­‐200  Alexa  c  2007  года
• 115  миллионов  зарегистрированных  пользователей
• 10  миллионов  пользователей  в  день
• 1,5  миллиона  фотографий  загружаются  ежедневно
                         —  это:
• 30  тыс.  запросов/с  к  PHP  backends
• MySQL,  PHP,  C/C++,  Linux,  nginx,  PHP-­‐FPM,  memcached
• Много  своего
Badoo  Desktop
• Бесплатная  Win/Mac  программа
• Поддерживает  ваш  онлайн-­‐статус  на  сайте  
• Уведомления  о  новых  событиях
• Дает  нам  местоположение  пользователя
• Удобный  доступ  к  разделам  badoo.com
Badoo  Desktop
• 1,7  миллиона  пользователей  в  месяц  
• 680  тыс.  подключенных  программ  в  пике
• 17  тыс.  запросов/с  к  PHP  backends
Поиск  тех,  кто  неподалеку
Сценарий  работы
    1. Соединяемся  с  главным  фронтендом
    2. Он  отправляет  нас  на  нужный  фронтенд
    3. Создаем/восстанавливаем  сессию
    4. Получаем  настройки,  перевод  и  меню
    5. Показываем  уведомления
    6. Посылаем  данные  о  wi-­‐fi  и  скрин-­‐сейвере
Набор  команд
Из  программы:
   • Создание/Восстановление  сессии
   • Авторизация
   • Данные  о  wi-­‐fi  сетях,  работе  скрин-­‐сейвера
В  программу:
   • Ваш  id  сессии,  язык  и  статус  авторизации
   • Настройки,  перевод,  меню
   • Уведомления
Server-­‐side  архитектура
Принципы  работы
Программы:
   • Протокол  асинхронный
   • Не  требует  ответа  на  большинство  команд
   • Как  можно  более  простые  протокол  и  логика  программ
Server-­‐side:
   • При  ошибке  не  пытаемся  восстановиться,  а  прерываем  обработку  
     команды
   • Нам  не  нужна  100%  синхронность  данных
Специфика  приложения
• Маленький  набор  и  размер  команд
• Большое  количество  постоянных  соединений
• Большой  поток  команд
• Обработка  одной  команды  занимает  мало  времени
• Время  ответа  сервера  не  так  критично,  как  для  веб-­‐страниц
• Ошибки  на  серверной  стороне  программы  сильно  не  расстраивают
Из  беты  в  устойчивую  систему
Оптимизации
Профилирование  и  поиск  тормозов
• top  и  профилирование  мало  результативны
• Можно  улучшить,  изменив  логику  работы
• Real-­‐•me  профилирование  (PINBA)
• PINBA:  мониторинг  приложения,  а  не  железок
Оптимизации
Железно-­‐площадочные  оптимизации
• 4  сетевые  карты
• Минимум  конкуренции
• MemCacheDB  -­‐>  Redis  -­‐>  MySQL+HandlerSocket
• Жесткие  тайм-­‐ауты
• pconnect
Оптимизации
Борьба  с  положительной  обратной  связью
• Сам  себе  DDOS’ер
• Прогрессивные  паузы  между  командами/реконнектами
• Реконнект  на  свой  сервер
Оптимизации
Client-­‐side  кеширование  и  логика
• Программы  отслеживают  время  обновления  статуса
• Реже  обновляют  статус  при  скрин-­‐сейвере
• Дружат  с  медленными  соединениями
Оптимизации
  Убираем  лишнюю  нагрузку
• Скешировали  все,  что  можно
• Ввели  rate-­‐limi•ng  обновления  данных
• Не  пишем,  если  не  поменялось
Оптимизации
Пороговые  срабатывания
• Порог  на  изменение  сетевой  среды
   -­‐ Для  медленных  изменений  принудительно  обновляем  раз  в  10  минут
• Порог  на  вычисление  города  по  координатам
Оптимизации
Асинхронность  и  пост-­‐обработка
• Ответ  на  команду  как  можно  раньше
• Все  сервисные  задачи  обрабатываем  отдельно
• Синхронизация  запуска  сервисных  задач
Заключение
• Мониторинг  и  профилирование
   -­‐ Необходимы
   -­‐ Если  вы  выпилили  все  медленые  места  в  php-­‐коде,  вы  сделали  1/7
   -­‐ Меняем  логику  работы  —  улучшаем  производительность  в  10  раз
• Предусмотрите  все  возможные  проблемы  заранее  
• We  build  wheels  while  exis•ng  suck  or  don't  exist
Спасибо!
PINBA, PHP-FPM, патчи к PHP:
   h•p://dev.badoo.com/


         Контакты:
 h•p://twi•er.com/ryba_xek
        s@averin.ru
   h•p://averin.ru/slides/

More Related Content

What's hot

Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Ontico
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Andrew Minkin
 
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...Ontico
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Anton Baranov
 
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...Ontico
 
Система управления конфигурациями Ansible
Система управления конфигурациями AnsibleСистема управления конфигурациями Ansible
Система управления конфигурациями AnsibleITCrowd Almaty
 
Mafiozi Performance1
Mafiozi Performance1Mafiozi Performance1
Mafiozi Performance1barcamplv09
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Ontico
 
Компонентная архитектура игровой механики MMORPG.
Компонентная архитектура игровой механики MMORPG.Компонентная архитектура игровой механики MMORPG.
Компонентная архитектура игровой механики MMORPG.Андрей Бростовский
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Николай Лавлинский
 
сергей спиридонов
сергей спиридоновсергей спиридонов
сергей спиридоновkuchinskaya
 
Server-side JavaScript
Server-side JavaScriptServer-side JavaScript
Server-side JavaScriptMedia Gorod
 
Макс Волошин: Php + shell = ♥
Макс Волошин: Php + shell = ♥Макс Волошин: Php + shell = ♥
Макс Волошин: Php + shell = ♥Oleg Poludnenko
 
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)Ontico
 
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...CodeFest
 
Rsnx tsvetkov che btrix conf 2015
Rsnx tsvetkov che btrix conf 2015Rsnx tsvetkov che btrix conf 2015
Rsnx tsvetkov che btrix conf 2015Yulia Karpova
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Ontico
 
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)Ontico
 

What's hot (19)

Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
 
Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...Организация надежного резервного копирования веб-проекта. Практика и подводны...
Организация надежного резервного копирования веб-проекта. Практика и подводны...
 
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
«Рамблер Касса» как пример высокопроизводительного проекта на .Net (Дмитрий П...
 
Система управления конфигурациями Ansible
Система управления конфигурациями AnsibleСистема управления конфигурациями Ansible
Система управления конфигурациями Ansible
 
Зачем ускорять сайты
Зачем ускорять сайтыЗачем ускорять сайты
Зачем ускорять сайты
 
Mafiozi Performance1
Mafiozi Performance1Mafiozi Performance1
Mafiozi Performance1
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
 
Компонентная архитектура игровой механики MMORPG.
Компонентная архитектура игровой механики MMORPG.Компонентная архитектура игровой механики MMORPG.
Компонентная архитектура игровой механики MMORPG.
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 
сергей спиридонов
сергей спиридоновсергей спиридонов
сергей спиридонов
 
Server-side JavaScript
Server-side JavaScriptServer-side JavaScript
Server-side JavaScript
 
Макс Волошин: Php + shell = ♥
Макс Волошин: Php + shell = ♥Макс Волошин: Php + shell = ♥
Макс Волошин: Php + shell = ♥
 
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
 
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
CodeFest 2010. Игумнов Е. — Особенности архитектуры веб-сервисов LAMP для выс...
 
Rsnx tsvetkov che btrix conf 2015
Rsnx tsvetkov che btrix conf 2015Rsnx tsvetkov che btrix conf 2015
Rsnx tsvetkov che btrix conf 2015
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
 
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)
Путь мониторинга: модульность, гибкость, devops / Всеволод Поляков (Grammarly)
 

Viewers also liked

Workshop Marketing Pessoal
Workshop Marketing PessoalWorkshop Marketing Pessoal
Workshop Marketing PessoalAntonieta Gomes
 
Pdf output
Pdf outputPdf output
Pdf outputtaalsza
 
Alitosi: Studi Dentistici Vital Dent Monza
Alitosi: Studi Dentistici Vital Dent Monza Alitosi: Studi Dentistici Vital Dent Monza
Alitosi: Studi Dentistici Vital Dent Monza VitaldentItalia
 
La Clinica Vitaldent di Monza e le malattie parodontali
La Clinica Vitaldent di Monza e le malattie parodontaliLa Clinica Vitaldent di Monza e le malattie parodontali
La Clinica Vitaldent di Monza e le malattie parodontaliVitaldentItalia
 
20071104 verification konev_lecture14
20071104 verification konev_lecture1420071104 verification konev_lecture14
20071104 verification konev_lecture14Computer Science Club
 
Proyecto aula con tic carmen edilia alarcon 123
Proyecto aula con tic carmen edilia alarcon 123Proyecto aula con tic carmen edilia alarcon 123
Proyecto aula con tic carmen edilia alarcon 123SEBASGEL
 
Margarita
 Margarita Margarita
MargaritaSEBASGEL
 
20080224 cryptography hirsch_lecture02
20080224 cryptography hirsch_lecture0220080224 cryptography hirsch_lecture02
20080224 cryptography hirsch_lecture02Computer Science Club
 
Jaswanth-KrishnaTeja-Exp
Jaswanth-KrishnaTeja-ExpJaswanth-KrishnaTeja-Exp
Jaswanth-KrishnaTeja-Expajaswanth01
 
Berni trabajo en diapocitiva.
Berni trabajo en diapocitiva.Berni trabajo en diapocitiva.
Berni trabajo en diapocitiva.tgmendesm
 
Roxtec Cable Transit Seals - Roxtec CF24 Cable Transit Frame
Roxtec Cable Transit Seals - Roxtec CF24 Cable Transit FrameRoxtec Cable Transit Seals - Roxtec CF24 Cable Transit Frame
Roxtec Cable Transit Seals - Roxtec CF24 Cable Transit FrameThorne & Derrick International
 

Viewers also liked (20)

Workshop Marketing Pessoal
Workshop Marketing PessoalWorkshop Marketing Pessoal
Workshop Marketing Pessoal
 
Акчурина Динара
Акчурина ДинараАкчурина Динара
Акчурина Динара
 
Pdf output
Pdf outputPdf output
Pdf output
 
Feliz navidad
Feliz navidadFeliz navidad
Feliz navidad
 
Light blue
Light blueLight blue
Light blue
 
Alitosi: Studi Dentistici Vital Dent Monza
Alitosi: Studi Dentistici Vital Dent Monza Alitosi: Studi Dentistici Vital Dent Monza
Alitosi: Studi Dentistici Vital Dent Monza
 
Романова и Кольцова
Романова и КольцоваРоманова и Кольцова
Романова и Кольцова
 
La Clinica Vitaldent di Monza e le malattie parodontali
La Clinica Vitaldent di Monza e le malattie parodontaliLa Clinica Vitaldent di Monza e le malattie parodontali
La Clinica Vitaldent di Monza e le malattie parodontali
 
Отчет ФГБОУ ВПО
Отчет ФГБОУ ВПО Отчет ФГБОУ ВПО
Отчет ФГБОУ ВПО
 
20071104 verification konev_lecture14
20071104 verification konev_lecture1420071104 verification konev_lecture14
20071104 verification konev_lecture14
 
Proyecto aula con tic carmen edilia alarcon 123
Proyecto aula con tic carmen edilia alarcon 123Proyecto aula con tic carmen edilia alarcon 123
Proyecto aula con tic carmen edilia alarcon 123
 
Margarita
 Margarita Margarita
Margarita
 
20080224 cryptography hirsch_lecture02
20080224 cryptography hirsch_lecture0220080224 cryptography hirsch_lecture02
20080224 cryptography hirsch_lecture02
 
Круговорот воды в природе
Круговорот воды в природеКруговорот воды в природе
Круговорот воды в природе
 
Jaswanth-KrishnaTeja-Exp
Jaswanth-KrishnaTeja-ExpJaswanth-KrishnaTeja-Exp
Jaswanth-KrishnaTeja-Exp
 
CDU Zoom lame a nastro e refrigerazione
CDU Zoom lame a nastro e refrigerazioneCDU Zoom lame a nastro e refrigerazione
CDU Zoom lame a nastro e refrigerazione
 
Berni trabajo en diapocitiva.
Berni trabajo en diapocitiva.Berni trabajo en diapocitiva.
Berni trabajo en diapocitiva.
 
Facial changes during_ageing
Facial changes during_ageingFacial changes during_ageing
Facial changes during_ageing
 
Roxtec Cable Transit Seals - Roxtec CF24 Cable Transit Frame
Roxtec Cable Transit Seals - Roxtec CF24 Cable Transit FrameRoxtec Cable Transit Seals - Roxtec CF24 Cable Transit Frame
Roxtec Cable Transit Seals - Roxtec CF24 Cable Transit Frame
 
LISTA promozione 2012
LISTA promozione 2012LISTA promozione 2012
LISTA promozione 2012
 

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

Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Igor Miniailo
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Anton Baranov
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Ontico
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Ontico
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтендViacheslav Slinko
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, SkypeOntico
 
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Ontico
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоАлександр Ежов
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...Ontico
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Mad Devs
 
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный вебHappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный вебHappyDev-lite
 
Bykov monitoring mailru
Bykov monitoring mailruBykov monitoring mailru
Bykov monitoring mailrurit2010
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииNikolay Sivko
 
Марат Мавлютов - Современный веб как сложная система
Марат Мавлютов - Современный веб как сложная системаМарат Мавлютов - Современный веб как сложная система
Марат Мавлютов - Современный веб как сложная системаYandex
 
Клиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновКлиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновOntico
 

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

Sivko
SivkoSivko
Sivko
 
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
Мониторинг веб приложений на PHP в режиме реального времени с помощью Pinba. ...
 
Errors Tracker
Errors TrackerErrors Tracker
Errors Tracker
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтенд
 
Павел Брылов, Skype
Павел Брылов, SkypeПавел Брылов, Skype
Павел Брылов, Skype
 
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это просто
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный вебHappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
 
Bykov monitoring mailru
Bykov monitoring mailruBykov monitoring mailru
Bykov monitoring mailru
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 
Марат Мавлютов - Современный веб как сложная система
Марат Мавлютов - Современный веб как сложная системаМарат Мавлютов - Современный веб как сложная система
Марат Мавлютов - Современный веб как сложная система
 
Клиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей СмирновКлиентские приложения под нагрузкой, Андрей Смирнов
Клиентские приложения под нагрузкой, Андрей Смирнов
 

More from rit2011

классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2rit2011
 
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2rit2011
 
как объяснить заказчику, что он не прав. денис тучин. зал 3
как объяснить заказчику, что он не прав. денис тучин. зал 3как объяснить заказчику, что он не прав. денис тучин. зал 3
как объяснить заказчику, что он не прав. денис тучин. зал 3rit2011
 
классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2rit2011
 
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1rit2011
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....rit2011
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....rit2011
 
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4rit2011
 
I pv6 малоизвестные подробности. андрей пантюхин. зал 2
I pv6   малоизвестные подробности. андрей пантюхин. зал 2I pv6   малоизвестные подробности. андрей пантюхин. зал 2
I pv6 малоизвестные подробности. андрей пантюхин. зал 2rit2011
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4rit2011
 
как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4rit2011
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...rit2011
 
выращиваем интерфейс своими руками. ольга павлова. зал 3
выращиваем интерфейс своими руками. ольга павлова. зал 3выращиваем интерфейс своими руками. ольга павлова. зал 3
выращиваем интерфейс своими руками. ольга павлова. зал 3rit2011
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2rit2011
 
от Flash к html5. александр бацуев. зал 4
от Flash к html5. александр бацуев. зал 4от Flash к html5. александр бацуев. зал 4
от Flash к html5. александр бацуев. зал 4rit2011
 
Ie9 и ie10. алекс могилевский. зал 2
Ie9 и ie10. алекс могилевский. зал 2Ie9 и ie10. алекс могилевский. зал 2
Ie9 и ie10. алекс могилевский. зал 2rit2011
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...rit2011
 
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...rit2011
 
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2rit2011
 
круглый стол по найму. александр зиза. зал 2
круглый стол по найму. александр зиза. зал 2круглый стол по найму. александр зиза. зал 2
круглый стол по найму. александр зиза. зал 2rit2011
 

More from rit2011 (20)

классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2
 
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
Chef. кто на кухне хозяин. концепция devops. а,титов. зал 2
 
как объяснить заказчику, что он не прав. денис тучин. зал 3
как объяснить заказчику, что он не прав. денис тучин. зал 3как объяснить заказчику, что он не прав. денис тучин. зал 3
как объяснить заказчику, что он не прав. денис тучин. зал 3
 
классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2классификация Ddos. александр лямин, артем гавриченков. зал 2
классификация Ddos. александр лямин, артем гавриченков. зал 2
 
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
Kpi разработчика vs kpi разработки. евгения фирсова. зал 1
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
 
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
ускорение Front end разработки с помощью haml, sass и compass. андрей ситник....
 
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
 
I pv6 малоизвестные подробности. андрей пантюхин. зал 2
I pv6   малоизвестные подробности. андрей пантюхин. зал 2I pv6   малоизвестные подробности. андрей пантюхин. зал 2
I pv6 малоизвестные подробности. андрей пантюхин. зал 2
 
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4безопасность веб приложений сегодня. дмитрий евтеев. зал 4
безопасность веб приложений сегодня. дмитрий евтеев. зал 4
 
как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
 
выращиваем интерфейс своими руками. ольга павлова. зал 3
выращиваем интерфейс своими руками. ольга павлова. зал 3выращиваем интерфейс своими руками. ольга павлова. зал 3
выращиваем интерфейс своими руками. ольга павлова. зал 3
 
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
распределенное файловое хранилище (Nginx, zfs, perl). перепелица мамонтов. зал 2
 
от Flash к html5. александр бацуев. зал 4
от Flash к html5. александр бацуев. зал 4от Flash к html5. александр бацуев. зал 4
от Flash к html5. александр бацуев. зал 4
 
Ie9 и ie10. алекс могилевский. зал 2
Ie9 и ie10. алекс могилевский. зал 2Ie9 и ie10. алекс могилевский. зал 2
Ie9 и ie10. алекс могилевский. зал 2
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
 
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
рисуем тз. эффективный способ коммуникации в веб проектах. артем вольфтруб. з...
 
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
типология личности и прогноз отношений по а. афанасьеву. сергей котырев. зал 2
 
круглый стол по найму. александр зиза. зал 2
круглый стол по найму. александр зиза. зал 2круглый стол по найму. александр зиза. зал 2
круглый стол по найму. александр зиза. зал 2
 

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

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