1000 запросов в секунду на rails (Макс Лапшин)

21
Rails Scale: 1000 запросов в секунду Макс Лапшин [email protected] http://evilmartians.ru /

Transcript of 1000 запросов в секунду на rails (Макс Лапшин)

Page 1: 1000 запросов в секунду на rails (Макс Лапшин)

R ails S cale: 1000 запросов в секунду

Макс Лапшин[email protected]

http://evilmartians.ru/

Page 2: 1000 запросов в секунду на rails (Макс Лапшин)

:Задача оптимизация приложения

вконтакте оптимизация приложения

вконтакте

Page 3: 1000 запросов в секунду на rails (Макс Лапшин)

• 30 тыс пользователей• 9 до секунд на запрос• 5 серверов• 500 надо опустить время ответа домс

Вводные

Page 4: 1000 запросов в секунду на rails (Макс Лапшин)

• 2- Более х млн пользователей• 25 мс на запрос• 14 серверов• 40K RPM 20 и млн записей в сутки

Результаты

Page 5: 1000 запросов в секунду на rails (Макс Лапшин)

• Ежедневная смена требований• Экспоненциальный рост нагрузки• Поровну записи и чтения• , Сделать быстро дешево иприемлемо

С чем столкнулись

Page 6: 1000 запросов в секунду на rails (Макс Лапшин)

Что оказалось важным в

нашем случае нашем случае нашем случае

Page 7: 1000 запросов в секунду на rails (Макс Лапшин)

Грамотный менеджер« » Щасспрошу завалит проект

Персонал

Page 8: 1000 запросов в секунду на rails (Макс Лапшин)

. Системный администратор, «aptitude- »Получше чем джан

Персонал

Page 9: 1000 запросов в секунду на rails (Макс Лапшин)

!Наша команда злых марсианhttp://evilmartians.ru/

Персонал

Page 10: 1000 запросов в секунду на rails (Макс Лапшин)

Волшебных гномиков.нет

Page 11: 1000 запросов в секунду на rails (Макс Лапшин)

Нет их даже вMongoDB memcachedи

Page 12: 1000 запросов в секунду на rails (Макс Лапшин)

• pgpool — master-master медленный• memcached —  нечего кешировать

Сразу выкинули

Page 13: 1000 запросов в секунду на rails (Макс Лапшин)

• Ruby on Rails — нужна гибкость• PostgreSQL — часто меняется схема• RabbitMQ — задержка записи• внешний инструментарий

Оставили

Page 14: 1000 запросов в секунду на rails (Макс Лапшин)

Что мы делали

Page 15: 1000 запросов в секунду на rails (Макс Лапшин)

• Без него никуда• Догадки не работают• newrelic.com

• Фоновые задачи очень важны

Профилирование

Page 16: 1000 запросов в секунду на rails (Макс Лапшин)

• Место на дисках• Упавшие серверы• Длины очередей• (?)Ночной дежурный

Мониторинг

Page 17: 1000 запросов в секунду на rails (Макс Лапшин)

• Нужны реляционные выборки• Часто меняются критерии• PostgreSQL быстр и удобен•  — IOИндексы основной дисковый

SQL база

Page 18: 1000 запросов в секунду на rails (Макс Лапшин)

•  — Много данных рядом плохо• Нам повезло с логикой выборок• : user_id % 100Шардинг• Надо планировать заранее

Шардинг

Page 19: 1000 запросов в секунду на rails (Макс Лапшин)

• Меньше всего проблем• Zero-downtime deploy unicorn-с ом• Плохая поддержка шардинга• RabbitMQНеобходимость

Ruby on Rails

Page 20: 1000 запросов в секунду на rails (Макс Лапшин)

• Самая быстрая часть проекта• Оказался индикатором состояния• Мучительное восстановление

RabbitMQ

Page 21: 1000 запросов в секунду на rails (Макс Лапшин)

• Rails do scale

•  — Масштабирование вопрос предметной области

• -У вас всё будет по другому

Выводы