Skip to content

Commit 9aff25c

Browse files
committed
fix: Modify the Content for ActiveProcessorCount
1 parent ba07e83 commit 9aff25c

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

contents/posts/java/java-application-on-kubernetes.mdx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,13 @@ CPU limit 이 너무 낮으면, 어플리케이션 속도가 느려질 수 있
256256
5. Other impacts of Kubernetes CPU limits
257257
* -XX: ActiveProcessorCount 플래그를 사용하여 Java CPU 수를 limit ~ 2배로 설정한다.
258258

259+
:::note
260+
ActiveProcessorCount 플래그를 limit ~ 2배로 설정하는 것은 오히려 잘못된 설정일 수도 있다.
261+
보통은 request cpu = limit cpu = ActiveProcessorCount 를 동일하게 가져가는게 맞다.
262+
오히려, limit cpu 보다 크게 되면 context switching 비용이 더 들어서 오버헤드가 심해진다.
263+
따라서, 적절한 값은 테스트를 해보고 결정 하는 것이 좋다.
264+
:::
265+
259266
6. Java 라이브러리의 중요한 pool 에 대해 스레드 수를 명시적으로 설정한다.
260267
7. Garbage collection
261268
* 일반적인 1GB memory, 2 CPU java 어플리케이션에는 병렬 GC 를 사용해라.
@@ -287,8 +294,7 @@ ex) -Xms = -Xmx
287294
* 단, JDK 17 부터 가능하다. (원래는 JDK 8 부터 지원했지만 Container 로 인식을 하지 못하는 버그가 있었고, JDK 13 에서 수정되었다.)
288295

289296
4) LivenessProbe 와 ReadinessProbe 를 설정해준다.
290-
5) XX: ActiveProcessorCount 플래그를 사용하여 limit CPU 의 2배로 설정한다.
291-
6) 병렬 GC 를 사용하거나, 힙을 많이 사용하면 G1/Z GC 를 사용해라.
297+
5) 병렬 GC 를 사용하거나, 힙을 많이 사용하면 G1/Z GC 를 사용해라.
292298

293299

294300

@@ -358,7 +364,7 @@ CPU limit에 대해서는 “설정하지 말자” vs “설정하자” 논쟁
358364
✔ -xss(ThreadStackSize) 는 default 값이 1M 이므로 굳이 설정하지 말자.
359365
✔ QoS Guaranteed 인 Pod 를 생성하자.
360366
✔ livenessProbe, readinessProbe 를 설정하자.
361-
✔ ActiveProcessorCount 플래그를 설정하는 것이 좋다.
367+
✔ ActiveProcessorCount 플래그를 명시적으로 설정하는 것이 좋다.
362368
✔ Xms = Xmx 를 사용한다면 동일한 값으로 맞추는 것이다.
363369
→ 최대 힙 크기를 고정한다면, Request / Limit memory 의 60 ~ 80% 으로 맞추자.
364370
✔ (update) 환경에 따라서 다를 수 있지만, QoS 를 적용하고 퍼센테이지로 조정하는 것이 보다 더 안정적으로 운영이 되는 것 같다..!

0 commit comments

Comments
 (0)