RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин
-
Upload
roman-v-babenko -
Category
Documents
-
view
150 -
download
0
Transcript of RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин
![Page 1: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/1.jpg)
Ruby on Rails:1000 запросов в секунду
Макс Лапшин[email protected]://evilmartians.ru/
1Субота, 19 березня 2011 р.
![Page 2: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/2.jpg)
Задача:оптимизация приложения для
вконтакта
2Субота, 19 березня 2011 р.
![Page 3: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/3.jpg)
Вводные
• 30 тыс пользователей
• до 9 секунд на запрос
• 5 серверов
• надо опустить время ответа до 500 мс
3Субота, 19 березня 2011 р.
![Page 4: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/4.jpg)
Результаты
• Более 2-х млн пользователей
• Более 40K RPM (requests per minute)
• Более 20 млн комментариев в сутки
• 14 серверов
• 25 мс — среднее время ответа
4Субота, 19 березня 2011 р.
![Page 5: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/5.jpg)
О чём вам стоит знать, когда будете делать то же самое?
5Субота, 19 березня 2011 р.
![Page 6: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/6.jpg)
Подберите персонал!
6Субота, 19 березня 2011 р.
![Page 7: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/7.jpg)
Подберите персонал!
• Грамотный менеджер! «Щасспрошу» завалит проект
7Субота, 19 березня 2011 р.
![Page 8: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/8.jpg)
Подберите персонал!
• Грамотный менеджер! «Щасспрошу» завалит проект
• Системный администратор. Получше, чем «aptitude-джан»
8Субота, 19 березня 2011 р.
![Page 9: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/9.jpg)
Подберите персонал!
• Грамотный менеджер! «Щасспрошу» завалит проект
• Системный администратор. Получше, чем «aptitude-джан»
• И команда злых марсиан!
9Субота, 19 березня 2011 р.
![Page 10: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/10.jpg)
Технические детали
10Субота, 19 березня 2011 р.
![Page 11: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/11.jpg)
В БД и memcached живут волшебные гномики?
11Субота, 19 березня 2011 р.
![Page 12: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/12.jpg)
Волшебных гномиков нет
12Субота, 19 березня 2011 р.
![Page 13: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/13.jpg)
Их нет даже в MongoDB
13Субота, 19 березня 2011 р.
![Page 14: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/14.jpg)
Многие общепринятые решения могут не сработать
14Субота, 19 березня 2011 р.
![Page 15: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/15.jpg)
Полностью выкинули memcached
15Субота, 19 березня 2011 р.
![Page 16: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/16.jpg)
Ампутировали pgpool
16Субота, 19 березня 2011 р.
![Page 17: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/17.jpg)
Проблемы роста
• Частое перепланирование бизнес-логики• Большая скорость роста посещаемости• Поровну записи и чтения• Читать надо сразу после записи• Нестабильность большого парка серверов
17Субота, 19 березня 2011 р.
![Page 18: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/18.jpg)
Решения
18Субота, 19 березня 2011 р.
![Page 19: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/19.jpg)
Профилирование
• Без него никуда• newrelic.com
• Слежение за фоновыми воркерами
19Субота, 19 березня 2011 р.
![Page 20: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/20.jpg)
Мониторинг
• Место на дисках• Состояние серверов• Длины очередей
20Субота, 19 березня 2011 р.
![Page 21: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/21.jpg)
Разделяй и властвуй
• Много данных в одном месте плохо
• Шардинг: user_id % 100
• Попробуйте просчитать заранее
21Субота, 19 березня 2011 р.
![Page 22: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/22.jpg)
SQL база
• PostgreSQL быстр
• Часто меняются индексы• Нужен компромис между скоростью записи и чтения
22Субота, 19 березня 2011 р.
![Page 23: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/23.jpg)
Ruby on Rails
• Самая беспроблемная часть инфраструктуры• Деплоить однозначно юникорном• Проблемы с использованием 100 шардов на 10 базах: вручную
23Субота, 19 березня 2011 р.
![Page 24: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/24.jpg)
RabbitMQ
• Очень быстрый. Даже с транзакциями.• Если бы рельсы были асинхронными, мы бы обошлись без него
• Удобный механизм мониторинга проблем на участках системы
• Мучительное восстановление после сбоя
24Субота, 19 березня 2011 р.
![Page 25: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/25.jpg)
Цифры
• Было 9000 мс, стало 25
• Было 30 тыс, стало 3000 тыс
• Было 20 тыс запросов, стало 60 млн
• Было 5 серверов, стало 14
25Субота, 19 березня 2011 р.
![Page 26: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/26.jpg)
Выводы
• Rails do scale
• Масштабирование — вопрос предметной области
• Не занимайтесь предварительной оптимизацией, но готовьтесь• У вас всё будет по-другому
26Субота, 19 березня 2011 р.
![Page 27: RubyConfUA - Ruby on Rails. 1000 запросов в секунду, Макс Лапшин](https://reader034.fdocuments.us/reader034/viewer/2022051112/55720846497959fc0b8bc7fb/html5/thumbnails/27.jpg)
Вопросы?
Макс Лапшин
27Субота, 19 березня 2011 р.