PostgreSQL performance monitoring

35
Monitoring výkonu PostgreSQL Tomáš Vondra <[email protected]> http://www.fuzzy.cz Monitoring výkonu PostgreSQL Prague PostgreSQL Developers' Day 2010

description

A presentation I have prepared for Prague PostgreSQL Developers&#x27; Day 2010, a conference organized by czech PostgreSQL community. The presentation briefly explains how a performance monitoring works, what is a &#x27;snapshot&#x27; and so on, and then presents several interesting tools (I am an author of one of them - pgmonitor).Be aware that this presentation is in czech language as it was prepared for czech audience. If you are interested in this topic and you do not speak czech, contact me.

Transcript of PostgreSQL performance monitoring

Page 1: PostgreSQL performance monitoring

Monitoring výkonu PostgreSQLTomáš Vondra <[email protected]>

http://www.fuzzy.cz

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 2: PostgreSQL performance monitoring

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 3: PostgreSQL performance monitoring

A jedééééém ....

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 4: PostgreSQL performance monitoring

Můj SQL dotaz běží strašně pomalu!

Chci vědět proč a chci aby běžel rychle!

Use the „EXPLAIN ANALYZE“ force, Luke!

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 5: PostgreSQL performance monitoring

Server z nějakého důvodu běží pomalu!

Nemám tušení proč ale chci aby běžel rychle!

Meditate on this, I will.

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 6: PostgreSQL performance monitoring

Cíle přednášky

Ukázat jednu z možností sledování výkonu DB serveru.

Představit některé použitelné nástroje.

Přihřát si vlastní polívčičku ;-)

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 7: PostgreSQL performance monitoring

Cíle monitorování výkonu

Předvídat potenciální výkonnostní problémy tak aby se

na ně dalo včas zareagovat.

Pomáhat při řešení problémů.

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 8: PostgreSQL performance monitoring

Úrovně monitoringu výkonu

operační systém (top, dstat, iostat, …)

pouze konstatuje že se něco děje nedává odpovědi na naše otázky :-(

„vnitřnosti“ DB (systémové tabulky)

potenciálně může dát odpovědi na naše otázky pg_stat_* / pg_statio_*

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 9: PostgreSQL performance monitoring

Snapshoty

bez historických dat jsme ztraceni

snapshot = uložená data + informace o čase

analýza je založena na rozdílech snapshotů

nutné jsou informace z „dobrých časů“

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 10: PostgreSQL performance monitoring

Oracle Statspack

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 11: PostgreSQL performance monitoring

sada SQL a PL/SQL skriptů

udělej snapshot dat z V$ pohledů (ulož do tabulky)

data o sessions, dotazech, wait eventech ukládá do tradičních tabulek

analýza a zobrazení dat ze snapshotů

generování reportů

nadstavby (AWR, Diagnostics Pack v EMC)

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 12: PostgreSQL performance monitoring

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 13: PostgreSQL performance monitoring

Není to žádná zbrusu nová, převratná nebo

neodzkoušená technologie ...

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 14: PostgreSQL performance monitoring

Zdroje zajímavých dat v PostgreSQL

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 15: PostgreSQL performance monitoring

Interní systémové katalogy

pg_stat_* (db, bg_writer, tables, indexes, functions) způsoby čtení (sequential vs. index scans) řádky (inserted / updated / deleted / dead) vacuum / analyze funkce (calls / total time / self time)

pg_statio_* (tables, indexes, sequences) heap / index blocks read

cache hits

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 16: PostgreSQL performance monitoring

Contrib balíčky

pg_buffercache

pg_freespacemap

pgstattuple

pg_stat_statements

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 17: PostgreSQL performance monitoring

Snapshoty „by hand“ CREATE TABLE pg_stat_tables_snapshot AS

SELECT 'a'::text AS snap_name, now() AS snap_timestamp, *

FROM pg_stat_all_tables WHERE (1 = 2)

INSERT INTO pg_stat_tables_snapshot

SELECT 'snap-a', now(), * FROM pg_stat_all_tables

SELECT (b.seq_scan – a.seq_scan) AS seq_scan_delta, …

FROM pg_stat_tables_snapshot AS a LEFT JOIN

pg_stat_tables_snapshot AS b ON (a.relid = b.relid)

WHERE a.snap_name = 'snap-a' AND b.snap_name = 'snap-b';

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 18: PostgreSQL performance monitoring

Strategie vytváření snapshotů

snapshoty jen z okamžiku problémů nestačí

jsou třeba snapshoty pro srovnání (stejné podmínky) počet uživatelů, množství dotazů, denní doba

typ zátěže (batch / OLTP) ...

ani příliš dlouhé ani příliš krátké intervaly ekvidistantní (např. každých 15 minut)

neekvidistantní (dva snapshoty 5 minut od sebe každou hodinu)

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 19: PostgreSQL performance monitoring

K čemu to všechno?

řešení problémů – někde se něco podělalo nevím co se podělalo :-(

historie mi napoví kde by mohla být chyba

predikce nic se (zatím) nepodělalo, ale co zítra? chci průběžně analyzovat sbíraná data v případě podivností poslat varování (e-mail, SMS, ...)

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 20: PostgreSQL performance monitoring

Data máme – víme kde je získat a dokážeme je uložit.

Ale co dál?

Lost a planet, Master Obi-Wan has.

How embarrassing... how embarrassing.

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 21: PostgreSQL performance monitoring

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Nástroje

Page 22: PostgreSQL performance monitoring

Možné vlastnosti

vytváření snapshotů

práce se snapshoty (porovnávání, reporty, …)

analýza snapshotů (varování, …)

(?) centralizovaný nebo decentralizovaný

(?) GUI a/nebo konzole (shell, PL/pgSQL)

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 23: PostgreSQL performance monitoring

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

pgstatspack

http://pgfoundry.org/projects/pgstatspack/

Keith Pierno, Frits Hoogland

Page 24: PostgreSQL performance monitoring

pgstatspack

PL/pgSQL procedury + shell skripty

vytváření snapshotů

generování reportů (porovnávání snapshotů)

primárně pro „ruční použití“

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 25: PostgreSQL performance monitoring

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

pgstatspack demo

Page 26: PostgreSQL performance monitoring

pgstatspack – výhody a nevýhody

výhody jednoduchá instalace i použití

čistě konzolové řešení (stačí psql a shell)

to co umí umí velmi dobře (komplexní reporty)

nevýhody pouze pro 8.1, nevyvíjí se (poslední 2.1 z 17. února 2009) práce jen se dvěma snapshoty

necentralizované řešení (jedna DB)

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 27: PostgreSQL performance monitoring

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

pgmonitor

http://pgmonitor.sf.net

Tomáš Vondra

Page 28: PostgreSQL performance monitoring

Rozdíly oproti pgstatspacku

napsáno v PHP

webové GUI rozhraní

možnost centrálního uložiště

vývoj probíhá

podpora všech 8.x verzí

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 29: PostgreSQL performance monitoring

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

pgmonitor demo

Page 30: PostgreSQL performance monitoring

pgmonitor – plány do budoucna

PL/pgSQL procedury pro analýzu – velmi efektivní

lepší GUI

inteligentnější analýza / detekce problémů

začlenění OS-level metrik a „contrib“ metrik

podpora partitioningu

(?) nové zajímavé nápady

(?) nějací dobrovolníci

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 31: PostgreSQL performance monitoring

Další nástroje ...

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 32: PostgreSQL performance monitoring

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Staplr (http://github.com/gmr/Staplr)

Page 33: PostgreSQL performance monitoring

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Hyperic (http://www.hyperic.com)

Page 34: PostgreSQL performance monitoring

check_postgres (http://bucardo.org/wiki/Check_postgres)

kontrolní skript

široká škála kontrolovaných parametrů

připraveno pro Nagios a MRTG

napsáno v Perlu (brrrrr!)

podpora i pro 8.4

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010

Page 35: PostgreSQL performance monitoring

Q&A

Your father he is.

Monitoring výkonu PostgreSQLPrague PostgreSQL Developers' Day 2010