SlideShare a Scribd company logo
1 of 23
Download to read offline
Avito.ru
Объявления и Postgres
mtyurin@avito.ru // we are hiring
Тюрин Михаил
главный системный архитектор
hi!
avito.ru — «большой» мобайл и веб
• разработка с 2007-ого, активная фаза с 2010-го
• я, Михаил Тюрин, в компании с 2009-го (6 лет — похлопаем!)
• сейчас — я главный системный архитектор
• вырос из команды четырех первых третьих программистов
• сейчас большой департамент (на целый этаж)
• работаю с:
• директором по разработке, девопс директором, dwh
• тимлидами и ведущими разработчиками
• командой баз данных (Postgres)
я в проекте практически с самого начала
• первая группа: php + свой_фрейморк + mysql
• доисторические времена
• вторая группа: php + (postgres + tsearch2)
• прототип почти был готов
• третья группа:
• php + postgres
• + Sphinx
• и первый теле-трафик. теле. трафик!
я много всего знаю про то, как устроен Avito
• при чем тут postgres? — а с него всё началось!
• первое, во что уперлись
• но был опыт:
• pg 7.4 — 8.2, pg_upgrade (formerly called pg_migrator)
• sql/plpgsq
• hstore
• skytools: londiste (pgq), plproxy и walmgr,
• php и memcached
• pgbouncer
• немного тюнить могли
• знал по переписке Олега Бартунова
задавайте мне потом вопросы
• далее:
• Sphinx
• ну и как всё это индексировать?!
• база начала расти
• первая логическая репликация
• skytools londiste
• materialized view и deferred triggers
• hstore
• лучше научились тюнить
• work_mem
• «хинты» планеру
• shared_buffers
много вопросов
• далее:
• pgbouncer
• начали писать свой класс db на php
• первая очередь для писем
• первый демон на php (skytools)
• много кода на plpgsq
про связь postgres со всеми частями системы
• далее:
• база растет
• не успеваем индексировать
• придумали параллельную индексацию
• и материализованный снепшот (repeatable read)
• и тут еще и очередь модерации
связь с поиском и вебом
• далее:
• база растет
• на логическую реплику переносим выдачу
• появилось первое нормальное железо
• psi raid bbu cache
• raid10 15K hdd
про тюнинг всего и вся
• далее:
• база растет
• вводим еще один мастер — вертикальный шардинг
• часть отчетов начинаем переносить на стендбай
• индекс бек-офиса — все объявления на Sphinx
про надежность и архив и восстановление
• далее:
• база растет
• появляется хот стендбай
• часть выдачи переносим на хот стендбай
• собственный архив (PITR)
• отчеты считаем на отдельной машине из
восстановленного бекапа
• тюним дальше shared_buffers и checkpoint
• начали тюнить linux
про fsync и tmpfs
• далее:
• база растет
• личный кабинет в tmpfs
• в tmpfs
• async commit
• raid cache — write 146%
а какой у вас планировщик io и fs, почему?
• далее:
• база растет
• авито начал много зарабатывать
• организуется dwh система (vertica $$$)
• планируем варианты интеграции
• отгрузка по времени
• материализованные дельты
• внутри мастера
• и на логической реплики
а какие очереди и почему pgq?
• далее:
• база растет
• нужно развивать асинхронные механизмы работы с
данными
• асинхронные
• pgq
• xrpc
• xrpcd — базы вызывают друг друга и php
какие размеры и нагрузки и чем мониторите?
• далее:
• база растет
• новое железо и $$D
• ssd — хороши
• быстрые ооочень
• очень!
• много iops
• много место в мало юнитах
• еще больше bbu cache — 2GB
какие сервера и сколько? а под базы?
• далее:
• база растет и трафик всё это время тоже рос
• и кол-во фич росло
• ! но активная часть итемов не зависит от времени
• геокодинг ходит асинхронно в Яндекс
• не успеваем индексировать — отказываемся от
снепшота, ставим репликацию на паузу перед
индексацией, после возобновляем
как и где храните картинки, на дисках?
• далее:
• база ростет
• xdb: 16 нод кластер plproxy (16 баз, 8 физ машин)
• + опять пригодился pgbouncer как роутер
как часто всё падает, где и почему?
• далее:
• база и кол-во проектов растет
• еще раз вертикально шардим второй мастер
• кончилось место
• через стендбаи
• проект «хвоста»: продуктово ограничили ЖЦ
объявления по времени
а как вы выкатываете код хранимок?
• далее:
• база растет всегда — это с начала и очень на долго
поражает
• но потом привыкаешь и к этому
• тюним вакуум и bgwriter
• реиндекс (concurrently)
я опоздал, а почему не mysql?
• так где же всё таки лежат объявления (и деньги)
• postgres
• мастер базы
• и личный кабинет в tmpfs
• хот-стендбаи (и архив)
• реплика сайта и реплика индексера
• dwh лог (etl очередь)
• xdb кластер
• sphinx
• идекс сайта
• индекс бекофиса
• redis, memcached
• rabbitmq
• tarantool
• fluentd, mongodb
• vertica
• ааааааааааааааааааааааа
вы так много всего сделали, но всё равно
теряете транзакци?!
• да!
• МЫ ТЕРЯЕМ НЕСКОЛЬКО ТРАНЗАКЦИЙ ДВА РАЗ В ГОД В СЛУЧАЕ
АВАРИЙ
• потому что мы пока так решили для себя cap теорему
• в случае аварии переключаемся на резерв и
• !!! делаем процедуры восстановления
• обобщенный UNDO лог в londiste
• специфические процедуры для других связанных узлов
спасибо! вопросы!
• теперь можно пролистать всё быстро заново и задавать вопросы
• делиться впечатлениями
• наверняка я про самое интересное и не упомянул
http://www.slideshare.net/ssuserdc9298/pgconfru-2015-avito-postgresql
http://www.slideshare.net/ssuserdc9298/pgconfru-2015avito-recoveryv2
Миша
mtyurin@avito.ru
we are hiring
я часов до 5-ти тут
могу говорить много часов
следите за анонсами митапов в Авито

More Related Content

What's hot

Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Ontico
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примереSergey Xek
 
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)Ontico
 
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDBenchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDAlex Chistyakov
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Ontico
 
Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)Ontico
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераDaniel Podolsky
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеAlexandr Krasheninnikov
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). Badoo Development
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)Nikolay Samokhvalov
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...Ontico
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLYandex
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Ontico
 
Как устроен поиск / Андрей Аксенов (Sphinx)
Как устроен поиск / Андрей Аксенов (Sphinx)Как устроен поиск / Андрей Аксенов (Sphinx)
Как устроен поиск / Андрей Аксенов (Sphinx)Ontico
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Ontico
 
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014Alex Chistyakov
 
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Ontico
 

What's hot (17)

Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
 
Путь к Go на конкретном примере
Путь к Go на конкретном примереПуть к Go на конкретном примере
Путь к Go на конкретном примере
 
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
 
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDBenchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSD
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
 
Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)Как устроен NoSQL, Андрей Аксенов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)
 
Спасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного ХецнераСпасение 6 миллионов файлов в условиях полного Хецнера
Спасение 6 миллионов файлов в условиях полного Хецнера
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
 
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...OpenResty: превращаем NGINX в полноценный сервер приложений  / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
 
Владимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQLВладимир Бородин - PostgreSQL
Владимир Бородин - PostgreSQL
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
 
Как устроен поиск / Андрей Аксенов (Sphinx)
Как устроен поиск / Андрей Аксенов (Sphinx)Как устроен поиск / Андрей Аксенов (Sphinx)
Как устроен поиск / Андрей Аксенов (Sphinx)
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014
 
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
 

Viewers also liked

Архитектура поиска в Avito / Андрей Смирнов (Avito)
Архитектура поиска в Avito / Андрей Смирнов (Avito)Архитектура поиска в Avito / Андрей Смирнов (Avito)
Архитектура поиска в Avito / Андрей Смирнов (Avito)Ontico
 
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)AvitoTech
 
Golang в avito
Golang в avitoGolang в avito
Golang в avitoAvitoTech
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Ontico
 
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)AvitoTech
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Ontico
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Ontico
 
Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2Ilyas Salikhov
 
Платежная система за год / Филипп Дельгядо (Информационные технологии и системы)
Платежная система за год / Филипп Дельгядо (Информационные технологии и системы)Платежная система за год / Филипп Дельгядо (Информационные технологии и системы)
Платежная система за год / Филипп Дельгядо (Информационные технологии и системы)Ontico
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Ontico
 
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Ontico
 
От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...
От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...
От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...Ontico
 
Dockerizing WordPress
Dockerizing WordPressDockerizing WordPress
Dockerizing WordPressdotCloud
 
Proekt postanovi eda
Proekt postanovi edaProekt postanovi eda
Proekt postanovi edaRBC-Ukraine
 
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...Ontico
 
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...Ontico
 
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Ontico
 
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...Plesk
 
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Ontico
 

Viewers also liked (20)

Архитектура поиска в Avito / Андрей Смирнов (Avito)
Архитектура поиска в Avito / Андрей Смирнов (Avito)Архитектура поиска в Avito / Андрей Смирнов (Avito)
Архитектура поиска в Avito / Андрей Смирнов (Avito)
 
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
 
Golang в avito
Golang в avitoGolang в avito
Golang в avito
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
 
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
«Как 200 строк на Go помогли нам освободить 15 серверов» – Паша Мурзаков (Badoo)
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
 
Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2Расширенное кеширование в Doctrine2
Расширенное кеширование в Doctrine2
 
Барнаул15
Барнаул15Барнаул15
Барнаул15
 
Платежная система за год / Филипп Дельгядо (Информационные технологии и системы)
Платежная система за год / Филипп Дельгядо (Информационные технологии и системы)Платежная система за год / Филипп Дельгядо (Информационные технологии и системы)
Платежная система за год / Филипп Дельгядо (Информационные технологии и системы)
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)
 
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
 
От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...
От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...
От больших к очень большим данным — зачем нужна нормализация в Big Data / Гол...
 
Dockerizing WordPress
Dockerizing WordPressDockerizing WordPress
Dockerizing WordPress
 
Proekt postanovi eda
Proekt postanovi edaProekt postanovi eda
Proekt postanovi eda
 
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
Как выбрать In-memory NoSQL базу данных с умом. Тестируем производительность ...
 
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
Как сделать высоконагруженный сервис, не зная количество нагрузки / Олег Обле...
 
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...
 
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...
code.talks 2016 Hamburg - Plesk - AutoScaling WordPress with Docker & AWS - b...
 
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)
 

Similar to Devconf15

Andrew Aksyonoff "Архитектура вокруг поиска"
Andrew Aksyonoff "Архитектура вокруг поиска"Andrew Aksyonoff "Архитектура вокруг поиска"
Andrew Aksyonoff "Архитектура вокруг поиска"Fwdays
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновOntico
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииNikolay Sivko
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...IT-Portfolio
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...it-people
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Anton Baranov
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Ontico
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовFuenteovejuna
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsqlAnatoly Popov
 
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"Yandex
 
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...GeeksLab Odessa
 
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)Ontico
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipesAlexey Ermakov
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015Alex Chistyakov
 
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...Ontico
 

Similar to Devconf15 (20)

Andrew Aksyonoff "Архитектура вокруг поиска"
Andrew Aksyonoff "Архитектура вокруг поиска"Andrew Aksyonoff "Архитектура вокруг поиска"
Andrew Aksyonoff "Архитектура вокруг поиска"
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
Zabbix: Прошлое, настоящее и будущее (Zabbix: Past, present and the future)
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
 
Sivko
SivkoSivko
Sivko
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsql
 
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
Евгения Фирсова "Выкладка вёрстки — просто, быстро, безопасно"
 
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...
 
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
 
PostgreSQL performance recipes
PostgreSQL performance recipesPostgreSQL performance recipes
PostgreSQL performance recipes
 
Migrate!
Migrate!Migrate!
Migrate!
 
My talk at Highload++ 2015
My talk at Highload++ 2015My talk at Highload++ 2015
My talk at Highload++ 2015
 
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
Слон желтого цвета и его друзья (эксплуатация Hadoop-стека в федеральном прое...
 

Devconf15

  • 1. Avito.ru Объявления и Postgres mtyurin@avito.ru // we are hiring Тюрин Михаил главный системный архитектор
  • 2.
  • 3.
  • 4. hi! avito.ru — «большой» мобайл и веб • разработка с 2007-ого, активная фаза с 2010-го • я, Михаил Тюрин, в компании с 2009-го (6 лет — похлопаем!) • сейчас — я главный системный архитектор • вырос из команды четырех первых третьих программистов • сейчас большой департамент (на целый этаж) • работаю с: • директором по разработке, девопс директором, dwh • тимлидами и ведущими разработчиками • командой баз данных (Postgres)
  • 5. я в проекте практически с самого начала • первая группа: php + свой_фрейморк + mysql • доисторические времена • вторая группа: php + (postgres + tsearch2) • прототип почти был готов • третья группа: • php + postgres • + Sphinx • и первый теле-трафик. теле. трафик!
  • 6. я много всего знаю про то, как устроен Avito • при чем тут postgres? — а с него всё началось! • первое, во что уперлись • но был опыт: • pg 7.4 — 8.2, pg_upgrade (formerly called pg_migrator) • sql/plpgsq • hstore • skytools: londiste (pgq), plproxy и walmgr, • php и memcached • pgbouncer • немного тюнить могли • знал по переписке Олега Бартунова
  • 7. задавайте мне потом вопросы • далее: • Sphinx • ну и как всё это индексировать?! • база начала расти • первая логическая репликация • skytools londiste • materialized view и deferred triggers • hstore • лучше научились тюнить • work_mem • «хинты» планеру • shared_buffers
  • 8. много вопросов • далее: • pgbouncer • начали писать свой класс db на php • первая очередь для писем • первый демон на php (skytools) • много кода на plpgsq
  • 9. про связь postgres со всеми частями системы • далее: • база растет • не успеваем индексировать • придумали параллельную индексацию • и материализованный снепшот (repeatable read) • и тут еще и очередь модерации
  • 10. связь с поиском и вебом • далее: • база растет • на логическую реплику переносим выдачу • появилось первое нормальное железо • psi raid bbu cache • raid10 15K hdd
  • 11. про тюнинг всего и вся • далее: • база растет • вводим еще один мастер — вертикальный шардинг • часть отчетов начинаем переносить на стендбай • индекс бек-офиса — все объявления на Sphinx
  • 12. про надежность и архив и восстановление • далее: • база растет • появляется хот стендбай • часть выдачи переносим на хот стендбай • собственный архив (PITR) • отчеты считаем на отдельной машине из восстановленного бекапа • тюним дальше shared_buffers и checkpoint • начали тюнить linux
  • 13. про fsync и tmpfs • далее: • база растет • личный кабинет в tmpfs • в tmpfs • async commit • raid cache — write 146%
  • 14. а какой у вас планировщик io и fs, почему? • далее: • база растет • авито начал много зарабатывать • организуется dwh система (vertica $$$) • планируем варианты интеграции • отгрузка по времени • материализованные дельты • внутри мастера • и на логической реплики
  • 15. а какие очереди и почему pgq? • далее: • база растет • нужно развивать асинхронные механизмы работы с данными • асинхронные • pgq • xrpc • xrpcd — базы вызывают друг друга и php
  • 16. какие размеры и нагрузки и чем мониторите? • далее: • база растет • новое железо и $$D • ssd — хороши • быстрые ооочень • очень! • много iops • много место в мало юнитах • еще больше bbu cache — 2GB
  • 17. какие сервера и сколько? а под базы? • далее: • база растет и трафик всё это время тоже рос • и кол-во фич росло • ! но активная часть итемов не зависит от времени • геокодинг ходит асинхронно в Яндекс • не успеваем индексировать — отказываемся от снепшота, ставим репликацию на паузу перед индексацией, после возобновляем
  • 18. как и где храните картинки, на дисках? • далее: • база ростет • xdb: 16 нод кластер plproxy (16 баз, 8 физ машин) • + опять пригодился pgbouncer как роутер
  • 19. как часто всё падает, где и почему? • далее: • база и кол-во проектов растет • еще раз вертикально шардим второй мастер • кончилось место • через стендбаи • проект «хвоста»: продуктово ограничили ЖЦ объявления по времени
  • 20. а как вы выкатываете код хранимок? • далее: • база растет всегда — это с начала и очень на долго поражает • но потом привыкаешь и к этому • тюним вакуум и bgwriter • реиндекс (concurrently)
  • 21. я опоздал, а почему не mysql? • так где же всё таки лежат объявления (и деньги) • postgres • мастер базы • и личный кабинет в tmpfs • хот-стендбаи (и архив) • реплика сайта и реплика индексера • dwh лог (etl очередь) • xdb кластер • sphinx • идекс сайта • индекс бекофиса • redis, memcached • rabbitmq • tarantool • fluentd, mongodb • vertica • ааааааааааааааааааааааа
  • 22. вы так много всего сделали, но всё равно теряете транзакци?! • да! • МЫ ТЕРЯЕМ НЕСКОЛЬКО ТРАНЗАКЦИЙ ДВА РАЗ В ГОД В СЛУЧАЕ АВАРИЙ • потому что мы пока так решили для себя cap теорему • в случае аварии переключаемся на резерв и • !!! делаем процедуры восстановления • обобщенный UNDO лог в londiste • специфические процедуры для других связанных узлов
  • 23. спасибо! вопросы! • теперь можно пролистать всё быстро заново и задавать вопросы • делиться впечатлениями • наверняка я про самое интересное и не упомянул http://www.slideshare.net/ssuserdc9298/pgconfru-2015-avito-postgresql http://www.slideshare.net/ssuserdc9298/pgconfru-2015avito-recoveryv2 Миша mtyurin@avito.ru we are hiring я часов до 5-ти тут могу говорить много часов следите за анонсами митапов в Авито