Историја активних сесија у ПостгреСКЛ-у - нова екстензија пгсентинел

компанија pgsentinel выпустила одноимённое расширение pgsentinel (гитхуб репозиторијум), добавляющее в PostgreSQL представление pg_active_session_history — историю активных сессий (по аналогии с оракловой v$active_session_history).

По сути, это просто-напросто ежесекундные снимки из pg_stat_activity, но есть важные моменты:

  1. Све акумулиране информације се чувају само у РАМ-у, а утрошена количина меморије је регулисана бројем последњих сачуваних записа.
  2. Додато је поље куериид - исти куериид из екстензије пг_стат_статементс (потребна је претходна инсталација).
  3. Добавляется поле 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
make (правити)
маке инсталл

Добавляем параметры в 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 (скачать собранные бинари можно в разделе Јавност).

При старте PASH-Viewer (начиная с версии 0.4.0) проверяет наличие представления pg_active_session_history и если оно есть, то загружает из него всю накопленную историю и продолжает считывать новые поступающие данные, обновляя график раз в 15 секунд.

Историја активних сесија у ПостгреСКЛ-у - нова екстензија пгсентинел

Извор: ввв.хабр.цом

Додај коментар