PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Динамично наблюдение на екземпляри на PostgreSQL с помощта на pg_top

Мониторингът на PostgreSQL понякога може да бъде като опит да се карат добитък в гръмотевична буря. Приложенията се свързват и издават заявки толкова бързо, че е трудно да се види какво се случва или дори да се получи добра представа за производителността на системата, освен типичния разработчик, който се оплаква „нещата са бавни, помагайте!“ от вид заявки.

В предишни статии обсъдихме как да стигнем до източника, когато PostgreSQL действа бавно, но когато източникът е конкретно заявки, наблюдението на основно ниво може да не е достатъчно, за да се оцени какво се случва в активна среда на живо.

Въведете pg_top, специфична програма за PostgreSQL за наблюдение на активността в реално време в база данни, както и за преглед на основна информация за самия хост на базата данни. Подобно на командата на linux „top“, нейното изпълнение въвежда потребителя в живо интерактивно показване на активността на базата данни на хоста, като се опреснява автоматично на интервали.

Инсталиране

Инсталирането на pg_top може да се извърши по обикновено очакваните начини:мениджъри на пакети и инсталиране на източник. Най-новата версия от тази статия е 3.7.0.

Мениджъри на пакети

Въз основа на въпросната дистрибуция на linux, потърсете pgtop или pg_top в мениджъра на пакети, вероятно е наличен в някакъв аспект за инсталираната версия на PostgreSQL в системата.

Дистрибуции, базирани на Red Hat:

# sudo yum install pg_top

Gentoo базирани дистрибуции:

# sudo apt-get install pgtop

Източник

Ако желаете, pg_top може да бъде инсталиран чрез източник от git хранилището на PostgreSQL. Това ще осигури всяка желана версия, дори по-нови компилации, които все още не са в официалните версии.

Функции

Веднъж инсталиран, pg_top работи като много точен изглед в реално време в базата данни, която наблюдава, и използването на командния ред за стартиране на „pg_top“ ще стартира интерактивния инструмент за наблюдение на PostgreSQL.

Самият инструмент може да помогне да се хвърли светлина върху всички процеси, които в момента са свързани с базата данни.

Изпълнява се pg_top

Стартирането на pg_top е същото като самата команда „top“ в стил unix/linux, заедно с информацията за връзка с базата данни.

За да стартирате pg_top на локален хост на база данни:

pg_top -h localhost -p 5432 -d severalnines -U postgres

За да стартирате pg_top на отдалечен хост, е необходим флагът -r или --remote-mode и разширението pg_proctab, инсталирано на самия хост:

pg_top -r -h 192.168.1.20 -p 5432 -d severalnines -U postgres

Какво има на екрана

Когато стартираме pg_top, виждаме дисплей с доста информация.

Стандартен изход от pg_top на linux

Средно зареждане:
Като стандартната команда top, това средно натоварване за интервали от 1, 5 и 15 минути.

Uptime:
Общото време, през което системата е била онлайн след последното рестартиране.

Процеси:
Общият брой на свързаните процеси на база данни, като брой от тях се изпълняват и колко спящи.

Статистика на процесора:
Статистиката на процесора, показваща процентното натоварване за потребител, система и неактивен режим, приятна информация, както и проценти на iowait.

Памет:
Общото количество използвана памет, свободна, в буфери и кеширана.

DB активност:
Статистическите данни за активността на базата данни, като транзакции в секунда, брой връщания назад в секунда, буфери, прочетени в секунда, удари на буфери в секунда, брой четени редове в секунда и записани редове в секунда.

DB I/O Activity:
Активността за входно-изходна информация в системата, показваща колко четения и записвания в секунда, както и количеството четене и записване в секунда.

DB Disk Stats:
Общият размер на диска на базата данни, както и колко свободно място.

Размяна:
Информацията за използваното пространство за размяна, ако има такова.

Процеси:
Списък с процеси, свързани към базата данни, включително всеки тип автовакуум вътрешни процеси. Списъкът включва pid, приоритет, добрата сума, използвана резидентна памет, състоянието на връзката, броя на използваните секунди на процесора, процента на процесора и текущата команда, която процесът изпълнява.

Полезни интерактивни функции

Има няколко интерактивни функции в pg_top, до които можете да получите достъп, докато работи. Пълен списък може да бъде намерен, като въведете ?, което ще изведе помощен екран с всички налични различни опции.

Информация за плановик

E - План за изпълнение
Въвеждането на E ще предостави подкана за идентификатор на процес, за който да се покаже обяснение на план. Това е еквивалентно на изпълнение на „EXPLAIN ;“ в базата данни ръчно.

A - EXPLAIN ANALYZE (АКТУАЛИЗИРАНЕ/ИЗТРИВАНЕ)
Въвеждането на A ще предостави подкана за идентификатор на процес, за който да се покаже план EXPLAIN ANALYZE. Това е еквивалентно на изпълнение на „EXPLAIN ANALYZE ;“ в базата данни ръчно.

Изтеглете Бялата книга днес Управление и автоматизация на PostgreSQL с ClusterControl Научете какво трябва да знаете, за да внедрите, наблюдавате, управлявате и мащабирате PostgreSQLD Изтеглете Бялата книга

Информация за процеса

Q - Показване на текущата заявка на процес
Въвеждането на Q ще предостави подкана за идентификатор на процес, за който да се покаже пълната заявка.

I - Показва I/O статистически данни за процес (само за Linux)
Влизането в I превключва списъка с процеси към I/O дисплей, показващ всеки процес чете, записва и т.н. на диска.

L - Показва заключванията, държани от процес
Въвеждането на L ще предостави подкана за идентификатор на процес, за който да се покажат задържани заключвания. Това ще включва базата данни, таблицата, типа на заключване и дали заключването е предоставено или не. Полезно при проучване на продължителни или чакащи процеси.

Информация за връзката

R – Показване на статистически данни на потребителската таблица.
Въвеждането на R показва статистически данни на таблицата, включително последователни сканирания, индексни сканирания, INSERT, UPDATE и DELETE, всички свързани с скорошната дейност.

X – Показване на статистически данни за потребителския индекс
Въвеждането на X показва индексни статистически данни, включително сканиране на индекс, четене на индекса и извличане на индекс, всички свързани с скорошната дейност.

Сортиране

Сортирането на дисплея може да се извърши чрез някой от следните знаци.
M – Сортиране по използване на паметта
N – Сортиране по pid
P – Сортиране по използване на процесора
T – Сортиране по време

Следват записи, посочени след натискане на o, позволяващи сортиране и на страниците с индекс, таблица и I/o stat.
o - Посочете реда на сортиране (cpu, size, res, time, command)
индексни статистики (idx_scan, idx_tup_fetch, idx_tup_read)
         статистика на таблицата (seq_scan, seq_tup_read, idx_scan, idx_tup_fetch, n_tup_ins, n_tup_upd, n_tup_upd, n_tup_upd, n_tup_upd, n_tup_upd, n_tup_upd, n_tup_upd, n_brs_upd, n_br s , schar , n_br s , schar , schar / s cr /   schar / , пише, cwrites, команда)

Връзка/Манипулиране на заявка

k - посочени процеси за унищожаване
Въвеждането на k ще осигури подкана за процес или списък с процеси на база данни, които трябва да бъдат убити.

r - renice процес (само локална база данни, само root)
Въвеждането на r ще предостави подкана за хубава стойност, последвано от списък с процеси, които да зададете на тази нова добра стойност. Това променя приоритета на важни процеси в системата.

Пример:„renice 1 7004“

Различни употреби на pg_top

Реактивно използване на pg_top

Общата употреба на pg_top е интерактивният режим, който ни позволява да видим какви заявки се изпълняват в система, която изпитва проблеми със забавянето, да изпълним планове за обяснение на тези заявки, да възстановим важни заявки, за да ги накараме да завършат по-бързо, или да унищожим всички заявки, причиняващи сериозно забавяне . Като цяло позволява на администратора на базата данни да прави голяма част от същите неща, които могат да се правят ръчно в системата, но по-бързо и всичко в една опция.

Проактивно използване на pg_top

Въпреки че не е твърде често, pg_top може да се стартира в „партиден режим“, който ще покаже основната обсъждана информация до стандартен изход, след което ще излезе. Това може да бъде скриптирано да се изпълнява на определени интервали, след което да се изпрати до всеки желан персонализиран процес, да се анализира и да се генерират сигнали въз основа на това, за което администраторът може да иска да бъде предупреден. Например, ако натоварването на системата стане твърде високо, ако има по-висока от очакваната стойност на транзакции в секунда, всичко, което една творческа програма може да разбере.

Като цяло има други инструменти за събиране и докладване на тази информация, но наличието на повече опции винаги е добро нещо, а с наличието на повече инструменти могат да се намерят най-добрите опции.

Историческа употреба на pg_top

Подобно на предишната употреба, проактивна употреба, можем да скриптираме pg_top в пакетен режим, за да регистрираме моментни снимки на това как изглежда базата данни с течение на времето. Това може да бъде толкова просто, колкото да го запишете в текстов файл с времева марка или да го анализирате и да съхранявате датата в релационна база данни за генериране на отчети. Това би позволило да се намери повече информация след голям инцидент, като например срив на базата данни в 4 часа сутринта. Колкото повече данни са налични, толкова по-вероятни проблеми могат да бъдат открити.

Повече информация

Документацията за проекта е доста ограничена и по-голямата част от информацията е налична в man страницата на Linux, намерена чрез стартиране на „man pg_top“. Общността на PostgreSQL може да помогне с въпроси или проблеми чрез PostgreSQL пощенските списъци или официалната IRC Chatroom, намираща се на freenode, име на канал #postgresql.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL ILIKE заявка с SQLAlchemy

  2. Активиране на поддръжка на PostgreSQL в PHP на Mac OS X

  3. Как cbrt() работи в PostgreSQL

  4. Разработване на PostgreSQL за Windows, част 1

  5. Lumen - Създаване на връзка с базата данни по време на изпълнение