ํ์ฌ ์๋ฒ์ ๋งค๋ฒ OutOfMemory๋ก ์ธํด์ ์๋ฒ๊ฐ ๋ค์ด๋๊ฑฐ๋ ‘๋ด ์ฃผ๋ณ ๋ฌ๋ ์ฝ์ค ์กฐํ’๊ฐ ์๋๋ ๋ฌธ์ ๊ฐ ์๋ค.

์ด๋๋ง ํด๋ ์์ํ๋ ๋ฌธ์ ์ ์ ‘๋ด ์ฃผ๋ณ ๋ฌ๋ ์ฝ์ค ์กฐํ’ ์์ ์ฃผ์ด์ง ๋ฐ๊ฒฝ(m)์ ๋ง์ ์ฝ์ค๋ค์ด ์กด์ฌํ๊ณ ์์ด ์ด๋ฅผ ๋ชจ๋ ์ฝ์ด์ค๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๋ฌผ๋ก ํ ๋๋ช
์ ์ฌ์ฉ์๊ฐ ์์ฒญํ๋ค๋ฉด ๋ฌธ์ ์๊ฒ ์ง๋ง, ์ค๋ ๋ ์๊ฐ ๋ง์์ง๋ ์๊ฐ ๋ชจ๋ ์ฝ์ค ์กฐํ์ ๋น์ทํ ๊ฒฝ์ฐ๊ฐ ๋์ด๋ฒ๋ ค OutOfMemory ์์ธ๊ฐ ๋ฐ์ํ๋ ๊ฒ ๊ฐ๋ค๊ณ ์ถ์ธกํ๋ค. ๊ทธ๋์ mongoDB์์ db.collections.stats().avgObjSize ๋ช
๋ น์ด๋ฅผ ํตํด ์ฝ์ค ๋ฐ์ดํฐ๊ฐ ํ๊ท ์ ์ผ๋ก ์ผ๋ง์ ํฌ๊ธฐ๋ฅผ ๊ฐ๋์ง ์กฐ์ฌํด๋ดค๋ค.

๋ฐ์ดํธ ๋จ์๋ก ์ถ๋ ฅ๋๋ KB๋ก ๊ณ์ฐํด๋ณด๋ฉด, ์ฝ 117KB๊ฐ ๋๋ค. ์ด๋ค ์ค ์ผ๋ถ๋ฅผ ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํํ๋ค๋ฉด ์ฝ 38๊ฐ์ ์ขํ๊ฐ ์๋ 400m ๋ฌ๋ ์ฝ์ค๋ 2.82KB๊ฐ ๋๋ค. 118๊ฐ์ ์ขํ๊ฐ ์๋ ์ฝ 1KM ์ฝ์ค๋ 6.30KB์ด๋ค. ๋๋ถ๋ถ ๋ฐ์ดํฐ๋ค์ด 5KM ์ด์์ธ ๋ฌ๋ ์ฝ์ค๊ฐ ๋ง์ ๊ฑฐ๋ฆฌ์ ๋ฐ๋ผ ๋ง์ ์ขํ๊ฐ ๋ค์ด๊ฐ๋ฏ๋ก ์ด๋ ๋์ฑ ์ปค์ง ๊ฒ์ด๋ค.


์ด์ ์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ๋ฌธ์ ๊ฐ ์ ๋ง ‘๋ด ์ฃผ๋ณ ๋ฌ๋ ์ฝ์ค ์กฐํ’๋ก ์ธํด ๋ฐ์ํ ๊ฒ์ธ์ง ์์๋ณด๊ธฐ ์ํด์ CloudWatch์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์งํ๋ฅผ ํ์ธํ๋ค.


ํ์ง๋ง ์์ธ๋ก ์ด์ ๋ ๋ค๋ฅธ ๊ณณ์ ์์๋ค. ์ฌ์ง์ ๋ณด๋ฉด ํน์ ์๊ฐ์ ์์ฒญ๋๊ฒ ์น์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณผ ์ ์๋ค. ์๊ฐ์ ๋ณด๋ฉด ๋๋ต ์๋ฒฝ 2์์ ๊ฐ์๊ธฐ ์น์๊ธฐ ์์ํ๋๋ฐ, ์ด๋ฅผ ๊ณ์ ์ฌ๋ผ๊ฐ๋ค ๋ด๋ ค๊ฐ๋ฉฐ ์ ์งํ๋ค๊ฐ ์ด๋์๊ฐ ํ
๋จ์ด์ง๋ ๋น์ ์์ ์ธ ๊ทธ๋ํ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์์๋ค. ๋ณดํต ์ด๋ ๊ฒ ๋ค์ญ๋ ์ญํ ๊ทธ๋ํ๋ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ๊ฐ์ฅ ํฐ ์ด์ ์ด๋ค. ๊ทธ๋์ ์๋ฒฝ 2์์ ์งํํ๊ณ ์๋ Batch ์์
์ ๋ญ๊ฐ ๋ฌธ์ ๊ฐ ์์ ๊ฒ์ด๋ผ ์๊ฐํ๋ค.

ํ์ง๋ง ์ฝ๋ ์์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๋์์ ๊ดํด์๋ ํฐ ๋ฌธ์ ๊ฐ ์์๋ค. ์์ธ๊ฐ ๋์ ธ์ง ๋ InputStream์ด ๋ซํ์ง์ง ์๋๋ค๋ ์ ๋ฐ์ ์์๋ค. ๊ทธ๋์ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ ๊ทผํด๋ณด๋๋ก ํ๋ค. ๋ฐ๋ก JVM ํ ๋ฉ๋ชจ๋ฆฌ์ GC์ด๋ค. ์ด๋ ๊ฒ ์ ๊ทผ์ ํ๊ณ ์ ํ๋ ์ด์ ๋ heap space์์ OutOfMemory ์์ธ๊ฐ ๋ฐ์ํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ค ๋ฐฉ์์ผ๋ก ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋๊ณ , GC๊ฐ ๋์๊ฐ๋์ง ํ์
ํ๋ฉด ์ด๋์ ๋ ํด์๋ ๊ฒ ๊ฐ์๋ค.
๋จผ์ ์ฌ๊ธฐ์ ๋๋ ์๋ฌธ์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ + Swap ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ์ ์๋ฐ, ์ OutOfMemory๊ฐ ๋๋๊ฑธ๊น? ํ์ฌ EC2์ ์คํ์ t4g.micro๋ก 2์ฝ์ด CPU, 1GB ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. ๊ทธ๋ฆฌ๊ณ Swap ๋ฉ๋ชจ๋ฆฌ๋ก๋ 8GB๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. ๊ทธ๋์ Swap ๋ฉ๋ชจ๋ฆฌ + ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ์ค์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ์ค ์์๋ค.
ํ์ง๋ง JVM์ ํ ์ฌ์ด์ฆ๋ฅผ ์ ํ ๋ ๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒฐ์ ํ๋ค. Java 8๋ถํฐ๋ ๋ฐ๋ก JVM ํ ์ฌ์ด์ฆ๋ฅผ ์ ํด์ฃผ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ ํ ์ฌ์ด์ฆ๋ ์์คํ
๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฝ 1/64๋ก ์ค์ ๋๊ณ , ์ต๋ ํ ์ฌ์ด์ฆ๋ ์ฝ 1/4๋ก ์ค์ ๋๋ค.

์ฌ์ง์ ๋ณด๋ฉด ํ์ฌ ๋ด ์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ 16GB์์ ์ต๋ ํ ์ฌ์ด์ฆ๋ ์ฝ 1/4์ธ 4GB๋ฅผ ์ง์ ํ๊ณ , ์ต์ ํ์ ์ฝ 1/64์ธ 250MB๋ฅผ ํ ๋นํ ๊ฒ์ ๋ณผ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ์๋ฒ๊ฐ ์คํ๋๊ณ ์๋ EC2๋ ๊ธฐ๋ณธ ๋ฉ๋ชจ๋ฆฌ๊ฐ 1GB์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ฝ 1/64์ธ 16MB๋ฅผ ์ฌ์ฉํ๊ณ ์๊ณ , ์ต๋ 1/4์ธ 256MB๋ฅผ ํ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฌ์ฉ ์ค์ธ ๊ฒ์ด๋ค.

๋๊ตฐ๋ค๋ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด 28.1%์ธ๋ฐ๋ ๋จ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ 44.4MB๋ฐ์ ์๋๋ค. ๊ทธ๋์ Batch ์์
์ ๋๋ฉด์ ์ฝ 300MB๊น์ง ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ํ ๋์ด๋ฒ๋ฆฌ๋ ์ด๋ฅผ ๊ฐ๋นํ์ง ๋ชปํด ๊ณ์ OutOfMemory๊ฐ ๋จ๊ฒ ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ๋จผ์ JVM์ ๊ธฐ๋ณธ ํ ์ฌ์ด์ฆ๋ฅผ ๋๋ ค๋ณด๋ ค๊ณ ํ๋ค. Swap ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉ ์ค์ด๊ธฐ์ Swap ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก JVM ํ ์ฌ์ด์ฆ ํฌ๊ธฐ๋ฅผ ๋๋ฆฌ๋ ค๊ณ ํ์ผ๋ Swap ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ฉด ์๊ธธ ์ ์๋ ๋ฌธ์ ๊ฐ ์๋นํ ๋ง์๋ค.
๊ฐ์ฅ ํฌ๊ฒ ์๊ฐํ ๋ฌธ์ ๋ ๋ณด์กฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฃผ ๋ฉ๋ชจ๋ฆฌ์ฒ๋ผ ์ฌ์ฉํ๋ค๋ ์ ์ด๋ค. ์ฃผ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค 10๋ฐฐ ์ด์ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ ์ฒด ์์ฒญ-์๋ต ๊ณผ์ ์ ๋ฌธ์ ๊ฐ ์๊ธธ ๊ฒ ๊ฐ์๋ค. ๊ทธ๋ฆฌ๊ณ , Swap ๋ฉ๋ชจ๋ฆฌ๋ ์ฃผ ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ์ฉ๋์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์ผ์์ ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํ ๊ฒ์ด๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ์ ํ์ฑ๋๋ค. ๊ทธ๋์ JVM ํ ๋ฉ๋ชจ๋ฆฌ ์ธ์ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ค์ด ์ธ์ ์ฌ์ฉ๋์ง ์๋์ง ๋๋ ์ผ๋ง๋ ์ฌ์ฉ๋์ง ์๋์ง ์ถ์ธกํ๊ธฐ๊ฐ ์ด๋ ค์ ๋ค. ๊ทธ๋์ ๋น์ฅ ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฌด์์ ๋๋ฆฌ๋ ๊ฒ์ ํด๊ฒฐ๋ฐฉ์์ด ์๋๋ผ ์๊ฐํ๋ค.

OutOfMemoryError๋ ๋จ์ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์๋ง ๋ฐ์ํ๋ ๊ฒ์ด ์๋๋ผ, GC๊ฐ ๋ถํ์ํ ๊ฐ์ฒด๋ฅผ ํ์ํ์ง ๋ชปํ ์ํ์์ ๋ฉ๋ชจ๋ฆฌ ์์ฒญ์ด ๋ค์ด์ฌ ๋ ๋ฐ์ํ๋ค. ์์ ์ฌ์ง ์ Batch ์์
์์ ๋ณด์๋ฏ์ด ์ง์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋์น๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค. ์ด๋ฌํ ๊ทธ๋ํ๊ฐ 4-5์๊ฐ ๊ฐ๋ ์ง์๋๋ ๊ฒ์ ๋ณด๋ฉด GC์ ๋์์์๋ ํํธ๋ฅผ ์ป์ ์ ์์ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ์ด์ ํ๊ฒฝ์ผ๋ก ๊ตฌ์ฑํ์ฌ ์คํ์ ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํ๋ค. ๊ทผ๋ฐ ์์ฝ๊ฒ๋ ์ด๋ฏธ ์๋ฒ์ ํ๋ก์ธ์๋ฅผ ์
๊ทธ๋ ์ด๋ ํ ์ํ์๋ค.
์ฒ์์ Test์ฉ ๊ฐ์ฒด๋ค์ ๋ง๋ค์ด EC2์ ๋์๋ณด๋ ค๊ณ ํ์ผ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก ํ๊ฒ ๋๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ธํด ์ ํํ ์ธก์ ์ด ๋ถ๊ฐํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ทธ๋ผ ๋ถ๋ฆฌํ๋ค๊ณ ํด๋ ์ด๋ฅผ ์ํด ์ด์ ์๋ฒ DB๋ฅผ ์ฐ๊ฒฐํ๊ธฐ์ ๋๋ฌด ์ํํ๋ค. ๊ทธ๋์ EC2์ ๋์ผํ ํ๊ฒฝ์์ ๊ฐ์์ค๋ ๋ง์ ๋ฐ์ดํฐ๋ค์ด ๋ค์ด์ค๋ฉด ์ด๋ป๊ฒ ๋๋์ง ์ ๋๋ง ๋ถ์ํด๋ณด๊ธฐ๋ก ํ๋ค. ์ฌ์ฉํ ์ฝ๋๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
public class BatchSimulator {
public static void main(String[] args) throws Exception {
List<int[]> allocations = new ArrayList<>();
int counter = 0;
while (true) {
// 117KB ํฌ๊ธฐ์ int ๋ฐฐ์ด ๊ณ์ ์์ฑ
allocations.add(new int[29952]);
counter++;
if (counter % 50 == 0) {
System.out.println("Allocated ~" + (counter) + " MB so far...");
}
}
}
}
FROM openjdk:21-jdk
WORKDIR /app
COPY BatchSimulator.java .
RUN javac BatchSimulator.java
ENV JAVA_OPTS="-Xlog:gc*:file=/logs/gc.log:time,uptime,level,tags"
# JVM ํ ์ ํ: ์ค์ t4g.micro ๊ธฐ๋ณธ๊ฐ์ ๋ง์ถค
CMD java $JAVA_OPTS BatchSimulator
#!/bin/bash
docker build -t oom-test .
docker run -it --rm \\
--cpus="2" \\
--memory="1g" \\
--memory-swap="8g" \\
-v ~/gc-logs:/logs \\
oom-test
๊ฐ๋จํ ์ฝ๋์ด๋ค. ๊ธ์ ์๋จ์์ ์๊ฒ ๋ MongoDB์ ํ๊ท ์ฝ์ค ํฌ๊ธฐ์ธ 117KB ํฌ๊ธฐ๋ก ๊ณ์ํด์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์ฌ ๋ฆฌ์คํธ์ ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์คํํ๋ ๋์ปค๋ t4g.micro์ ์คํ๊ณผ ๋๊ฐ์ด ๊ตฌ์ฑํ๋ค. ๋ฉ๋ชจ๋ฆฌ๋ 1GB์ด๋ฉฐ ์ค์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ 8GB๋ก ์ค์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ CPU๋ 2์ฝ์ด๋ง ์ฌ์ฉํ๋ค.
ํด๋น ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ฐ์ผ๋ก ์คํํด๋ณด๋ฉด ์ด๊ธฐ ์คํ ์งํ Young Generation์์์ Minor GC๊ฐ ์ฌ๋ฌ์ฐจ๋ก ๋ฐ์ํ ๊ฒ์ ํ์ธํ ์ ์์๋ค. ์ด๋ ์ฃผ๋ก Eden ์์ญ์์ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ํ ๋นํ ๊ณต๊ฐ์ด ๋ถ์กฑํ ๋ ๋ฐ์ํ๋ค.
GC(0) Pause Young (Allocation Failure) 5M->5M(15M) 3.961ms
GC(1) Pause Young (Allocation Failure) 9M->9M(15M) 6.885ms
GC(2) Pause Young (Allocation Failure) 13M->13M(17M) 2.866ms
๋ํ, ์๋ฐ ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋ฆฌ์คํธ๊ฐ ๊ณ์ํด์ ์์ฑ๋๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๊ธฐ์ GC๊ฐ ์ด๋ฅผ ์ ๋ฆฌํ์ง ๋ชปํ๊ณ Eden๊ณผ Survivor ์์ญ์ด ๋น ๋ฅด๊ฒ ์ฐจ๋ฉด์ Tenured ์์ญ(Old Generation)์ผ๋ก ๊ฐ์ฒด๊ฐ ์น๊ฒฉ๋๋ ๊ณผ์ ์ด ๋ฐ๋ณต๋์๋ค.
GC(1) Tenured: 4700K(10944K)->8956K(10944K)
GC(4) Tenured: 13237K(22064K)->20843K(22064K)
๊ทธ ํ Minor GC๊ฐ ๊ณ์ ์คํจํ์ JVM์ Full GC๋ฅผ ์ํํ๋ฉฐ Tenured ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. ํนํ๋ ๋ง์ง๋ง Full GC์์๋ Tenured ์์ญ์ด ๊ฑฐ์ 99% ์ฌ์ฉ๋จ๊ณผ ๋์์ Eden ๊ณต๊ฐ ์ญ์ ๊ฐ๋์ฐฌ ์ํ๋ฅผ ์ ์งํ๋ค.
GC(3) Pause Full (Allocation Failure) 13M->13M(31M) 8.072ms
GC(6) Pause Full (Allocation Failure) 29M->29M(70M) 7.110ms
GC(12) Pause Full (Allocation Failure) 153M->153M(247M) 14.388ms
def new generation total 78656K, used 78611K
tenured generation total 174784K, used 174726K
์ข
ํฉ์ ์ผ๋ก ์ ๋ฆฌํ์๋ฉด, ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ์ํฉ์ด๋ค. ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ํ ์ฌ์ด์ฆ์ ํฌ๊ธฐ๋ ์์ ์ ๋ฐ์ ์์๊ณ ์ด๋ฅผ ๋๋ ค์ค๋คํด๋ ๋จ์์๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๊ฑฐ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ฆฌ๊ธฐ ์ด๋ ค์ ๋ค. ๊ฒ๋ค๊ฐ ์ง๊ธ์ ์์ ์ฒ๋ผ ์ฝ์ค ํ์ผ๋ค์ ๊ณ์ํด์ ๋ถ๋ฌ์ค๋๋ฐ, ํ ์ฌ์ด์ฆ๊ฐ ์๋ค๋ณด๋ Eden ์์ญ๊ณผ Tenured ์์ญ์ด ๊ณ์ํด์ ๊ฐ๋์ฐฌ๋ค. ๊ฒฐ๊ตญ ์ด ๋๋ฌธ์ Full GC๊ฐ ๋ฐ๋ณต ์คํ๋๋ฉด์ OutOfMemory๊ฐ ์ง์์ ์ผ๋ก ๋ฐ์ํ๊ฒ ๋์๋ค๋ ์ ์ ์ถ์ธกํ ์ ์์ ๊ฒ ๊ฐ๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ ํ์ ํ์ฌ EC2์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋๋ฆฌ๊ธฐ๋ก ํ๋ค. ๊ทธ๋์ ๊ธฐ์กด์ t4g.micro๋ฅผ ์ฌ์ฉํ๊ณ ์์์ง๋ง, ์ด๋ฅผ t4g.small๋ก ์ฆ๊ฐํ๋ค. ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ 2GB์ด๊ธฐ์ ์ด์ ํ ๋ฉ๋ชจ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก 32MB๋ฅผ ์ฌ์ฉํ๊ณ ์ต๋ ํ ๋ฉ๋ชจ๋ฆฌ๋ ์ฝ 536MB๊ฐ ๋์๋ค. ๊ธฐ์กด์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ๋ฉ๋ชจ๋ฆฌ ์์ค์ด 300MB์ธ ์ ์ ๊ฐ์ํ์ ๋ ๋ฐ๋ก ํ ์ฌ์ด์ฆ๋ฅผ ์กฐ์ ํ์ง ์์๋ ๋ ๊ฑฐ๋ผ ์๊ฐํ๋ค. ๋ฌผ๋ก ์ฌ์ฉ์๊ฐ ๋ง์์ง๋ค๋ฉด ์ด๋ฅผ ๋ค์ ๊ณ ๋ คํด๋ณผ ๊ฒ์ด๋ค.
+) 2025.10.24
ํด๋น ๋ฌธ์ ๋ฅผ ํด์ํ๊ณ Batch Job ์ฝ๋๋ฅผ ๋ค์ ํ์ธํ๋ฉด์, ๋ฉ๋ชจ๋ฆฌ ๋์์ ๋ฌธ์ ๋ ์์์ง๋ง ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์์ ํ์ผ๋ค์ ์ฝ์ด์ค๋ ๊ณผ์ ์ด ๋ฌธ์ ์ ์ด ๋ ์ ์๋ ๊ฒ์ ํ์
ํ๋ค. ๊ทธ ๋ฌธ์ ๋ Batch Job์์ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ๋ก๋ถํฐ ์ฝ์ค ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ๋, ๋ชจ๋ ํ์ผ์ ํ ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์๋ ๊ฒ์ด๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ํ์ผ ์ฝ๊ธฐ ๋ก์ง์ ํ์ด์ง(paging)์ ์ ์ฉํ๋ค. ๊ธฐ์กด์๋ ๋ชจ๋ ํ์ผ ๋ชฉ๋ก์ ํ ๋ฒ์ ๊ฐ์ ธ์์ ์ฒ๋ฆฌํ๋ค๋ฉด, ์ด์ ๋ ์ผ์ ๊ฐ์(10๊ฐ)์ฉ ๋๋์ด์ ์์ฐจ์ ์ผ๋ก ์ฝ์ด์ค๋๋ก ๋ณ๊ฒฝํ๋ค. ์ด๋ฅผ ํตํด ํ ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋๋๋ ๋ฐ์ดํฐ์ ์์ ์ ํํ ์ ์์๋ค.

ํ์ด์ง ์ ์ฉ ํ ๋ฐฐ์น ์์ ์ค ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํ ๊ฒฐ๊ณผ, ๊ธฐ์กด์ 300MB ์ด์๊น์ง ์น์๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด 120MB ๋ด์ธ๋ก ์์ ํ๋๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค. ๋ํ ๊ฐ ๋ฐฐ์น ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ํด๋น ๊ฐ์ฒด๋ค์ด GC์ ๋์์ด ๋์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ํ ์ ์๋ ์ฌ์ ๊ฐ ์๊ฒผ๋ค. ๊ทธ๋ฆฌ๊ณ Full GC์ ๋ฐ์ ๋น๋๋ ํฌ๊ฒ ์ค์ด๋ค์ด ๋ฐฐ์น ์์ ์ ์ ์ฒด ์ํ ์๊ฐ๋ ๊ฐ์ ๋์๋ค. ์ด๋ฌํ ํ์ด์ง ์ฒ๋ฆฌ ๋ฐฉ์์ ์ธํ๋ผ ์คํ ์ ๊ทธ๋ ์ด๋์ ํจ๊ป ์๋์ง๋ฅผ ๋ด์ด OutOfMemory ๋ฌธ์ ๋ฅผ ์๋น ๋ถ๋ถ ํด์ํ ์ ์์๋ค.
'๊ฐ๋ฐ > ๋ฐ์ธ๊ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| OSRM Match API๋ก ๋ฌ๋ ์ฝ์ค ๋ฐ์ดํฐ ์ขํ ๋ณด์ ํ๊ธฐ (0) | 2025.12.14 |
|---|---|
| ๊ธธ์ฐพ๊ธฐ, ๊ฒฝ๋ก ๋ณด์ ์ ํต์ฌ OSRM ํบ์๋ณด๊ธฐ (0) | 2025.12.08 |
| API ๋ฌธ์ ๊ฐ์ ๊ณผ ๋ฌธ์ํ ํด Stoplight๋ก ๋ณ๊ฒฝํ๊ธฐ (0) | 2025.12.07 |
| ํ๋ก์ ํธ์์ Batch Job ๋ก๊ทธ์ MDC๋ฅผ ์ ์ฉํ๋ค. (0) | 2025.10.26 |
| ๋๋ฉ์ธ ๊ฐ์ฒด ์์ฑ ๋ก์ง ๊ด๋ จ ๊ณ ๋ฏผ (0) | 2025.10.06 |