Rails Scale: 1000
запросов в секунду
Макс Лапшин
max@evilmartians.com
http://evilmartians.ru/
:Задача
оптимизация
приложения
вконтакте
оптимизация
приложения
• 30 тыс пользователей
• 9до секунд на запрос
• 5 серверов
• 500надо опустить время ответа домс
Вводные
• 2-Более х млн пользователей
• 25 мс на запрос
• 14 серверов
• 40K RPM 20и млн записей в сутки
Результаты
• Ежедневная смена требований
• Экспоненциальный рост нагрузки
• Поровну записи и чтения
• ,Сделать быстро дешево и приемл...
Что оказалось
важным в
нашем случае
нашем случае
нашем случае
Грамотный менеджер
« »Щасспрошу завалит проект
Персонал
.Системный администратор
, «aptitude- »Получше чем джан
Персонал
!Наша команда злых марсиан
http://evilmartians.ru/
Персонал
Волшебных гномиков
.нет
Нет их даже в
MongoDB memcachedи
• pgpool — master-master медленный
• memcached — нечего кешировать
Сразу выкинули
• Ruby on Rails — нужна гибкость
• PostgreSQL — часто меняется схема
• RabbitMQ — задержка записи
• внешний инструментарий...
Что мы делали
• Без него никуда
• Догадки не работают
• newrelic.com
• Фоновые задачи очень важны
Профилирование
• Место на дисках
• Упавшие серверы
• Длины очередей
• (?)Ночной дежурный
Мониторинг
• Нужны реляционные выборки
• Часто меняются критерии
• PostgreSQL быстр и удобен
•  — IOИндексы основной дисковый
SQL база
•  —Много данных рядом плохо
• Нам повезло с логикой выборок
• : user_id % 100Шардинг
• Надо планировать заранее
Шардинг
• Меньше всего проблем
• Zero-downtime deploy unicorn-с ом
• Плохая поддержка шардинга
• RabbitMQНеобходимость
Ruby on Rai...
• Самая быстрая часть проекта
• Оказался индикатором состояния
• Мучительное восстановление
RabbitMQ
• Rails do scale
•  —Масштабирование вопрос
предметной области
• -У вас всё будет по другому
Выводы
Upcoming SlideShare
Loading in …5
×

Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails, Максим Лапшин

2,143 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,143
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 запросов в секунду на Rails, Максим Лапшин

  1. 1. Rails Scale: 1000 запросов в секунду Макс Лапшин max@evilmartians.com http://evilmartians.ru/
  2. 2. :Задача оптимизация приложения вконтакте оптимизация приложения
  3. 3. • 30 тыс пользователей • 9до секунд на запрос • 5 серверов • 500надо опустить время ответа домс Вводные
  4. 4. • 2-Более х млн пользователей • 25 мс на запрос • 14 серверов • 40K RPM 20и млн записей в сутки Результаты
  5. 5. • Ежедневная смена требований • Экспоненциальный рост нагрузки • Поровну записи и чтения • ,Сделать быстро дешево и приемлемо С чем столкнулись
  6. 6. Что оказалось важным в нашем случае нашем случае нашем случае
  7. 7. Грамотный менеджер « »Щасспрошу завалит проект Персонал
  8. 8. .Системный администратор , «aptitude- »Получше чем джан Персонал
  9. 9. !Наша команда злых марсиан http://evilmartians.ru/ Персонал
  10. 10. Волшебных гномиков .нет
  11. 11. Нет их даже в MongoDB memcachedи
  12. 12. • pgpool — master-master медленный • memcached — нечего кешировать Сразу выкинули
  13. 13. • Ruby on Rails — нужна гибкость • PostgreSQL — часто меняется схема • RabbitMQ — задержка записи • внешний инструментарий Оставили
  14. 14. Что мы делали
  15. 15. • Без него никуда • Догадки не работают • newrelic.com • Фоновые задачи очень важны Профилирование
  16. 16. • Место на дисках • Упавшие серверы • Длины очередей • (?)Ночной дежурный Мониторинг
  17. 17. • Нужны реляционные выборки • Часто меняются критерии • PostgreSQL быстр и удобен •  — IOИндексы основной дисковый SQL база
  18. 18. •  —Много данных рядом плохо • Нам повезло с логикой выборок • : user_id % 100Шардинг • Надо планировать заранее Шардинг
  19. 19. • Меньше всего проблем • Zero-downtime deploy unicorn-с ом • Плохая поддержка шардинга • RabbitMQНеобходимость Ruby on Rails
  20. 20. • Самая быстрая часть проекта • Оказался индикатором состояния • Мучительное восстановление RabbitMQ
  21. 21. • Rails do scale •  —Масштабирование вопрос предметной области • -У вас всё будет по другому Выводы

×