Компанія
По суті, це щосекундні знімки з pg_stat_activity, але є важливі моменти:
- Вся накопичена інформація зберігається тільки в оперативній пам'яті, а обсяг пам'яті, що споживається, регулюється кількістю останніх записів, що зберігаються.
- Додається поле queryid - цей queryid з розширення pg_stat_statements (потрібна попередня установка).
- Додається поле top_level_query — текст запиту, з якого викликано поточний запит (у разі використання pl/pgsql)
Повний список полів pg_active_session_history:
Column | Type ------------------+-------------------------- ash_time | timestamp with time zone datid | oid datname | text pid | integer usesysid | oid usename | text application_name | text client_addr | text client_hostname | text client_port | integer backend_start | timestamp with time zone xact_start | timestamp with time zone query_start | timestamp with time zone state_change | timestamp with time zone wait_event_type | text wait_event | text state | text backend_xid | xid backend_xmin | xid top_level_query | text query | text queryid | bigint backend_type | text
Готового пакета для встановлення поки що немає. Пропонується завантажити вихідні записи та зібрати бібліотеку самостійно. Попередньо потрібно встановити "devel"-пакет для свого сервера та в змінну PATH прописати шлях до pg_config. Збираємо:
cd pgsentinel/src
зробити
зробити установку
Додаємо параметри до postgres.conf:
shared_preload_libraries = 'pg_stat_statements,pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = allкількість утримуваних у пам'яті останніх записів
pgsentinel_ash.max_entries = 10000
Перезавантажуємо PostgreSQL і створюємо розширення:
create extension pgsentinel;
Накопичена інформація дозволяє відповісти на такі питання, як:
- На яких очікуваннях сесії провели найбільше часу?
- Які сесії були найактивнішими?
- Які запити були найактивнішими?
Отримати відповіді на ці питання можна, звичайно, SQL-запитами, але зручніше побачити це наочно на графіку, виділяючи мишкою інтервали часу, що цікавляться. Ви можете зробити це за допомогою безкоштовної програми
При старті PASH-Viewer (починаючи з версії 0.4.0) перевіряє наявність уявлення pg_active_session_history і якщо воно є, то завантажує з нього всю накопичену історію і продовжує зчитувати нові дані, оновлюючи графік раз на 15 секунд.
Джерело: habr.com