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

Upload: tomas-vondra

Post on 17-Dec-2014

6.547 views

Category:

Technology


2 download

DESCRIPTION

Prezentace připravená pro konferenci Prague PostgreSQL Developers' Day 2010. Hlavním tématem je monitoring výkonu PostgreSQL databázového serveru, nástrojů které k tomu lze použít, atd. Na začátku jsou představeny základní pojmy (např. co je to snapshot), a poté je předvedeno několik užitečných nástrojů (jeden z nich vyvíjím já).

TRANSCRIPT

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