Rails Scale: 1000 запросов в секунду Макс Лапшин max@evilmartians.com http://evilmartians.ru/

Содержание

Слайд 2

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

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

Слайд 3

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

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

Вводные

Слайд 4

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

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

Результаты

Слайд 5

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

С

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

Слайд 6

Что оказалось
важным в
нашем случае

Что оказалось важным в нашем случае

Слайд 7

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

Персонал

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

Слайд 8

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

Персонал

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

Слайд 9

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

Персонал

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

Слайд 10

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

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

Слайд 11

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

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

Слайд 12

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

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

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

Слайд 13

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

Оставили

Ruby on Rails — нужна гибкость PostgreSQL — часто меняется схема RabbitMQ

Слайд 14

Что мы делали

Что мы делали

Слайд 15

Без него никуда
Догадки не работают
newrelic.com
Фоновые задачи очень важны

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

Без него никуда Догадки не работают newrelic.com Фоновые задачи очень важны Профилирование

Слайд 16

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

Мониторинг

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

Слайд 17

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

SQL база

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

Слайд 18

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

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

Шардинг

Слайд 19

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

Ruby on Rails

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

Слайд 20

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

RabbitMQ

Самая быстрая часть проекта Оказался индикатором состояния Мучительное восстановление RabbitMQ
Имя файла: Rails-Scale:-1000-запросов-в-секунду-Макс-Лапшин-max@evilmartians.com-http://evilmartians.ru/.pptx
Количество просмотров: 549
Количество скачиваний: 0