PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ•ฉ์„ฑ

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ•ฉ์„ฑ

์ฒ ํ•™์  ์†Œ๊ฐœ

์•„์‹œ๋‹ค์‹œํ”ผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๋ฟ์ž…๋‹ˆ๋‹ค.

  1. ๋ถ„์„ ๋ฐฉ๋ฒ•์ด๋‚˜ ์ถ”๋ก  ๋ฐฉ๋ฒ•, ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์—์„œ ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ.
  2. ํ•ฉ์„ฑ ๋ฐฉ๋ฒ•์ด๋‚˜ ์œ ๋„ ๋ฐฉ๋ฒ•, ๋˜๋Š” ํŠน์ • ๋ฐฉ๋ฒ•์—์„œ ์ผ๋ฐ˜ ๋ฐฉ๋ฒ•์œผ๋กœ.

"๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ํ–ฅ์ƒ" ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„์„ โ€” ์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ๋ฅผ ๋ณ„๋„์˜ ๋ถ€๋ถ„์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ์ด๋ฅผ ํ•ด๊ฒฐํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์„ ์ „์ฒด์ ์œผ๋กœ ํ–ฅ์ƒ์‹œํ‚ค๋ ค๊ณ  ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ๋ถ„์„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค(์„ฑ๋Šฅ ์‚ฌ๊ณ )
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ์— ๋Œ€ํ•œ ํ†ต๊ณ„ ์ •๋ณด ์ˆ˜์ง‘
  • ๋ณ‘๋ชฉ ํ˜„์ƒ ์ฐพ๊ธฐ
  • ์šฐ๋ฆฌ๋Š” ๋ณ‘๋ชฉ ํ˜„์ƒ์œผ๋กœ ์ธํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณ‘๋ชฉ ํ˜„์ƒ โ€” ์ธํ”„๋ผ(CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ, ๋„คํŠธ์›Œํฌ, OS), ์„ค์ •(postgresql.conf), ์ฟผ๋ฆฌ:

ํ•˜๋ถ€ ๊ตฌ์กฐ: ์—”์ง€๋‹ˆ์–ด์—๊ฒŒ ์˜ํ–ฅ๋ ฅ๊ณผ ๋ณ€ํ™”์˜ ๊ธฐํšŒ๋Š” ๊ฑฐ์˜ ์ œ๋กœ์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ •: ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์€ ์ด์ „ ์‚ฌ๋ก€๋ณด๋‹ค ์•ฝ๊ฐ„ ๋” ํฌ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ํŠนํžˆ ํด๋ผ์šฐ๋“œ์—์„œ๋Š” ์—ฌ์ „ํžˆ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—: ์›€์ง์ผ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ณต๊ฐ„.

ํ•ฉ์„ฑ โ€” ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋  ๊ฒƒ์œผ๋กœ ๊ธฐ๋Œ€ํ•˜๋ฉด์„œ ๊ฐœ๋ณ„ ๋ถ€๋ถ„์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

์„œ์ •์  ์†Œ๊ฐœ ๋˜๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์ด ํ•„์š”ํ•œ ์ด์œ 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์ด ๋ชจ๋‹ˆํ„ฐ๋ง๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์„ฑ๋Šฅ ์‚ฌ๊ณ ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ณ ๊ฐ - "๋ชจ๋“  ๊ฒƒ์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ์ข‹์€ ์ผ์„ ํ•ด์ฃผ์„ธ์š”."
์—”์ง€๋‹ˆ์–ด - "์–ผ๋งˆ๋‚˜ ์•ˆ ์ข‹์€๋ฐ์š”?"
๊ณ ๊ฐ โ€“ โ€œ์ง€๊ธˆ์ด ๊ทธ๋ž˜์š”(ํ•œ ์‹œ๊ฐ„ ์ „, ์–ด์ œ, ์ €๋ฒˆ์—), ์ฒœ์ฒœํžˆโ€
์—”์ง€๋‹ˆ์–ด - "์–ธ์ œ ์ข‹์•˜๋‚˜์š”?"
๊ณ ๊ฐ๋‹˜ โ€“ โ€œ์ผ์ฃผ์ผ(2์ฃผ) ์ „์—๋Š” ๋‚˜์˜์ง€ ์•Š์•˜์–ด์š”. โ€œ(๋‹คํ–‰์ด๋‹ค)
๊ณ ๊ฐ - โ€œ์–ธ์ œ๋Š” ์ข‹์•˜๋Š”์ง€ ๊ธฐ์–ต์ด ์•ˆ ๋‚˜์ง€๋งŒ ์ง€๊ธˆ์€ ๋ณ„๋กœ์˜ˆ์š”โ€ (ํ‰์†Œ ๋‹ต๋ณ€)

๊ฒฐ๊ณผ๋Š” ๊ณ ์ „์ ์ธ ๊ทธ๋ฆผ์ž…๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ•ฉ์„ฑ

๋ˆ„๊ฐ€ ์ฑ…์ž„์„์ง€๊ณ  ๋ฌด์—‡์„ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

์งˆ๋ฌธ์˜ ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ ๋Œ€๋‹ตํ•˜๊ธฐ ๊ฐ€์žฅ ์‰ฌ์šด ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ํ•ญ์ƒ ์ฑ…์ž„์€ DBA ์—”์ง€๋‹ˆ์–ด์—๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„ ์—ญ์‹œ ๋‹ต๋ณ€ํ•˜๊ธฐ ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค - ๋ฌด์—‡์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๊ฒฝ๋กœ 1. ๋ชจ๋“  ๊ฒƒ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ•ฉ์„ฑ

CPU ๋กœ๋“œ, ๋””์Šคํฌ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์ž‘์—… ์ˆ˜, ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ ๋ฐ ์–ด๋А ์ •๋„ ์ž‘๋™ ์ค‘์ธ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์ด ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฉ”๊ฐ€ํ†ค์˜ ๋‹ค์–‘ํ•œ ์นด์šดํ„ฐ.

๊ทธ ๊ฒฐ๊ณผ ์ˆ˜๋งŽ์€ ๊ทธ๋ž˜ํ”„, ํ”ผ๋ฒ— ํ…Œ์ด๋ธ”, ์ง€์†์ ์ธ ์ด๋ฉ”์ผ ์•Œ๋ฆผ์ด ์ƒ์„ฑ๋˜๊ณ  100% ๋ฐ”์œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋™์ผํ•œ ํ‹ฐ์ผ“ ๋ฌถ์Œ์„ ํ•ด๊ฒฐํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ "์ผ์‹œ์ ์ธ ๋ฌธ์ œ"๋ผ๋Š” ํ‘œ์ค€ ๋ฌธ๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.โ€ ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋‘๊ฐ€ ๋ฐ”์˜๊ณ  ํ•ญ์ƒ ๊ณ ๊ฐ์—๊ฒŒ ๋ณด์—ฌ์ค„ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…์ด ๋ณธ๊ฒฉํ™”๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Way 2. ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ์€ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ์—”ํ„ฐํ‹ฐ์™€ ์ด๋ฒคํŠธ๋งŒ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ๋Š” DBA ์—”์ง€๋‹ˆ์–ด
  • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์—”ํ„ฐํ‹ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ๋™์ž‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฐ€์ •์„ ๋ฐ”ํƒ•์œผ๋กœ "์ฒ ํ•™์  ์†Œ๊ฐœ"๊ทœ์น™์ ์ธ ๋ฐ˜๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด"์„œ์ •์  ์†Œ๊ฐœ ๋˜๋Š” ์ด ๋ชจ๋“  ๊ฒƒ์ด ํ•„์š”ํ•œ ์ด์œ โ€œ์ตœ์ ํ™”์™€ ๋ถ„์„์„ ์œ„ํ•ด ๊ฐœ๋ณ„ ์ฟผ๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋ฉฐ, ์ด๋Š” ๊ถ๊ทน์ ์œผ๋กœ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋ฌด๊ฑฐ์šด ์ฟผ๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•˜๋ ค๋ฉด ๋จผ์ € ์ด๋ฅผ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‘ ๊ฐ€์ง€ ์ƒํ˜ธ ๊ด€๋ จ๋œ ์งˆ๋ฌธ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ์–ด๋ ค์šด ์š”์ฒญ์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ์š”์ฒญ
  • ์–ด๋ ค์šด ๊ฒ€์ƒ‰์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•.

๋ถ„๋ช…ํžˆ ๋ฌด๊ฑฐ์šด ์ฟผ๋ฆฌ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋งŽ์€ OS ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์ธ ๋ฌด๊ฑฐ์šด ์ฟผ๋ฆฌ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋„˜์–ด๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.

PostgreSQL์—๋Š” ์–ด๋–ค ์ฟผ๋ฆฌ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

Oracle์— ๋น„ํ•ด ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ์—†์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ญ”๊ฐ€๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ•ฉ์„ฑ

PG_STAT_STATEMENTS

ํ‘œ์ค€ ํ™•์žฅ pg_stat_statements๋Š” PostgreSQL์—์„œ ๊ณผ๋„ํ•œ ์ฟผ๋ฆฌ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์„ค์น˜ํ•˜๋ฉด ๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ณด๊ธฐ๊ฐ€ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋‚˜ํƒ€๋‚˜๋ฉฐ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ ๊ตฌ์ถ•์„ ์œ„ํ•œ ๋Œ€์ƒ pg_stat_statements ์—ด:

  • ์ฟผ๋ฆฌID ์—ฐ์‚ฐ์ž์˜ ๊ตฌ๋ฌธ ๋ถ„์„ ํŠธ๋ฆฌ์—์„œ ๊ณ„์‚ฐ๋œ ๋‚ด๋ถ€ ํ•ด์‹œ ์ฝ”๋“œ
  • ์ตœ๋Œ€ ์‹œ๊ฐ„ ๋ช…๋ น๋ฌธ์— ์†Œ์š”๋œ ์ตœ๋Œ€ ์‹œ๊ฐ„(๋ฐ€๋ฆฌ์ดˆ)

์ด ๋‘ ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ํ†ต๊ณ„๋ฅผ ์ถ•์ ํ•˜๊ณ  ํ™œ์šฉํ•จ์œผ๋กœ์จ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

pg_stat_statements๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PostgreSQL ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐฉ๋ฒ•

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ•ฉ์„ฑ

์ฟผ๋ฆฌ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธก - pg_stat_statements ๋ณด๊ธฐ
์˜†์—์„œ ์„œ๋ฒ„ ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค - ์ผ๋ จ์˜ bash ์Šคํฌ๋ฆฝํŠธ์™€ ์„œ๋น„์Šค ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.

1๋‹จ๊ณ„ - ํ†ต๊ณ„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

cron ๋ชจ๋‹ˆํ„ฐ๋ง ํ˜ธ์ŠคํŠธ์—์„œ๋Š” ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ pg_stat_statements ๋ณด๊ธฐ ๋‚ด์šฉ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ pg_stat_history ํ…Œ์ด๋ธ”๋กœ ๋ณต์‚ฌํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ •๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์„ฑ๋Šฅ ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ง€ํ‘œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ณ„ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ธฐ๋ก์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

2๋‹จ๊ณ„ - ์„ฑ๊ณผ ์ง€ํ‘œ ์„ค์ •

์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)์— ์‹คํ–‰์ด ๊ฐ€์žฅ ์ค‘์š”/์ค‘์š”ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๊ฐ๊ณผ ํ•ฉ์˜ํ•˜์—ฌ queryid ๋ฐ max_time ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ ์ง€ํ‘œ ๊ฐ’์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ - ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์ž‘

  1. ๋ชจ๋‹ˆํ„ฐ๋ง ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๋ฉ”ํŠธ๋ฆญ์˜ max_time ๊ฐ’์„ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ pg_stat_statements ๋ทฐ ๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ ๊ตฌ์„ฑ๋œ ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐ’์ด ๋ฉ”ํŠธ๋ฆญ ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด ๊ฒฝ๊ณ ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(ํ‹ฐ์ผ“ ์‹œ์Šคํ…œ์˜ ์‚ฌ๊ณ ).

์ถ”๊ฐ€ ์˜ต์…˜ 1

์ฟผ๋ฆฌ ๊ณ„ํš ๊ธฐ๋ก

ํ›„์† ์„ฑ๋Šฅ ์‚ฌ๊ณ  ํ•ด๊ฒฐ์„ ์œ„ํ•ด์„œ๋Š” ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณ„ํš ๋ณ€๊ฒฝ ๋‚ด์—ญ์„ ๋ณด์œ ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ข‹์Šต๋‹ˆ๋‹ค.

log_query ์„œ๋น„์Šค ํ…Œ์ด๋ธ”์€ ๊ธฐ๋ก์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋กœ๋“œ๋œ PostgreSQL ๋กœ๊ทธ ํŒŒ์ผ์„ ๋ถ„์„ํ•  ๋•Œ ํ…Œ์ด๋ธ”์ด ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ๋กœ๊ทธ ํŒŒ์ผ์—๋Š” pg_stat_statements ๋ทฐ์™€ ๋‹ฌ๋ฆฌ ์ •๊ทœํ™”๋œ ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ์‹คํ–‰ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์ด ํฌํ•จ๋œ ์ „์ฒด ํ…์ŠคํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ์š”์ฒญ ์‹œ๊ฐ„ ๋ฐ ๊ธฐ๊ฐ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ˜„์žฌ ์‹คํ–‰ ๊ณ„ํš๋„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„.

์ถ”๊ฐ€ ์˜ต์…˜ 2

์ง€์†์ ์ธ ์„ฑ๋Šฅ ๊ฐœ์„  ํ”„๋กœ์„ธ์Šค

์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ณ„ ์ฟผ๋ฆฌ ๋ชจ๋‹ˆํ„ฐ๋ง์€ ๊ฐœ๋ณ„ ์ฟผ๋ฆฌ์— ๋Œ€ํ•ด์„œ๋งŒ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ „์ฒด์˜ ์ง€์†์ ์ธ ์„ฑ๋Šฅ ๊ฐœ์„  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐฉ๋ฒ•์„ ํ™•์žฅํ•˜๊ณ  ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ์ถ”๊ฐ€ ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ตœ๊ทผ์—
  • ๊ธฐ์ค€๊ธฐ๊ฐ„ ๋™์•ˆ

์Šคํฌ๋ฆฝํŠธ๋Š” ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ pg_stat_statements ๋ณด๊ธฐ์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๊ณ  max_time ๊ฐ’์„ ํ‰๊ท  max_time ๊ฐ’๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ๋Š” ๋งˆ์ง€๋ง‰ ๋‚ ์— ๋Œ€ํ•ด, ๋‘ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” ์„ ํƒํ•œ ๊ธฐ๊ฐ„(๊ธฐ์ค€)์— ๋Œ€ํ•ด ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์š”์ฒญ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ๋ณด๊ณ ์„œ๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋ถ„์„ํ•˜์ง€ ์•Š๊ณ ๋„ ์ž๋™์œผ๋กœ ๊ฒฝ๊ณ ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํ•ฉ์„ฑ์ด ๊ทธ๊ฒƒ๊ณผ ๋ฌด์Šจ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์„ค๋ช…๋œ ์ ‘๊ทผ ๋ฐฉ์‹์—์„œ๋Š” ํ•ฉ์„ฑ ๋ฐฉ๋ฒ•์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์‹œ์Šคํ…œ์˜ ๊ฐœ๋ณ„ ๋ถ€๋ถ„์„ ๊ฐœ์„ ํ•˜์—ฌ ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜ํ•ด ์‹คํ–‰๋˜๋Š” ์ฟผ๋ฆฌ - ์ถ”์ƒ
  • ์ˆ˜์ •๋œ ์š”์ฒญ - ๋Œ€์กฐ
  • ์‹œ์Šคํ…œ ์ƒํƒœ ๋ณ€๊ฒฝ - ํ•ฉ์„ฑ

PostgreSQL ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ•ฉ์„ฑ

์‹œ์Šคํ…œ ๊ฐœ๋ฐœ

  • pg_stat_activity ์‹œ์Šคํ…œ ๋ณด๊ธฐ์— ๋Œ€ํ•œ ๊ธฐ๋ก์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ˆ˜์ง‘๋œ ํ†ต๊ณ„ ํ™•์žฅ
  • ์ฟผ๋ฆฌ์— ์ฐธ์—ฌํ•œ ๊ฐœ๋ณ„ ํ…Œ์ด๋ธ”์˜ ํ†ต๊ณ„์— ๋Œ€ํ•œ ์ด๋ ฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ˆ˜์ง‘ ํ†ต๊ณ„ ํ™•์žฅ
  • AWS ํด๋ผ์šฐ๋“œ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ๊ณผ ํ†ตํ•ฉ
  • ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋ญ”๊ฐ€ ์ƒ๊ฐํ•ด ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ...

์ถœ์ฒ˜ : habr.com

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster