рдлрд░реНрдо
рдореВрд▓рдд:, рд╣реЗ pg_stat_activity рдордзреАрд▓ рдлрдХреНрдд рд╕реЗрдХрдВрдж-рдмрд╛рдп-рд╕реЗрдХрдВрдж рд╕реНрдиреЕрдкрд╢реЙрдЯ рдЖрд╣реЗрдд, рдкрд░рдВрддреБ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдореБрджреНрджреЗ рдЖрд╣реЗрдд:
- рд╕рд░реНрд╡ рдЬрдорд╛ рдХреЗрд▓реЗрд▓реА рдорд╛рд╣рд┐рддреА рдХреЗрд╡рд│ RAM рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ рдЖрдгрд┐ рдореЗрдорд░реА рд╡рд╛рдкрд░рд▓реЗрд▓реА рд░рдХреНрдХрдо рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд░реЗрдХреЙрд░реНрдбрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрджреНрд╡рд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ.
- queryid рдлреАрд▓реНрдб рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ - pg_stat_statements рдПрдХреНрд╕реНрдЯреЗрдВрд╢рди рдордзреАрд▓ рд╕рдорд╛рди queryid (рдкреВрд░реНрд╡-рд╕реНрдерд╛рдкрдирд╛ рдЖрд╡рд╢реНрдпрдХ).
- top_level_query рдлреАрд▓реНрдб рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ - рдХреНрд╡реЗрд░реАрдЪрд╛ рдордЬрдХреВрд░ рдЬрд┐рдереВрди рд╕рдзреНрдпрд╛рдЪреА рдХреНрд╡реЗрд░реА рдХреЙрд▓ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ (pl/pgsql рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕)
pg_active_session_history рдлреАрд▓реНрдбрдЪреА рд╕рдВрдкреВрд░реНрдг рдпрд╛рджреА:
рд╕реНрддрдВрдн | рдкреНрд░рдХрд╛рд░ ------------------+-------------------------------------- рд░рд╛рдЦ_рд╡реЗрд│ | рдЯрд╛рдЗрдо рдЭреЛрди рд╕рд╣ рдЯрд╛рдЗрдорд╕реНрдЯреЕрдореНрдк рджрд┐рдирд╛рдВрдХ | oid datname | рдордЬрдХреВрд░ pid | рдкреВрд░реНрдгрд╛рдВрдХ useysid | oid рд╡рд╛рдкрд░рдХрд░реНрддрд╛рдирд╛рд╡ | рдордЬрдХреВрд░ рдЕрд░реНрдЬ_рдирд╛рд╡ | рдордЬрдХреВрд░ client_addr | рдордЬрдХреВрд░ client_hostname | рдордЬрдХреВрд░ рдЧреНрд░рд╛рд╣рдХ_рдкреЛрд░реНрдЯ | рдкреВрд░реНрдгрд╛рдВрдХ backend_start | рдЯрд╛рдЗрдо рдЭреЛрди рд╕рд╣ рдЯрд╛рдЗрдорд╕реНрдЯреЕрдореНрдк xact_start | рдЯрд╛рдЗрдо рдЭреЛрди рд╕рд╣ рдЯрд╛рдЗрдорд╕реНрдЯреЕрдореНрдк query_start | рдЯрд╛рдЗрдо рдЭреЛрди рд╕рд╣ рдЯрд╛рдЗрдорд╕реНрдЯреЕрдореНрдк рд░рд╛рдЬреНрдп_рдмрджрд▓ | рдЯрд╛рдЗрдо рдЭреЛрди рд╕рд╣ рдЯрд╛рдЗрдорд╕реНрдЯреЕрдореНрдк рдкреНрд░рддреАрдХреНрд╖рд╛_рдЗрд╡реНрд╣реЗрдВрдЯ_рдкреНрд░рдХрд╛рд░ | рдордЬрдХреВрд░ рдкреНрд░рддреАрдХреНрд╖рд╛_рдЗрд╡реНрд╣реЗрдВрдЯ | рдордЬрдХреВрд░ рд░рд╛рдЬреНрдп | рдордЬрдХреВрд░ backend_xid | xid backend_xmin | xid top_level_query | рдордЬрдХреВрд░ рдХреНрд╡реЗрд░реА | рдордЬрдХреВрд░ queryid | рдореЛрдард╛ backend_type | рдордЬрдХреВрд░
рд╕реНрдерд╛рдкрдиреЗрд╕рд╛рдареА рдЕрджреНрдпрд╛рдк рдХреЛрдгрддреЗрд╣реА рддрдпрд╛рд░ рдкреЕрдХреЗрдЬ рдирд╛рд╣реА. рд╕реНрддреНрд░реЛрдд рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рд╛ рдЖрдгрд┐ рд╕реНрд╡рддрдГ рд▓рд╛рдпрдмреНрд░рд░реА рдПрдХрддреНрд░ рдХрд░рд╛ рдЕрд╕реЗ рд╕реБрдЪрд╡рд▓реЗ рдЬрд╛рддреЗ. рддреБрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рдердо рддреБрдордЪреНрдпрд╛ рд╕рд░реНрд╡реНрд╣рд░рд╕рд╛рдареА тАЬ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 = рд╕рд░реНрд╡# рдореЗрдорд░реАрдордзреНрдпреЗ рдареЗрд╡рд▓реЗрд▓реНрдпрд╛ рдЕрд▓реАрдХрдбреАрд▓ рд░реЗрдХреЙрд░реНрдбрдЪреА рд╕рдВрдЦреНрдпрд╛
pgsentinel_ash.max_entries = 10000
PostgreSQL рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░рд╛ рдЖрдгрд┐ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рддрдпрд╛рд░ рдХрд░рд╛:
рд╡рд┐рд╕реНрддрд╛рд░ pgsentinel рддрдпрд╛рд░ рдХрд░рд╛;
рд╕рдВрдЪрд┐рдд рдорд╛рд╣рд┐рддреА рдЖрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рджреЗрдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рдЬрд╕реЗ рдХреА:
- рддреБрдореНрд╣реА рдХреЛрдгрддреНрдпрд╛ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рддреНрд░рд╛рдВрд╡рд░ рд╕рд░реНрд╡рд╛рдзрд┐рдХ рд╡реЗрд│ рдШрд╛рд▓рд╡рд▓рд╛?
- рдХреЛрдгрддреА рд╕рддреНрд░реЗ рд╕рд░реНрд╡рд╛рдд рд╕рдХреНрд░рд┐рдп рд╣реЛрддреА?
- рдХреЛрдгрддреНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рд╕рд░реНрд╡рд╛рдд рд╕рдХреНрд░рд┐рдп рд╣реЛрддреНрдпрд╛?
рддреБрдореНрд╣реА рдЕрд░реНрдерд╛рддрдЪ, SQL рдХреНрд╡реЗрд░реА рд╡рд╛рдкрд░реВрди рдпрд╛ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рдЙрддреНрддрд░реЗ рдорд┐рд│рд╡реВ рд╢рдХрддрд╛, рдкрд░рдВрддреБ рдорд╛рдЙрд╕рд╕рд╣ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╡реЗрд│реЗрдЪреЗ рдЕрдВрддрд░рд╛рд▓ рд╣рд╛рдпрд▓рд╛рдЗрдЯ рдХрд░реВрди рдЧреНрд░рд╛рдлрд╡рд░ рд╣реЗ рджреГрд╢реНрдпрдорд╛рдирдкрдгреЗ рдкрд╛рд╣рдгреЗ рдЕрдзрд┐рдХ рд╕реЛрдпреАрдЪреЗ рдЖрд╣реЗ. рдЖрдкрдг рд╣реЗ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд╕рд╣ рдХрд░реВ рд╢рдХрддрд╛
рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛рдирд╛, PASH-Viewer (рдЖрд╡реГрддреНрддреА 0.4.0 рдкрд╛рд╕реВрди рд╕реБрд░реВ рд╣реЛрдгрд╛рд░реЗ) pg_active_session_history рджреГрд╢реНрдпрд╛рдЪреА рдЙрдкрд╕реНрдерд┐рддреА рддрдкрд╛рд╕рддреЗ рдЖрдгрд┐ рддреЗ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рддреЗ рддреНрдпрд╛рддреВрди рд╕рдВрдкреВрд░реНрдг рдЬрдорд╛ рдХреЗрд▓реЗрд▓рд╛ рдЗрддрд┐рд╣рд╛рд╕ рд▓реЛрдб рдХрд░рддреЗ рдЖрдгрд┐ рдирд╡реАрди рдпреЗрдгрд╛рд░рд╛ рдбреЗрдЯрд╛ рд╡рд╛рдЪрдгреЗ рд╕реБрд░реВ рдареЗрд╡рддреЗ, рджрд░ 15 рд╕реЗрдХрдВрджрд╛рдВрдиреА рдЖрд▓реЗрдЦ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рддреЗ.
рд╕реНрддреНрд░реЛрдд: www.habr.com