Your SlideShare is downloading. ×
0
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
E Kokovikhin - devconf 2012
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

E Kokovikhin - devconf 2012

1,208

Published on

Презентация "Грабли машстрабирования"

Презентация "Грабли машстрабирования"

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,208
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
21
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. «Грабли» при масштабировании веб-приложения или «что происходит при росте с 1М до 50М хитов в сутки». Евгений Коковихин, ведущий разработчик Wapstart. (в конце доклада вам покажут 1000 слонов!)
  • 2. Кто мы?• Компания WapStart – владелец крупнейшей в России мобильной рекламной сети Plus1 WapStart и каталога мобильных сайтов Top WapStart.• Компания оказывает услуги тысячам издателей мобильных сайтов и приложений.• Ежемесячная рекламная емкость WapStart - свыше 1,5 млрд. показов, число уникальных посетителей - более 10 миллионов в месяц.• Компания WapStart владеет передовыми технологиями таргетинга и анализа аудитории, позволяющими проводить рекламные кампании с высокой рентабельностью инвестиций. © Отдел маркетинга.
  • 3. Эту картинку я нашел в интернете
  • 4. … и эту
  • 5. Задачи, которые решает plus1.wapstart.ru• Поиск подходящих баннеров для пользователя.• Сортировка баннеров по релевантности и стоимости.• Подсчет денег.• Администрирование баннеров и рекламных площадок.• Сбор и анализ статистики.
  • 6. ПО, которое используются в plus1.wapstart.ru• PHP 5.3 / php-fpm• postgresql 9.1• nginx• memcache• Freebsd (fronts)• Debian (farms)
  • 7. Конфигурация железа: былоХорошо: мир• Хорошо работает при небольшой нагрузке;• Все очень просто. front-server admin guiПлохо: db-server• Разные требования к железу у разных ролей; farm1• Сложно отлавливать баги и искать узкие farm2 места из-за влияния других подсистем.
  • 8. Конфигурация железа: стало мир Хорошо: • все еще просто; • легко добавлять и front1 front1 убирать железо; • железо разделено поfarm-adm farm1 farmN ролям.db-master Проблемы: Плохо: • сессии; • Вывод железа изdb-slave продакшена • картинки / пользовательские файлы; в случае отказа не автоматизирован. • sql запросы, модифицирующие данные
  • 9. Статистика (1) событие Хорошо: Плохо: • выборки очень просты; • медленно; DB (raw) • все понятно; • сложно удалять старые сырые данные;аггрегатор • сложно масштабировать.hourly tables daily tables Проблемы: • Однажды мы начали интерфейсы писать быстрее, чем смогли обрабатывать; • Внешние ключи не только полезны, но и вредны.
  • 10. Статистика (2) событие Хорошо: файл • выборки очень просты; • все понятно;аккумулятор Плохо: • Временные таблицы надо чистить;temp tablesаггрегаторhourly tables daily tables интерфейсы
  • 11. Статистика (3) событие Хорошо: файл • Аггрегация работает годно;аккумулятор Плохо:temp hourly • Данные в дневные таблицы попадают не tables одновременно с часовыми (переживем).Аггрегатор / удаляторhourly tables daily tables интерфейсы
  • 12. Биллинг: былоУтро: Вечер: Рекламодатель Рекламодатель 100 рублей 50 рублей Владелец сайта Владелец сайта 100 рублей 120 рублейРекламодатель Рекламодатель 150 рублей 70 рублей Владелец сайта Владелец сайта 10 рублей 12 рублейРекламодатель Рекламодатель 180 рублей 100 рублей Владелец сайта Владелец сайта 20 рублей 30 рублей
  • 13. Биллинг: сталоСчет сумма Счет суммаUser 1 1 000 User 1 1 100User 2 100 User 2 200User 3 100 User 3 500System 150 System 3 000… … … …… … … … time Credit_bill_id Debet_bill_id Amount comment … User_1 User_2 100 за клики … … … … …
  • 14. Мониторим всё1. Состояние логов2. Аггрегация ошибок и отправка их почтой3. Цветные графики4. Особо критичные триггеры по sms.
  • 15. Борьба за быстродействие:• клиенты хотят получать баннер быстро;• клиенты получают баннеры синхронно;• аренда оборудования - это дорого.
  • 16. Борьба за быстродействие: было Запрос Плохо:пользователя onPHP cache (memcache) • Иногда ходим в базу; Разбор • Используем родные объекты onPHP – медленная сборка.Формирование DB (Postgres) запроса Проблема: Получения • Однажды оно перестало списков помещаться в кеш. баннеров по запросу Проверки в Отрисовка и реальном отдача времени пользователю
  • 17. Борьба за быстродействие: как хотели. Запроспользователя get model_id=42&gateway_id=1&region_id=199 VALUE model_id=42&gateway_id=1&region_id=199 0 256 Преднаполнение a:2:{i:0;O:11:"PlainBanner":13:{s:15:"PlainBannerid";i:31 Разбор кеша ;s:17:"PlainBannername";N;s:18:"PlainBannertitle";N;s:20: "PlainBannercontent";N;s:30:"PlainBannersingleLineContent ";N;s:17:"PlainBannerlink";N;s:20:"PlainBannerstateId";N; s:23:"PlainBannercampaignId";N;s:19:"PlainBannertypeId";N ;s:21:"PlainBannerpictures";a:0:{}s:25:"PlainBannerfakePiФормирование ctures";a:0:{}s:17:"PlainBannerfake";b:0;s:32:"PlainBanne запроса Мemcache rshowOnlyWithGraphic";N;}i:1;O:11:"PlainBanner":13:{s:15: "PlainBannerid";i:42;s:17:"PlainBannername";N;s:18:"Plain Bannertitle";N;s:20:"PlainBannercontent";N;s:30:"PlainBan nersingleLineContent";N;s:17:"PlainBannerlink";N;s:20:"Pl Получение ainBannerstateId";N;s:23:"PlainBannercampaignId";N;s:19:" PlainBannertypeId";N;s:21:"PlainBannerpictures";a:0:{}s:2 списков 5:"PlainBannerfakePictures";a:0:{}s:17:"PlainBannerfake"; баннеров по b:0;s:32:"PlainBannershowOnlyWithGraphic";N;}} запросу END Отрисовка и Не взлетело :( отдача пользователю
  • 18. Борьба за быстродействие: Запрос как получилосьпользователя Преднаполнение Вот так Разбор кеша работает! Формирование Проблемы: запроса на каждуюсущность таргетинга Мemcache • Разбиратель запроса все еще может попасть в базу; Получение и объединение • Редкий траффик идет в базусписков баннеров целиком; по запросу • За преднаполненным кешем надо следить. Отрисовка и отдача пользователю
  • 19. Мониторинг (2) и как мы раньше жили без pinba?• Меряем именно то, что происходит на проде;• Меряем все, что происходит на проде;• Можем измерять бизнес-метрики;• Красивые графики.
  • 20. Резюме:• Разработка – процесс итеративный.• Ошибки бывают, не бойтесь ошибаться.• Не надо думать на 3 года вперед, все равно все изменится.• Мониторинг – наше всё.• Сила в простых вещах. Когда все просто – это легко поддерживать и модифицировать.
  • 21. Wapstart:• http://wapstart.ru/ https//:plus1.wapstart.ru/• Продажи: sales@co.wapstart.ru• Разработка: dev@co.wapstart.ru• github: https://github.com/Wapstart• Habr: http://habrahabr.ru/company/wapstart/ Я: • Mail/jabber: dovg@dovg.ru • Github: https://github.com/dovg • Habr: http://habrahabr.ru/users/dovg/ • Vk: http://vk.com/id2082364 Вопросы?

×