๊ฐ๋
DBCP(Database Connection Pool)์ ๋ค์์ HTTP ์์ฒญ์ ๋ํ Thread๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ์์ ๋งํ๋ค. (WAS์ DB ์๋ฒ๊ฐ ์ด์)
Connection Pool์ ์ฌ์ฉํ์ง ์๊ณ WAS์์ DB์๋ฒ์ ์ ๊ทผ์ ์์ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋จ๊ณ
- DB ์๋ฒ ์ ์์ ์ํด JDBC ๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ํ๋ค.
- DB ์ ์ ์ ๋ณด์ DriverManager.getConnection() Method๋ฅผ ํตํด DB Connection ๊ฐ์ฒด๋ฅผ ์ป๋๋ค.
- Connection ๊ฐ์ฒด๋ก ๋ถํฐ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๊ธฐ ์ํ PreparedStatement ๊ฐ์ฒด๋ฅผ ๋ฐ๋๋ค.
- executeQuery๋ฅผ ์ํํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ก ResultSet ๊ฐ์ฒด๋ฅผ ๋ฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
- ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋๋ฉด ์ฒ๋ฆฌ์ ์ฌ์ฉ๋ ๋ฆฌ์์ค๋ค์ closeํ์ฌ ๋ฐํํ๋ค.
์น ์ ํ๋ฆฌ์ผ์ด์ ์ HTTP ์์ฒญ์ ๋ฐ๋ผ Thread๋ฅผ ์์ฑํ๊ฒ ๋๊ณ ๋๋ถ๋ถ์ ๋น์ง๋์ค ๋ก์ง์ DB ์๋ฒ๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ป๊ฒ ๋๋ค. ๋ง์ฝ ์์ ๊ฐ์ด ๋ชจ๋ ์์ฒญ์ ๋ํด DB์ ์์ ์ํ Driver๋ฅผ ๋ก๋ํ๊ณ Connection ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ฐ๊ฒฐํ๋ค๋ฉด ๋ฌผ๋ฆฌ์ ์ผ๋ก DB ์๋ฒ์ ์ง์์ ์ผ๋ก ์ ๊ทผํด์ผ ๋ ๊ฒ์ด๋ค.
์ด๋ฌํ ์ํฉ์์ DB Connection ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ถ๋ถ์ ๋ํ ๋น์ฉ๊ณผ ๋๊ธฐ ์๊ฐ์ ์ค์ด๊ณ , ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๋ํ ๋ถ๋ด์ ์ค์ผ์ ์๋ ๋ฐฉ๋ฒ์ด DBCP(Database Connection Pool)์ด๋ค.
Connection Pool์ ๊ตฌํ์ฒด์ ์ญํ
- WAS๊ฐ ์คํ๋๋ฉด์ ๋ฏธ๋ฆฌ ์ผ์ ๋์ DB Connection ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ Pool ์ด๋ผ๋ ๊ณต๊ฐ์ ์ ์ฅํด ๋๋ค.
- HTTP ์์ฒญ์ ๋ฐ๋ผ ํ์ํ ๋ Pool์์ Connection ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๊ณ ๋ฐํํ๋ค.
- ์ด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก HTTP ์์ฒญ ๋ง๋ค DB Driver๋ฅผ ๋ก๋ํ๊ณ ๋ฌผ๋ฆฌ์ ์ธ ์ฐ๊ฒฐ์ ์ํ Connection ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋น์ฉ์ด ์ค์ด๋ค๊ฒ ๋๋ค.
์์ฑ
Connection Pool๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฐ๋ค์ด ์กด์ฌํ๋๋ฐ ์ด๋ฌํ ๊ฐ๋ค์ DBCP ๊ตฌํ์ฒด๋ฅผ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ์ค์ ํ ์๊ฐ ์๋ค.
Value | Description |
maxActive | ๋์์ ์ฌ์ฉํ ์ ์๋ ์ต๋ ์ปค๋ฅ์ ๊ฐ์ |
maxIdle | Connection Pool์ ๋ฐ๋ฉํ ๋ ์ต๋๋ก ์ ์ง๋ ์ ์๋ ์ปค๋ฅ์ ๊ฐ์ |
minIdle | ์ต์ํ์ผ๋ก ์ ์งํ ์ปค๋ฅ์ ๊ฐ์ |
initialSize | ์ต์ด๋ก getConnection() Method๋ฅผ ํตํด ์ปค๋ฅ์ ํ์ ์ฑ์ ๋ฃ์ ์ปค๋ฅ์ ๊ฐ์ |
- maxActive >= initialSize
- ์ต๋ ์ปค๋ฅ์ ๊ฐ์๋ ์ด๊ธฐ์ ์์ฑํ ์ปค๋ฅ์ ๊ฐ์์ ๊ฐ๊ฑฐ๋ ํฌ๊ฒ ์ค์ ํด์ผ ํ๋ค.
- maxActive = maxIdle
- maxActive ๊ฐ๊ณผ maxIdle ๊ฐ์ ๊ฐ์ ๊ฒ์ด ๋ฐ๋์งํ๋ค.
maxActive ์์ฑ์ ํ์ฉํ์ฌ ์ปค๋ฅ์ ์ ์๋ฅผ ์ ํํ ์ ์๋ค.
10๋ช ์ด ์ฌ์ฉํ๋ ์๋น์ค์ ๊ฐ์๊ธฐ 1000๋ช ์ด ๋์์ ์ ๊ทผ์ ํ๋ ์ํฉ์์ ์ปค๋ฅ์ ํ์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด, 1000๊ฐ์ ํด๋นํ๋ ์์ฒญ๋ง๋ค ์ปค๋ฅ์ ์ ๋ง๋๋๋ผ ์ฅ์ ๊ฐ ์๊ธธ ์ ์๋ค.
์ด๋ฐ ์ํฉ์์ ์ปค๋ฅ์ ํ์ ์ด์ฉํ๋ฉด, ์ปค๋ฅ์ ์ ์ต๋๋ก ๋ง๋ค ์ ์๋ ์ ํ์ด ์๊ธฐ๊ฒ ๋๊ณ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค.
WAS์ Thread ์์ Connection Pool ์์ ๊ด๊ณ
WAS์์ ์ค์ ํด์ผ ํ๋ ๊ฐ์ด ๊ต์ฅํ ๋ง์ง๋ง, ๊ทธ ์ค ๊ฐ์ฅ ์ฑ๋ฅ์ ๋ง์ ์ํฅ์ ์ฃผ๋ ๋ถ๋ถ์ Thread์ Connection Pool์ ๊ฐ์ ์ด๋ค.
์ด๋ค ๊ฐ์ ์ง์ ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ๊ด๋ จ์ด ์๊ธฐ ๋๋ฌธ์, ๋ง์ด ์ฌ์ฉํ๋ฉด ํ ์๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ ์ ํ๊ฒ ๋๊ณ , ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ฒ ์ง์ ํ๋ฉด ์์ฒญ์ ์ฒ๋ฆฌํ์ง ๋ชปํ๊ณ ๋๊ธฐ ํ ์ ๋ฐ์ ์๋ค.
WAS์ Thread๋ Connection Pool์ ๊ฐฏ์๋ณด๋ค ์ฌ์ ์๊ฒ ์ค์ ํ๋ ๊ฒ์ด ์ข๋ค.
์ด์ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๋ชจ๋ ์์ฒญ์ด DB์ ์ ๊ทผํ๋ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
Connection Pool์ ์์คํ ์ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅด์ง๋ง ๋ณดํต 40~50๊ฐ๋ก ์ง์ ํ๋ฉด Thread๋ ์ด๋ณด๋ค 10๊ฐ ์ ๋ ๋ ์ง์ ํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค. ํ์ง๋ง ์ต์ ์ ์ฑ๋ฅ์ ์ํด์๋ ์ค์ ์์ฒญ์ด ์ผ๋ง๋ ๋ค์ด์ค๋์ง ํ์ ํ๋๊ฒ ์ค์ํ๋ฉฐ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์์ ๋งํ๊ฒ ์ฒ๋ผ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ํตํด ์ต์ ํ๋ ๊ฐ์ ๊ตฌํ๋ ๊ฒ์ด๋ค.
์ฐธ๊ณ
- www.holaxprogramming.com/2013/01/10/devops-how-to-manage-dbcp/
- linked2ev.github.io/spring/2019/08/14/Spring-3-%EC%BB%A4%EB%84%A5%EC%85%98-%ED%92%80%EC%9D%B4%EB%9E%80/
'๐CS > DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] ํธ๋์ญ์ (Transaction) (0) | 2021.04.23 |
---|---|
[DB] ์บ์, Redis (0) | 2021.04.18 |
[DB] ์ ๊ทํ (0) | 2021.04.11 |
[DB] N + 1 ๋ฌธ์ (0) | 2021.04.11 |
[DB] Index (1) | 2021.04.04 |
๋๊ธ