์ฐ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์์ HikariCP ๊ฐ ๋ญ์ง ๊ฐ๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด.
์์ ๊ธ์ ์ฐธ์กฐํ๋๋ก ํ์.
HikariCP ์ต์
ํด๋น ๋ฌธ์์ Frequently used ๋ฅผ ๋ฒ์ญํ์๋ค. ๊ณต์ ๋ฌธ์์ด๋ ์ฐธ๊ณ .
Frequently used
โป ์๊ฐ ๋จ์๋ ms ๊ธฐ์ค.
Option | Discription. |
autoCommit | auto-commit ์ค์ - default: true |
connectionTimeout | pool์์ connection์ ๋ฐ์์ค๊ธฐ ์ ๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์ต๋ ์๊ฐ. ํ์ฉ ๊ฐ๋ฅํ ๋๊ธฐ ์๊ฐ์ ์ด๊ณผํ๋ฉด SQL Exception์ ๋ณด๋ธ๋ค. - ์ค์ ๊ฐ๋ฅํ ์ต์ ์๊ฐ: 250ms - default: 30000 (30s) |
idleTimeout | pool์ ์ผ์ ์ํ๋ ์ปค๋ฅ์
์ ์ ์งํ๋ ์๊ฐ. ์ด ์ต์ ์ minimumIdle์ด mazimumPoolSize ๋ณด๋ค ์๊ฒ ์ค์ ๋์ด ์์ ๋๋ง ์ค์ . pool์์ ์ ์งํ๋ ์ต์ ์ปค๋ฅ์ ์ ์๋ minimumIdle. - ์ต์ ๊ฐ: 10000ms - default: 600000ms (10min) |
maxLifetime | ์ปค๋ฅ์
ํ์์ ์ด์ ์์ ์ ์๋ ์ปค๋ฅ์
์ ์ต๋ ์๋ช
์๊ฐ. ์ฌ์ฉ์ค์ธ ์ปค๋ฅ์ ์ maxLifetime์ ์๊ด ์์ด ์ ๊ฑฐ๋์ง ์๊ณ , ์ฌ์ฉ ์ค์ด์ง ์์ ๋๋ง ์ ๊ฑฐ. 0์ผ๋ก ์ค์ ํ๋ฉด infinite lifetime์ด ์ ์ฉ.(idleTimeout ์ค์ ๊ฐ์ ๋ฐ๋ผ ์ ์ฉ idleTimeout ๊ฐ์ด ์ค์ ๋์ด ์์ ๊ฒฝ์ฐ 0์ผ๋ก ์ค์ ํด๋ ๋ฌดํ lifetime ์ ์ฉ ์๋จ.) pool ์ ์ฒด๊ฐ ์๋๋ผ connection ๋จ์๋ก ์ ์ฉ์ด ๋จ. → pool์์ ๋๋์ผ๋ก connection์ด ์ ๊ฑฐ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํจ. * ๋ฌด์กฐ๊ฑด ์ค์ ํด์ผ ํ๋ ๊ฐ์ผ๋ก, DB๋ ์ธํ๋ผ์ ์ ์ฉ๋ connection time limit ๋ณด๋ค ์์์ผ ํจ. - default: 1800000 (30min) |
connectionTestQuery | *JDBC4 ๋๋ผ์ด๋ฒ๋ฅผ ์ง์ํ๋ค๋ฉด ์ด ์ต์
์ ๋ฏธ์ค์ ์ถ์ฒ connection pool ์์ connection์ ํ๋ํ๊ธฐ ์ ์ ์ ํจํ ์ปค๋ฅ์ ์ธ์ง ํ์ธํ๊ธฐ ์ํ์ฌ vaild ์ฟผ๋ฆฌ๋ฅผ ๋์ง๋ ๋ฐ์ ์ฌ์ฉ๋๋ ์ฟผ๋ฆฌ. JDBC4 ๋๋ผ์ด๋ฒ๋ฅผ ์ง์ํ์ง ์๋ ํ๊ฒฝ์์ ์ด ๊ฐ์ ์ค์ ํ์ง ์์ ๊ฒฝ์ฐ error ๋ ๋ฒ ๋ก๊ทธ๋ฅผ ๋ฑ๋. |
minimumIdle | ์๋ฌด๋ฐ ์ผ์ ํ์ง ์์๋ ์ ์ด๋ ์ด ์ต์
์ ์ค์ ๊ฐ size๋ก ์ปค๋ฅ์
์ ์ ์งํ๋ ์ค์ . ์ต์ ์ ์ฑ๋ฅ๊ณผ ์๋ต์ฑ์ ์๊ตฌํ๋ค๋ฉด ์ด ๊ฐ์ ์ค์ ํ์ง ์๋ ๊ฒ์ด ์ข์. - default: same as maximumPoolSize |
maximumPoolSize | pool์ ์ ์ง ์ํฌ ์ ์๋ ์ต๋ ์ปค๋ฅ์
์. pool์ ์ปค๋ฅ์ ์๊ฐ ์ต์ ๊ฐ์ ๋๋ฌํ๊ฒ ๋๋ฉด idle์ธ ์ํ๋ ์กด์ฌํ์ง ์๋๋ค. - default: 10 |
poolName | ๋ก๊น
์ด๋ JMX management console์ ํ์ ๋๋ pool์ ์ด๋ฆ. - default: auto-generated |
initializationFailTimeout | pool์์ connection์ ์ด๊ธฐํ ํ ๋ ์ฑ๊ณต์ ์ผ๋ก ์ํํ ์ ์์ ๊ฒฝ์ฐ ๋น ๋ฅด๊ฒ ์คํจํ๋๋ก ํด์ฃผ๋ ์ต์ . |
readOnly | pool์์ ์ปค๋ฅ์
์ ํ๋ํ ๋ real-Only ๋ชจ๋๋ก ๊ฐ์ ธ์จ๋ค. connection์ด read-Only๋ก ์ค์ ๋์ด ์์ผ๋ฉด ๋ช๋ช์ ์ฟผ๋ฆฌ๋ค์ด ์ต์ ํ ๋จ. (๋ช๋ช DB๋ read-only ๋ชจ๋๋ฅผ ์ง์ํ์ง ์์ผ๋ ์ฐธ๊ณ .) - default: false |
driverClassName | HikariCP๋ jdbcUrl์ ์ฐธ์กฐํ์ฌ ์๋์ผ๋ก driver๋ฅผ ์ค์ ํ๋ ค๊ณ ์๋ → ๋ช๋ช ์ค๋๋ driver๋ค์ driverClassName์ ๋ช
์ํ ํด์ผํจ. * ์ด๋ค ์๋ฌ ๋ฉ์์ง๊ฐ ๋ช ๋ฐฑํ๊ฒ ํ์ ๋์ง์๋๋ค๋ฉด ์๋ต ๊ฐ๋ฅ. |
validationTimeout | valid ์ฟผ๋ฆฌ๋ฅผ ํตํ์ฌ ์ปค๋ฅ์
์ด ์ ํจํ์ง ๊ฒ์ฌํ ๋ ์ฌ์ฉ๋๋ timeout. - ์ต์ ๊ฐ: 250ms - default: 5000ms |
leakDetectionThreshold | ์ปค๋ฅ์
์ด ๋์ log ๋ฉ์ธ์ง๊ฐ ๋์ค๊ธฐ ์ ์ connection์ ๊ฒ์ฌํ์ฌ pool์์ connection์ ๋ด๋ณด๋ผ ์ ์๋ ์๊ฐ. * 0์ผ๋ก ์ค์ ํ๋ฉด leak detection์ ์ด์ฉํ์ง ์๋๋ค. - ์ต์ ๊ฐ: 2000ms - default: 0 |
MySql ์ ๊ฒฝ์ฐ๋ ๊ณต์ ๋ฌธ์์ ์์ ์ฑ๋ฅ ํ์ด ๋ณ๋๋ก ์ค๋ช ๋์ด ์๋๋ฐ..
๋ค๋ฅธ DB์ ๊ฒฝ์ฐ์๋ ์๋ค..
ํ๊ตญ์ ํ์ฌ๋ค์ ๋๋ถ๋ถ mssql, oracle ์ ๋ง์ด ์ฌ์ฉํ ํ ๋ฐ ๋ง์ด๋ค.
๊ทธ๋ฌ๋ฉด ์ฐ๋ฆฌ๋ ์ด๋ค ์ต์ ๋ค์ ์ฒดํฌํด๋ด์ผ ํ ๊น?
์ฑ๋ฅ ์ต์ ํ
1. ์ต๋ ์ปค๋ฅ์ ๊ฐ์ - mazimumPoolSize
connection pool์ด ์ ๊ณตํ ์ ์๋ ์ต๋ ์ปค๋ฅ์ ์ ๊ฐ์.
(์ฌ์ฉ ์ค์ธ Connection๊ณผ ์ ํด ์ปค๋ฅ์ ์ ํฉ์น ๊ฐ์ ์๋ฏธํจ)
์ค์ ์ ์์. ๋ชฉํ TPS ๊ฐ์ด ํ์.
์ต๋ TPS = 1๊ฐ์ connection์ ์ด๋น ์ฒ๋ฆฌ ์์ฒญ ๊ฐ์ * ๋์ connection ๊ฐ์
๋์ connection ๊ฐ์
= ์ต๋ TPS / 1๊ฐ ์ปค๋ฅ์ ์ ์ด๋น ์์ฒญ ์ฒ๋ฆฌ ๊ฐ์
= ์ต๋ TPS / (1์ด / ์ฟผ๋ฆฌ ์คํ ์๊ฐ)
์ต๋ ๊ฐ์ ๊ณ ๋ ค ์ฌํญ
slowQuery(ํ๊ท ์ด์์ผ๋ก ์คํ ์๊ฐ์ด ํ๋ ๊ฐ์๋ ๋น์จ ๊ฒํ .) ๋ฅผ ์ก์์ผํ๋ค.
2. ์ต๋ ์ปค๋ฅ์ ๋๊ธฐ ์๊ฐ - ConnectionTimeOut
ํ์์ ์ปค๋ฅ์ ์ ๊ตฌํ๊ธฐ ์ํด ๋๊ธฐํ๋ ์๊ฐ.
์ต๋ ์ปค๋ฅ์ ๋งํผ ์ฌ์ฉ ์ค์ connection์ ๊ฐ์ ธ์ค๋ ค๊ณ ํ ๋ ๋๊ธฐํ๋ ์๊ฐ.
๊ธฐ๋ณธ ๊ฐ์ผ๋ก ์ค์ ํด๋๋ฉด 30์ด๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํ๋ค.
๋ฐ๋ผ์ ๊ธฐ๋ณธ ๊ฐ ๋์ ์ 0.5~3์ด ์ด๋ด๋ก ์ค์ ํ๊ณ , ์ฐจ๋ผ๋ฆฌ ์ค๋ฅ ํ๋ฉด์ด๋ผ๋ ์๋ต ์์ผ์ฃผ๋ ๊ฒ ๋ซ๋ค.
3. ์ปค๋ฅ์ ์ต๋ ์ ์ง ์๊ฐ - maxLifeTime
์ปค๋ฅ์ ์ ์์ฑํ ์ดํ์ ์ด ์๊ฐ์ด ์ง๋๋ฉด ์ปค๋ฅ์ ์ ๋ซ๊ณ , ํ์์ ์ ๊ฑฐํ ๋ค ์ปค๋ฅ์ ์ ์๋ก ์์ฑํจ.
๊ธฐ๋ณธ ๊ท์น: ๋คํธ์ํฌ๋ DB ๊ด๋ จ ์ค์ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ ์ฌ์ฉํ๋ค.
- ๋คํธ์ํฌ ์ฅ๋น์ ์ต๋ TCP ์ปค๋ฅ์ ์ ์ง ์๊ฐ
๋ง์ฝ์ ์ด ๊ฐ์ด ๊ด๋ จ ์ค์ ๊ฐ๋ณด๋ค ํฌ๋ฉด ์ด๋ฏธ ์ ํจํ์ง ์์ ์ปค๋ฅ์ ์ด pool์ ๋จ๊ฒ ๋๋ค.
์์ฒญ์ด ์ ํจํ์ง ์์ connection์ ๋ฐ์์ฌ ๊ฒฝ์ฐ ์ ํจ์ฑ ๊ฒ์ฆ ๊ณผ์ ์ค์ ์ปค๋ฅ์ ์ ์๋ก ์์ฑํ๊ฒ ๋๊ณ ,
ํธ๋ํฝ์ด ๋ฌผ๋ฆฌ๋ ์์ ์ธ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ์ ํ ๋๋ค.
4. ์ปค๋ฅ์ ํ์ธ ์ฃผ๊ธฐ - keepAliveTime
์ปค๋ฅ์ ์ด ์ด์์๋์ง๋ฅผ ํ์ธํ๋ ์ฃผ๊ธฐ
Idle ์ปค๋ฅ์ ์ ๋ํด ์ปค๋ฅ์ ํ์ธ, ์ ํจํ์ง ์๋ ์ปค๋ฅ์ ํ์์ ์ ๊ฑฐํ ๋ค ์ปค๋ฅ์ ์ ์๋ก ์์ฑ ...
๊ธฐ๋ณธ ๊ท์น: ๋คํธ์ํฌ๋ DB์ ๊ด๋ จ ์ค์ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ ์ฌ์ฉํ๋ค.
- ๋คํธ์ํฌ ์ฅ๋น์ ์ต๋ TCP ์ปค๋ฅ์ ์ ์ง ์๊ฐ
5. ์ต์ ์ ํด ์ปค๋ฅ์ - minimumIdle
ํ์์ ์ ์งํ ์ต์ ์ ํด ์ปค๋ฅ์ ๊ฐ์
๊ธฐ๋ณธ ๊ฐ์ maximumPoolSize ์ ๋์ผํ๊ณ HikatiCP๋ ์ด ๊ฐ์ ๋ฐ๊พธ์ง ์๋ ๊ฒ์ ๊ถ์ฅ.
์ฉ๋๋ ํธ๋ํฝ์ด ์ ์ ์๊ฐ๋์ DB ์์ ์ฌ์ฉ์ ์ค์ด๊ธฐ ์ํจ์ด๋ค.
์ฑ๋ฅ ํ์ธ ํด์ jMeter ๋ฅผ ์ฌ์ฉํ์๋ค..
๋๊ตฐ๊ฐ ๋ณผ ์ฝ๋๋ฅผ ์ํ์ฌ...
์์ ํ๋ฉด์ ์ฃผ์์ ์ผ๊ธ์ผ๊ธ ๋ฌ์๋๋๋ก ํ์.