toss-slash-22
Java Native Memeory Leak ์์ธ์ ์ฐพ์์
system.log์์ ๋ฐ์ํ๋ OOM Killer ์ ์ฌ๋์ผ๋ก ์ฐ๋
OOM Killer?
์ ์ฒด ์์คํ ์์ ์ฑ์ ์ํด, ํฌ์ํ ์์ (ํ๋ก์ธ์ค) ๋ฅผ ์ ํํ๋ ๊ฒ.
์ผ๋ฐ์ ์ผ๋ก Java๋ก ์๋น์คํ๊ณ ์์ผ๋ฉด, OS์์ Java Process๋ฅผ ์ฃฝ์ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
Java Max Heap Size ๊ฐ 1.5GB์ธ๋ฐ.. Java ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ ๋ฉ๋ชจ๋ฆฌ๊ฐ 4GB
2.5GB๋ ์ด๋์ ์ฌ์ฉ๋๊ฒ?
์ค์ ์ฌ์ฉ๋ ์ธก๋ฉ
Native Memeory Leak
์์ ์์ธ
์๋ํ๋ ๋ฐฉ๋ฒ
C2 Complier
Java ํ์ผ ์ปดํ์ผ ์ class ํ์ผ ์๊น
classํ์ผ์ OS๊ฐ ์ดํดํ๊ธฐ ์ํด์๋ ๊ธฐ๊ณ์ด๋ก ์ปดํ์ผํด์ผ ํ๋๋ฐ ์ด ์ญํ ์ JIT Complier ๊ฐ ํ๊ฒ๋จ.
JIT Complier์ ๋ ๋ฒจ์ 0~4 ๋จ๊ณ๋ก ์งํํ๋๋ฐ, ์ด ์ค ๋ง์ง๋ง ๋จ๊ณ ํด๋น ํ๋ ๊ฒ์ด C2 Complier
C1 Complier๋ ๋น ๋ฅด๊ฒ ์ปดํ์ผ๋๊ธฐ ์ํด ์ฌ์ฉ (Client Complier)
C2 ๋ Server Complier๋ก, ๊ตฌ๋์๊ฐ์ ๋๋ฆฌ์ง๋ง, JIT Complier์ ์ต์ ํ๋ฅผ ๋ง์ดํ์ฌ์ ๋น ๋ฅด๊ฒ ์ฐ์ฐํ ๋ ์ฌ์ฉ๋จ.
๊ทธ๋์ ์๋ฒ์์ ๋ง์ด ์ฌ์ฉํจ
TiredStopAtLevel์ด๋ผ๋ ์ต์ ์ ํตํด Java์์๋ Complier ๋ ๋ฒจ์ ์ค์ ํ ์ ์์.
ํด๊ฒฐ
์ฐธ๊ณ
https://www.youtube.com/watch?v=w4fWgLgop5U
ํ ์ค์ฆ๊ถ ์ค์๊ฐ ์์ธ ์ ์ฉ๊ธฐ
WebSocket
๋น์ ์์ ์ด๋ฉด, REST API ์ฌ์ฉ (Polling API)
์ค์๊ฐ ์์ธ, ์ญ๋์ !
๋ง๋ถ๋ฆฌ ์๊ฑด์ ๊ณ ๋ คํ ์ธํ๋ผ ๊ตฌ์กฐ
๋ง๋ถ๋ฆฌ ์๊ฑด
ํด๋ผ์ด์ธํธ๊ฐ ์ฆ๊ถ์ฌ ์๋ฒ์ ์ง์ ์ ์ํด์ ์๋๊ณ , ์น์๋ฒ(DMZ) ๋ฅผ ๊ฒฝ์ ํด์ผํจ.
ํ ์ค์์๋ WebSocket ์๋ฒ๊ฐ DMZ
Spring WebSocket with Stomp
Load Balancing ๋ฐฉ์์ ๋ฐ๋ฅธ Connection ์ง์ฐ
ํด๊ฒฐ
Round Robin + Least conntion
WebSocket Connection Leak
๋ฌธ์
์ ์์ฌ ์ ์ฐจ์ด (HTTP vs WEBSOCKET, ๊ฐ์์ผํ๋๋ฐ..)
abnoraml ์ข ๋ฃ ์, ์ ๋๋ก connection ์ด ์ ๋๋ก ์ข ๋ฃ๋์ง ์์.
ํด๊ฒฐ
WebSocketHandler๋ฅผ ์๋ก ๊ตฌํํ์ฌ์, ๋ช ์์ ์ธ ์ผ์ด์ค (1001..) ์ WebSocket Conenction์ด ๋ซํ๋๋ก ๊ตฌํ
๋ณด์ ์ฅ๋น ์ด์
์ค์๊ฐ ์๋น์ค ํธ๋ํฝ์ด ๋๋ฉด์, ๋ฐฉํ๋ฒฝ์์ ๋ ์ดํด์ ๋ฐ์
์ด ๋ ์ดํด์๋ก ์ธํด, ํด๋น ๋ณด์ ์ธํ๋ผ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ๋ค๋ฅธ ์๋น์ค์์๋ ์๋ฌ๊ฐ ์ ํ๋จ.
Scale out ์ด๋ ค์
AWS Cloud๋ก ์ด์ ๊ณ ๋ ค์ค
์ฐธ๊ณ
https://www.youtube.com/watch?v=WKYE-QtzO6g&list=PL1DJtS1Hv1PiGXmgruP1_gM2TSvQiOsFL&index=11
์ ์ํ์ ๋ฌดํ์คํฌ๋กค์ด ์๋๋์
์?
์ฝ์ด๋ฑ ํน ์๋ฒ (๊ณ์ ๊ณ) ์ ์ ์ ๋ถํ๋ฅผ ์ฃผ๊ธฐ ์ํด์ ํน์ ์ผ์๋ก ์ ํ ํ๋ ๊ฒ.
ํ ์ค ๋ฑ ํฌ์์๋ ์ด๋ฌํ ์์ฒญ์ ๋ํด ์ฝ์ด ๋ฑ ํน์ ๋ฐ๋ก ์์ฒญ์ ๋ณด๋ด์ง ์์.
์ฐธ๊ณ
https://www.youtube.com/watch?v=v9rcKpUZw4o&list=PL1DJtS1Hv1PiGXmgruP1_gM2TSvQiOsFL&index=12
Last updated