Sdílet prostřednictvím


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:

Sdružování připojení.

Osvědčené postupy.

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.