Гісторыя актыўных сесій у PostgreSQL - новае пашырэнне pgsentinel

кампанія pgsentinel выпусціла аднайменнае пашырэнне pgsentinel (рэпазітар github), якое дадае ў PostgreSQL прадстаўленне pg_active_session_history - гісторыю актыўных сесій (па аналогіі з араклавай v $ active_session_history).

У сутнасці, гэта проста штосекундныя здымкі з pg_stat_activity, але ёсць важныя моманты:

  1. Уся назапашаная інфармацыя захоўваецца толькі ў аператыўнай памяці, а спажываны аб'ём памяці рэгулюецца колькасцю апошніх захаваных запісаў.
  2. Дадаецца поле queryid - той самы queryid з пашырэння pg_stat_statements (патрабуецца папярэдняя ўстаноўка).
  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
рабіць
зрабіць ўстаноўку

Дадаем параметры ў 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 секунд.

Гісторыя актыўных сесій у PostgreSQL - новае пашырэнне pgsentinel

Крыніца: habr.com

Дадаць каментар