Vysoké využití paměti na flexibilním serveru Azure Database for PostgreSQL
PLATÍ PRO: Flexibilní server Azure Database for PostgreSQL
Tento článek představuje běžné scénáře a původní příčiny, které můžou vést k vysokému využití paměti na flexibilním serveru Azure Database for PostgreSQL.
V tomto článku se naučíte:
- O průvodcích odstraňováním potíží s identifikací a získáním doporučení ke zmírnění původních příčin
- Nástroje pro identifikaci vysokého využití paměti
- Důvody vysokého využití paměti a nápravných akcí.
Průvodce řešením potíží
S využitím průvodců odstraňováním potíží s funkcemi, které jsou k dispozici na portálu flexibilního serveru Azure Database for PostgreSQL, najdete pravděpodobné hlavní příčiny a doporučení pro zmírnění vysokého využití paměti. Postup nastavení průvodců odstraňováním potíží tak, aby je používal, postupujte podle průvodců odstraňováním potíží s nastavením.
Nástroje pro identifikaci vysokého využití paměti
Zvažte následující nástroje k identifikaci vysokého využití paměti.
Metriky Azure
Pomocí metrik Azure můžete monitorovat procento používané paměti pro určité datum a časový rámec.
Pro proaktivní monitorování nakonfigurujte upozornění na metriky. Podrobné pokyny najdete v tématu Metriky Azure.
Úložiště dotazů
Úložiště dotazů automaticky zaznamenává historii dotazů a jejich statistiky modulu runtime a uchovává je pro vaši kontrolu.
Úložiště dotazů může korelovat informace o událostech čekání se statistikami doby běhu dotazu. Úložiště dotazů slouží k identifikaci dotazů s vysokou spotřebou paměti během období zájmu.
Další informace o nastavení a používání úložiště dotazů najdete v tématu Úložiště dotazů.
Důvody a nápravné akce
Zvažte následující důvody a nápravné akce pro řešení vysokého využití paměti.
Parametry serveru
Následující parametry serveru mají vliv na spotřebu paměti a měly by se zkontrolovat:
Work_Mem
Parametr work_mem
určuje velikost paměti, kterou mají být použity interními operacemi řazení a hashovacími tabulkami před zápisem do dočasných souborů disku. Není na základě jednotlivých dotazů nastavená na základě počtu operací řazení a hodnot hash.
Pokud má úloha mnoho krátkých dotazů s jednoduchými spojeními a minimálními operacemi řazení, doporučuje se zachovat nižší .work_mem
Pokud existuje několik aktivních dotazů se složitými spojeními a řazením, doporučujeme nastavit vyšší hodnotu pro work_mem.
Je těžké získat hodnotu work_mem
práva. Pokud si všimnete vysokého využití paměti nebo problémů s nedostatkem paměti, zvažte snížení work_mem
.
Bezpečnější nastavení work_mem
je work_mem = Total RAM / Max_Connections / 16
Výchozí hodnota work_mem
= 4 MB. Hodnotu můžete nastavit work_mem
na více úrovních, včetně na úrovni serveru, prostřednictvím stránky parametrů na webu Azure Portal.
Dobrou strategií je monitorování spotřeby paměti během špičky.
Pokud během této doby dochází k řazení disků a existuje spousta nevyužité paměti, zvyšte work_mem
se postupně, dokud nebudete schopni dosáhnout dobré rovnováhy mezi dostupnými a využitými paměťmi podobně, pokud paměť vypadá vysoko, snižte work_mem
.
Maintenance_Work_Mem
maintenance_work_mem
je určen pro úlohy údržby, jako je úklid, přidávání indexů nebo cizích klíčů. Využití paměti se v tomto scénáři vztahuje na jednotlivé relace.
Představte si například scénář, kdy jsou spuštěné tři pracovní procesy automatického úklidu.
Pokud maintenance_work_mem
je nastavená na 1 GB, všechny kombinované relace budou používat 3 GB paměti.
Vysoká maintenance_work_mem
hodnota spolu s několika spuštěnými relacemi pro vakuum, vytvoření indexu nebo přidání cizích klíčů může způsobit vysoké využití paměti. Maximální povolená hodnota parametru maintenance_work_mem
serveru na flexibilním serveru Azure Database for PostgreSQL je 2 GB.
Sdílené vyrovnávací paměti
Parametr shared_buffers
určuje, kolik paměti je vyhrazené pro server pro ukládání dat do mezipaměti. Cílem sdílených vyrovnávacích pamětí je snížit vstupně-výstupní operace disku.
Rozumné nastavení sdílených vyrovnávacích pamětí je 25 % paměti RAM. Nastavení hodnoty větší než 40 % paměti RAM se nedoporučuje pro nejběžnější úlohy.
Maximální počet připojení
Všechna nová a nečinná připojení v databázi flexibilního serveru Azure Database for PostgreSQL spotřebovávají až 2 MB paměti. Jedním ze způsobů, jak monitorovat připojení, je následující dotaz:
select count(*) from pg_stat_activity;
Pokud je počet připojení k databázi vysoký, zvýší se také spotřeba paměti.
Vsituacích
Další podrobnosti o pgBouncer najdete v tématu:
Flexibilní server Azure Database for PostgreSQL nabízí PgBouncer jako integrované řešení sdružování připojení. Další informace naleznete v tématu PgBouncer.
Vysvětlit analýzu
Jakmile jsou dotazy s vysokým využitím paměti identifikovány z úložiště dotazů, použijte funkci EXPLAIN a EXPLAIN ANALYZE k dalšímu zkoumání a jejich ladění.
Další informace o příkazu EXPLAIN najdete v tématu Vysvětlit plán.