Az Azure Database for PostgreSQL magas processzorhasználatának hibaelhárítása – rugalmas kiszolgáló
A következőkre vonatkozik: Azure Database for PostgreSQL – Rugalmas kiszolgáló
Ez a cikk bemutatja, hogyan azonosíthatja gyorsan a magas processzorkihasználtság kiváltó okát, valamint a rugalmas Azure Database for PostgreSQL-kiszolgáló használatakor a processzorkihasználtság szabályozására szolgáló lehetséges javítóműveleteket.
Ebben a cikkben a következőt fogja elsajátítani:
- Hibaelhárítási útmutatók a kiváltó okok azonosításához és lekéréséhez.
- A magas cpu-kihasználtság azonosítására szolgáló eszközök, például az Azure Metrics, a Query Store és a pg_stat_statements.
- A kiváltó okok, például a hosszú ideig futó lekérdezések és a teljes kapcsolatok azonosítása.
- A magas cpu-kihasználtság feloldása elemzési, kapcsolatkészletezési és vákuumozási táblák használatával.
Hibaelhárítási útmutatók
A rugalmas Azure Database for PostgreSQL-kiszolgálóportálon elérhető szolgáltatás hibaelhárítási útmutatók segítségével megtalálhatja a lehetséges kiváltó okot és javaslatokat a magas processzorhasználat mérséklésére. A hibaelhárítási útmutatók használatához kövesse a beállítási hibaelhárítási útmutatókat.
A magas cpu-kihasználtság azonosítására szolgáló eszközök
Fontolja meg ezeket az eszközöket a magas processzorkihasználtság azonosításához.
Azure-metrikák
Az Azure Metrics jó kiindulási pont a cpu-kihasználtság ellenőrzéséhez a meghatározott dátum és időszak alapján. A metrikák információt adnak arról az időtartamról, amely alatt a cpu-kihasználtság magas. Hasonlítsa össze az írási IP-címek, az olvasási IP-címek, az olvasási átviteli sebesség és az írási átviteli sebesség grafikonjait a processzorhasználattal, hogy megtudja, mikor okozott a számítási feladat magas processzorhasználatot. A proaktív monitorozáshoz konfigurálhatja a metrikákra vonatkozó riasztásokat. Részletes útmutatásért tekintse meg az Azure Metricst.
Lekérdezéstár
A Lekérdezéstár automatikusan rögzíti a lekérdezések és a futtatókörnyezet statisztikáinak előzményeit, és megőrzi őket a felülvizsgálathoz. Idő szerint szeleteli az adatokat, hogy láthassa az időbeli használati mintákat. Az összes felhasználó, adatbázis és lekérdezés adatait egy azure_sys nevű adatbázisban tárolja a rugalmas Azure Database for PostgreSQL-kiszolgálópéldány. Részletes útmutatásért tekintse meg a Lekérdezéstárat.
pg_stat_statements
A pg_stat_statements bővítmény segít azonosítani a kiszolgálón időt használó lekérdezéseket.
Átlagos vagy átlagos végrehajtási idő
A Postgres 13-at vagy újabb verzióit a következő utasítással tekintheti meg az első öt SQL-utasítást közép- vagy átlagos végrehajtási idő szerint:
SELECT userid::regrole, dbid, query, mean_exec_time
FROM pg_stat_statements
ORDER BY mean_exec_time
DESC LIMIT 5;
Teljes végrehajtási idő
Hajtsa végre az alábbi utasításokat az első öt SQL-utasítás teljes végrehajtási idő szerinti megtekintéséhez.
A Postgres 13-at vagy újabb verzióit az alábbi utasítással tekintheti meg az első öt SQL-utasítást a teljes végrehajtási idő alapján:
SELECT userid::regrole, dbid, query
FROM pg_stat_statements
ORDER BY total_exec_time
DESC LIMIT 5;
A kiváltó okok azonosítása
Ha a processzorhasználati szintek általában magasak, az alábbiak lehetnek a kiváltó okok:
Hosszú ideig futó tranzakciók
A hosszú ideig futó tranzakciók processzorerőforrásokat használhatnak, amelyek magas processzorkihasználtsághoz vezethetnek.
A következő lekérdezés segít azonosítani a leghosszabb ideig futó kapcsolatokat:
SELECT pid, usename, datname, query, now() - xact_start as duration
FROM pg_stat_activity
WHERE pid <> pg_backend_pid() and state IN ('idle in transaction', 'active')
ORDER BY duration DESC;
Kapcsolatok és számkapcsolatok teljes száma állapot szerint
Az adatbázishoz való nagyszámú kapcsolat szintén egy másik probléma, amely a processzor- és memóriakihasználtság növeléséhez vezethet.
Az alábbi lekérdezés a kapcsolatok állapot szerinti számáról ad információt:
SELECT state, count(*)
FROM pg_stat_activity
WHERE pid <> pg_backend_pid()
GROUP BY 1 ORDER BY 1;
Magas cpu-kihasználtság feloldása
A magas cpu-kihasználtság feloldásához használja az Elemzés magyarázata, a PG Bouncer, a kapcsolatkészletezés és a hosszú ideig futó tranzakciók leállítását.
Elemzés magyarázatának használata
Ha már ismeri a hosszú ideig futó lekérdezést, a EXPLAIN használatával tovább vizsgálhatja és finomhangolhatja a lekérdezést.
A EXPLAIN paranccsal kapcsolatos további információkért tekintse át a Magyarázó tervet.
PGBouncer és kapcsolatkészletezés
Olyan helyzetekben, amikor sok tétlen kapcsolat vagy sok kapcsolat van, amelyek a processzort használják, fontolja meg egy kapcsolatkészletező, például a PgBouncer használatát.
További részletek a PgBouncerről:
A rugalmas Azure Database for PostgreSQL-kiszolgáló beépített kapcsolatkészletezési megoldásként kínálja a PgBouncert. További információ: PgBouncer
Hosszú ideig futó tranzakciók leállása
Lehetőségként fontolóra vehet egy hosszú ideig futó tranzakciót.
Egy munkamenet PID-jének leállításához az alábbi lekérdezéssel kell észlelnie a PID-t:
SELECT pid, usename, datname, query, now() - xact_start as duration
FROM pg_stat_activity
WHERE pid <> pg_backend_pid() and state IN ('idle in transaction', 'active')
ORDER BY duration DESC;
Szűrhet más tulajdonságok, például usename
(felhasználónév), datname
(adatbázis neve) stb. alapján is.
Miután megkapta a munkamenet PID-jét, a következő lekérdezéssel fejezheti be:
SELECT pg_terminate_backend(pid);
Vákuum- és táblázatstatisztikák monitorozása
A táblastatisztikák naprakészen tartása segít a lekérdezési teljesítmény javításában. Monitorozza, hogy a rendszeres automatikus helyreállítás folyamatban van-e.
Az alábbi lekérdezés segít azonosítani a porszívózandó táblákat:
select schemaname,relname,n_dead_tup,n_live_tup,last_vacuum,last_analyze,last_autovacuum,last_autoanalyze
from pg_stat_all_tables where n_live_tup > 0;
last_autovacuum
az oszlopok pedig last_autoanalyze
azt a dátumot és időt adják meg, amikor a táblázatot utoljára automatikusan elemezték vagy elemezték. Ha a táblákat nem porszívózzák rendszeresen, végezze el az autovacuum finomhangolását. Az autovacuum hibaelhárításával és hangolásával kapcsolatos további információkért tekintse meg az Autovacuum hibaelhárítását.
A rövid távú megoldás az lenne, ha manuális vákuumelemzést végeznénk a táblákon, ahol lassú lekérdezések láthatók:
vacuum analyze <table_name>;
Kapcsolódó tartalom
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: