Вторая postgresql-встреча: производительность postgresql в...

33
II встреча Российского PostgreSQL сообщества Иван Золотухин, Постгресмен Николай Самохвалов, Постгресмен Максим Богук, Рамблер, Мастерхост Москва, 13 мая 2008

Upload: nikolay-samokhvalov

Post on 11-Apr-2015

959 views

Category:

Documents


0 download

DESCRIPTION

Слайды доклада второй встречи Российского PostgreSQL-сообщества (май 2008)Основная тема: производительность PostgreSQL в web-приложениях

TRANSCRIPT

Page 1: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

II встреча РоссийскогоPostgreSQL сообщества

Иван Золотухин, Постгресмен

Николай Самохвалов, Постгресмен

Максим Богук, Рамблер, Мастерхост

Москва, 13 мая 2008

Page 2: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Программа встречи

Производительность PostgreSQL в веб-приложениях

Активность сообщества (PostgreSQL Conference East, РИТ-2008, курс на ВМК МГУ)

PgBouncer: использование в Рамблере, хорошие новости. Новый интересный патч от Фёдора Сигаева

Слухи, сплетни, обсуждения Текущие вопросы

Page 3: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Производительность PostgreSQL в веб-приложениях

Иван Золотухин, Постгресмен

Николай Самохвалов, Постгресмен

Page 4: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Диагностика проблем

Средства операционной системы

Тесты производительности (benchmarks)

Средства PostgreSQL: логи, статистика

Системы внешнего мониторинга

Page 5: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Средства операционной системы

psВозможность увидеть PostgreSQL-процессы Понимание конкуретной работы с CPU и RAM Возможность заметить долгие запросы

Page 6: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Средства операционной системы

mpstatПросмотр активности каждого CPU Используются ли все процессоры? Является ли CPU узким местом? Диагностика context switches

Page 7: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Средства операционной системы

vmstat, freeПросмотр использования памяти Оценка размеров дискового кэша Хватает ли серверу PostgreSQL памяти? Не происходит ли swapping-а?

Page 8: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Средства операционной системы

iostatПросмотр дисковой активности Сервер достиг предела по I/O? Все ли диски выдают ожидаемый I/O? Мониторинг checkpoint-ов

Page 9: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Тесты производительности(benchmarks) bonnie++

Тест дисковой подсистемы Измерьте производительность дисков Знайте скорость Sequential/Random Read/Write и

Random Seek своих дисков

Page 10: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Тесты производительности(benchmarks) contrib/pgbench

Простейший тест базы данных Тестирует I/O и скорость соединений Не тестирует: блокировки, вычислительные задачи,

планирование запросов Удобен для обнаружения больших HW+OS проблем,

мало пригоден для тонкой настройки

Тестируйте систему, подобную вашей База в shared_buffers База в дисковом кэше База не помещается в RAM

Page 11: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Тесты производительности(benchmarks) contrib/pgbench

Автор: Грег Смит

Page 12: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Средства PostgreSQL

pg_stat_database, pg_database_size()

Вы должны знать общие параметры БД: Количество соединений Количество транзакций Количество commit-ов и rollback-ов Количество hit-ов (попаданий в буфер) Размер базы данных (помещается в RAM?)

Page 13: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Средства PostgreSQL

pg_tables, pg_relation_size()Вы должны знать общие параметры таблиц:

Количество таблиц Размеры таблиц Размеры индексов Количество триггеров «Вздутие» таблиц (bloating)

Page 14: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Средства PostgreSQL

pg_stat_activity, pg_locksДетали конкурентного доступа к таблицам

Оценка количества idle-соединений Runtime-оценка долгих запросов Лучше, чем ps – больше деталей Все ли нормально с блокировками? Нет ли WAITING-

бакендов?

Page 15: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Средства PostgreSQL

pg_stat[io]_user_tables, pg_stat[io]_user_indexes

Статистика доступа к таблицам Количество SELECT/INSERT/UPDATE/DELETE Количество seqscan vs. indexscan Есть ли неиспользуемые индексы? Drop it! Есть seqscan-ы по большим таблицам? CREATE

INDEX

Page 16: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Средства PostgreSQL

pg_stat_bgwriter Можно видеть, как bgwriter чистит кэш Помогает при затруднении проходимости

checkpoint-ов

Page 17: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Системы внешнего мониторинга

Примеры запросов для мониторинга:select datname,now()-query_start as duration,current_query from

pg_stat_activity;

select datname, case when blks_read = 0 then 0 else blks_hit / blks_read end as ratio from pg_stat_database;

select relname,seq_scan,idx_scan, case when idx_scan = 0 then 100 else seq_scan / idx_scan end as ratio from pg_stat_user_tables order by ratio desc;

select relname,n_tup_ins,n_tup_upd,n_tup_del from pg_stat_user_tables order by n_tup_upd desc;

select indexrelname,idx_tup_read,idx_tup_fetch,case when idx_tup_fetch = 0 then 100 else idx_tup_read / idx_tup_fetch end as ratio from pg_stat_user_indexes order by ratio desc;

select relname,n_tup_ins,n_tup_upd,n_tup_del from pg_stat_user_tables order by n_tup_upd desc;

select l.mode,d.datname,c.relname,l.granted,l.transactionid from pg_locks as l left join pg_database as d on l.database= d.oid left join pg_class as c on l.relation = c.oid;

Page 18: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Системы внешнего мониторинга

PgFouine (анализ логов) Zabbix (легко расширяется) Nagios (есть готовое расширение для

PostgreSQL) pgsnmpd – SNMP-агент для PostgreSQL Cacti + rrdtool – самое лучшее

Page 19: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Производительность PostgreSQL 8.3

Page 20: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Производительность PostgreSQL 8.3

Page 21: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Производительность PostgreSQL 8.3

Page 22: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Производительность PostgreSQL 8.3

Page 23: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Кто уже на 8.3?

MirTesen.ru DrWeb Многие, кому мы помогаем Рамблер: в процессе миграции, уже 60% на 8.3

Есть даже гетерогенные Slony:

slaves на 7.4 + мастер на 8.3

Page 24: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Конференции и события

Николай Самохвалов, Постгресмен

Page 25: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Конференции и события

PostgreSQL Conference East (конец марта) РИТ-2008 (середина апреля) КБД-2008 (середина апреля) Академический курс по PostgreSQL на ВМК МГУ

(весенний семестр, 25 слушателей!)

Page 26: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

PostgreSQL Conference East

Page 27: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

PostgreSQL Conference East

Page 28: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

PostgreSQL Conference East

Page 29: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

РИТ-2008: 4 доклада

Новый PostgreSQL 8.3: превосходя ожидания / Иван Золотухин

PostgreSQL — лучшая СУБД для Web 2.0 / Николай Самохвалов

PostgreSQL 8.4 («доклад-молния») / Олег Бартунов

Bucardo - мультимастер репликация для PostgreSQL («доклад-молния») / Алексей Клюкин

Page 30: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

PgBouncer

Максим Богук, Рамблер, Мастерхост

Иван Золотухин, Постгресмен

Page 31: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

PgBouncer: опыт Рамблер

На 1 сервере в 4 раза больше проектов, чем раньше

~10-20 соединений вместо 1000 20-30% выигрыша только за счет context switches

Page 32: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

PgBouncer: патч Фёдора Сигаева

Execute on connect: выполнить произвольную хранимую процедуру в момент создания backend-процесса

Можно сделать: PREPARE, SELECT to_tsvector() и т.п.

Page 33: Вторая PostgreSQL-встреча: производительность PostgreSQL в web-приложениях

Текущие вопросы

Николай Самохвалов, Постгресмен