Delen via


Hoog geheugengebruik in Azure Database for PostgreSQL - Flexibele server

VAN TOEPASSING OP: Azure Database for PostgreSQL - Flexibele server

In dit artikel worden veelvoorkomende scenario's en hoofdoorzaken geïntroduceerd die kunnen leiden tot een hoog geheugengebruik in flexibele Azure Database for PostgreSQL-server.

In dit artikel leert u het volgende:

  • Informatie over probleemoplossingsgidsen voor het identificeren en verkrijgen van aanbevelingen om de hoofdoorzaken te beperken.
  • Hulpprogramma's voor het identificeren van een hoog geheugengebruik.
  • Redenen voor hoge geheugen- en herstelacties.

Handleidingen voor probleemoplossing

Met behulp van de handleidingen voor het oplossen van problemen met functies die beschikbaar zijn in de flexibele Server-portal van Azure Database for PostgreSQL, kunt u de mogelijke hoofdoorzaak en aanbevelingen vinden om het scenario met veel geheugen te beperken. Volg de handleidingen voor probleemoplossing om deze te gebruiken. Volg de handleidingen voor het oplossen van problemen met setups.

Hulpprogramma's voor het identificeren van hoog geheugengebruik

Overweeg de volgende hulpprogramma's om een hoog geheugengebruik te identificeren.

Metrische gegevens van Azure

Gebruik Metrische gegevens van Azure om het percentage geheugen in gebruik te controleren voor de definitieve datum en tijdsperiode.
Configureer waarschuwingen voor de metrische gegevens voor proactieve bewaking. Zie Metrische gegevens van Azure voor stapsgewijze instructies.

Query Store

Query Store legt automatisch de geschiedenis van query's en hun runtimestatistieken vast en behoudt deze voor uw beoordeling.

Query Store kan wacht-gebeurtenisgegevens correleren met queryruntimestatistieken. Gebruik Query Store om query's te identificeren die een hoog geheugenverbruik hebben tijdens de periode van belang.

Raadpleeg Query Store voor meer informatie over het instellen en gebruiken van Query Store.

Redenen en herstelacties

Houd rekening met de volgende redenen en herstelacties voor het oplossen van een hoog geheugengebruik.

Serverparameters

De volgende serverparameters zijn van invloed op het geheugenverbruik en moeten worden gecontroleerd:

Work_Mem

Met work_mem de parameter geeft u de hoeveelheid geheugen op die moet worden gebruikt door interne sorteerbewerkingen en hashtabellen voordat u naar tijdelijke schijfbestanden schrijft. Het is niet per query, maar wordt ingesteld op basis van het aantal sorteer- en hashbewerkingen.

Als de workload veel kortlopende query's heeft met eenvoudige joins en minimale sorteerbewerkingen, is het raadzaam om lager work_memte blijven. Als er enkele actieve query's zijn met complexe joins en sorteringen, is het raadzaam om een hogere waarde in te stellen voor work_mem.

Het is moeilijk om de juiste waarde work_mem te krijgen. Als u een hoog geheugengebruik of problemen met onvoldoende geheugen ondervindt, kunt u overwegen om af te nemen work_mem.

Een veiligere instelling is work_memwork_mem = Total RAM / Max_Connections / 16

De standaardwaarde van work_mem = 4 MB. U kunt de work_mem waarde instellen op meerdere niveaus, inclusief op serverniveau via de pagina parameters in Azure Portal.

Een goede strategie is het bewaken van het geheugenverbruik tijdens piektijden.

Als er gedurende deze tijd schijfsorteerden plaatsvinden en er veel ongebruikt geheugen is, neemt u geleidelijk toe work_mem totdat u een goede balans kunt bereiken tussen beschikbare en gebruikte geheugen. Als het geheugengebruik er hoog uitziet, vermindert work_memu het.

Maintenance_Work_Mem

maintenance_work_mem is bedoeld voor onderhoudstaken zoals vacuüm, het toevoegen van indexen of refererende sleutels. Het geheugengebruik in dit scenario is per sessie.

Denk bijvoorbeeld aan een scenario waarin er drie autovacuum-werkrollen worden uitgevoerd.

Als maintenance_work_mem deze optie is ingesteld op 1 GB, gebruiken alle sessies gecombineerd 3 GB geheugen.

Een hoge maintenance_work_mem waarde samen met meerdere actieve sessies voor het leegmaken/index maken/toevoegen van refererende sleutels kan leiden tot een hoog geheugengebruik. De maximaal toegestane waarde voor de maintenance_work_mem serverparameter in Azure Database for PostgreSQL Flexibele server is 2 GB.

Gedeelde buffers

De shared_buffers parameter bepaalt hoeveel geheugen is toegewezen aan de server voor het opslaan van gegevens in de cache. Het doel van gedeelde buffers is het verminderen van SCHIJF-I/O.

Een redelijke instelling voor gedeelde buffers is 25% van het RAM-geheugen. Het instellen van een waarde van meer dan 40% van het RAM-geheugen wordt niet aanbevolen voor de meest voorkomende werkbelastingen.

Maximum aantal verbindingen

Alle nieuwe en niet-actieve verbindingen op een flexibele Azure Database for PostgreSQL-serverdatabase verbruiken maximaal 2 MB geheugen. Een manier om verbindingen te bewaken, is door de volgende query te gebruiken:

select count(*) from pg_stat_activity;

Wanneer het aantal verbindingen met een database hoog is, neemt het geheugenverbruik ook toe.

In situaties waarin er veel databaseverbindingen zijn, kunt u overwegen een verbindingspooler zoals PgBouncer te gebruiken.

Raadpleeg voor meer informatie over PgBouncer:

Verbindingspooler.

Aanbevolen procedures.

Azure Database for PostgreSQL flexibele server biedt PgBouncer als een ingebouwde oplossing voor groepsgewijze verbindingen. Zie PgBouncer voor meer informatie.

Analyseren uitleggen

Zodra query's met veel geheugen zijn geïdentificeerd uit Query Store, gebruikt u EXPLAIN en EXPLAIN ANALYZE om deze verder te onderzoeken en af te stemmen.

Raadpleeg het uitlegplan voor meer informatie over de opdracht EXPLAIN.