ADVANCE DIGEST № 23 · Ежедневная мобильная аудитория ВКонтакте превысила 20 млн человек ...
Оптимизация одного из топовых приложений для...
-
Upload
fuenteovejuna -
Category
Technology
-
view
1.807 -
download
4
description
Transcript of Оптимизация одного из топовых приложений для...
![Page 2: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/2.jpg)
Задача:оптимизация приложения вконтакте
![Page 3: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/3.jpg)
•30 тыс пользователей
•до 9 секунд на запрос
•5 серверов
•надо опустить время ответа до 500 мс
Вводные
![Page 4: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/4.jpg)
•Более 2-х млн пользователей
•25 мс на запрос
•14 серверов
•40K RPM и 20 млн записей в сутки
Результаты
![Page 5: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/5.jpg)
• Ежедневная смена требований• Экспоненциальный рост нагрузки• Поровну записи и чтения• Сделать быстро, дешево и приемлемо
С чем столкнулись
![Page 6: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/6.jpg)
Что оказалось важным в
нашем случае
![Page 7: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/7.jpg)
Грамотный менеджер«Щасспрошу» завалит проект
Персонал
![Page 8: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/8.jpg)
Системный администратор. Получше, чем «aptitude-джан»
Персонал
![Page 9: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/9.jpg)
Наша команда злых марсиан!http://evilmartians.ru/
Персонал
![Page 10: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/10.jpg)
Волшебных гномиков нет.
![Page 11: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/11.jpg)
Нет их даже в MongoDB и memcached
![Page 12: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/12.jpg)
• pgpool — master-master медленный• memcached — нечего кешировать
Сразу выкинули
![Page 13: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/13.jpg)
• Ruby on Rails — нужна гибкость• PostgreSQL — часто меняется схема• RabbitMQ — задержка записи• внешний инструментарий
Оставили
![Page 14: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/14.jpg)
Что мы делали
![Page 15: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/15.jpg)
• Без него никуда• Догадки не работают• newrelic.com• Фоновые задачи очень важны
Профилирование
![Page 16: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/16.jpg)
• Место на дисках• Упавшие серверы• Длины очередей• Ночной дежурный (?)
Мониторинг
![Page 17: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/17.jpg)
• Нужны реляционные выборки• Часто меняются критерии• PostgreSQL быстр и удобен• Индексы — основной дисковый IO
SQL база
![Page 18: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/18.jpg)
• Много данных рядом — плохо• Нам повезло с логикой выборок• Шардинг: user_id % 100• Надо планировать заранее
Шардинг
![Page 19: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/19.jpg)
• Меньше всего проблем• Zero-downtime deploy с unicorn-ом• Плохая поддержка шардинга• Необходимость RabbitMQ
Ruby on Rails
![Page 20: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/20.jpg)
• Самая быстрая часть проекта• Оказался индикатором состояния• Мучительное восстановление
RabbitMQ
![Page 21: Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails,](https://reader031.fdocuments.in/reader031/viewer/2022020715/54922e13ac795949288b46c1/html5/thumbnails/21.jpg)
• Rails do scale
• Масштабирование — вопрос предметной области
• У вас всё будет по-другому
Выводы