ํ์ฌ
๋ณธ์ง์ ์ผ๋ก ์ด๋ ๋จ์ํ pg_stat_activity์ ์ด ๋จ์ ์ค๋ ์ท์ด์ง๋ง ์ค์ํ ์ ์ด ์์ต๋๋ค.
- ์ถ์ ๋ ๋ชจ๋ ์ ๋ณด๋ RAM์๋ง ์ ์ฅ๋๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ์๋น๋์ ๋ง์ง๋ง์ผ๋ก ์ ์ฅ๋ ๋ ์ฝ๋ ์์ ๋ฐ๋ผ ๊ท์ ๋ฉ๋๋ค.
- queryid ํ๋๊ฐ ์ถ๊ฐ๋์์ต๋๋ค - pg_stat_statements ํ์ฅ์ ๋์ผํ queryid์ ๋๋ค(์ฌ์ ์ค์น ํ์).
- top_level_query ํ๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค - ํ์ฌ ์ฟผ๋ฆฌ๊ฐ ํธ์ถ๋ ์ฟผ๋ฆฌ์ ํ ์คํธ(pl/pgsql์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ)
pg_active_session_history ํ๋์ ์ ์ฒด ๋ชฉ๋ก:
์นผ๋ผ | ์ ํ ------+------------ ash_time | ์๊ฐ๋๊ฐ ํฌํจ๋ ํ์์คํฌํ datid | oid ๋ ์ง ์ด๋ฆ | ํ ์คํธ PID | ์ ์ usesysid | oid ์ฌ์ฉ์ ์ด๋ฆ | ํ ์คํธ ์ ํ๋ฆฌ์ผ์ด์ _์ด๋ฆ | ํ ์คํธ ํด๋ผ์ด์ธํธ_์ฃผ์ | ํ ์คํธ ํด๋ผ์ด์ธํธ_ํธ์คํธ ์ด๋ฆ | ํ ์คํธ ํด๋ผ์ด์ธํธ_ํฌํธ | ์ ์ backend_start | ์๊ฐ๋๊ฐ ํฌํจ๋ ํ์์คํฌํ xact_start | ์๊ฐ๋๊ฐ ํฌํจ๋ ํ์์คํฌํ query_start | ์๊ฐ๋๊ฐ ํฌํจ๋ ํ์์คํฌํ state_change | ์๊ฐ๋๊ฐ ํฌํจ๋ ํ์์คํฌํ wait_event_type | ํ ์คํธ wait_event | ํ ์คํธ ์ํ | ํ ์คํธ backend_xid | xid ๋ฐฑ์๋_xmin | xid top_level_query | ํ ์คํธ ์ฟผ๋ฆฌ | ํ ์คํธ ์ฟผ๋ฆฌ ID | bigint 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์ด๋ง๋ค ๊ทธ๋ํ๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
์ถ์ฒ : habr.com