๊ฐœ๋ฐœ๋ธ”๋กœ๊ทธ์ธ๋ฐ ๋„ˆ๋ฌด ์˜ํ™”๋งŒ ๋ณด๊ณ  ๋ฆฌ๋ทฐ๋งŒ ๋‚จ๊ธฐ๋Š”๊ฒŒ ์•„๋‹Œ๊ฐ€. ๊ทธ๊ฐ„ ๋ฐฐ์šด๊ฒƒ๋„ ์žˆ๋Š”๋ฐ, ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌ๋งŒ ํ•˜๋Š” ๊ฒƒ๋„ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

 

QoS Class

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ํŒŒ๋“œ์˜ ์„œ๋น„์Šค ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•œ๋‹ค. ์ข…๋ฅ˜์—๋Š” Guaranteed/Burstable/BestEffort ๊ฐ€ ์กด์žฌํ•œ๋‹ค. deployment ์ชฝ์— ํ• ๋‹น๋œ ์ปจํ…Œ์ด๋„ˆ ๋ฆฌ์†Œ์Šค ์„ค์ •์ธ, resources.request/resources.limit ์— ๋Œ€ํ•œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ QoS ํด๋ž˜์Šค๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค. ๋…ธ๋“œ ๋‚ด์— N๊ฐœ์˜ ํŒŒ๋“œ๊ฐ€ ๋–  ์žˆ์„ ๋•Œ ๋ฆฌ๋ˆ…์Šค oomkiller ์— ์˜ํ•œ oomkilled ๊ฐ€ ๋˜๋Š” ์ˆœ์„œ๋ฅผ QoS ํด๋ž˜์Šค๋กœ ๊ฒฐ์ •์ง€์„ ์ˆ˜ ์žˆ๋‹ค. ์ด ์ด์Šˆ๋Š” k8s overcommit ๋‚ด์šฉ๊ณผ๋„ ์—ฐ๊ด€์ด ์žˆ๋‹ค.

- https://kubernetes.io/ko/docs/tasks/configure-pod-container/quality-service-pod/

- https://docs.oracle.com/cd/E56343_01/html/E53877/ipqos-config-planning-14.html

 

Native Memory

JDK8 ์—์„œ Non heap space ์˜์—ญ์ธ metaspace ์˜์—ญ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. Native memory ์˜ ์˜์—ญ์ธ๋ฐ ํ•ด๋‹น ์˜์—ญ์€ ํž™๋คํ”„๋ฅผ ๋œฌ๋‹ค๊ณ  ํ•œ๋“ค ์‰ฝ๊ฒŒ ๋ณผ ์ˆ˜ ์—†๋‹ค. ๊ด€๋ จํ•ด์„œ JVM option ์œผ๋กœ -XX:NativeMemoryTracking=(detail | summary) ์˜ต์…˜ ๋“ฑ์œผ๋กœ ํŒŒ์•…ํ•ด์•ผํ•œ๋‹ค.

- https://docs.oracle.com/javase/8/docs/technotes/guides/vm/nmt-8.html

 

Spring docs

@Lazy, @Lookup ์• ๋…ธํ…Œ์ด์…˜์„ ๊ณต๋ถ€ํ–ˆ๋Š”๋ฐ, ์‹ค๋ฌด์—์„œ ์จ๋ณด์ง€ ์•Š์•„์„œ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. ๋„ํ๋จผํŠธ์—์„  ์žฅ์ ์ด ๊ธฐ์ˆ ๋˜์–ด ์žˆ์ง€๋งŒ ํ•ด๋ณด์งˆ ์•Š์œผ๋‹ˆ ์žฅ์ ์ด ์™€๋‹ฟ์ง€ ์•Š์•˜๋‹ค.

- @DependsOn ์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ๋ผ๋ฆฌ ์˜์กด๊ด€๊ณ„๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

- @Configuration ์•ˆ์˜ @Bean ์ƒ์„ฑ ์ˆœ์„œ๋Š” ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋œ ์ˆœ์„œ์ด๋‹ค. ์•ŒํŒŒ๋ฒณ์ˆœ์„œ๋Š” ์•„๋‹ˆ๋‹ค.

- @Autowired ๋ฅผ setter ์ฃผ์ž…์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์‹œ, ์ˆœํ™˜์ฐธ์กฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. application.yaml ์— spring.main.allow-circular-references=true ๋กœ ํ•˜๋ฉด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ์ƒ์„ฑ์ž ์ฃผ์ž…์— ๋Œ€ํ•œ ์ˆœํ™˜์ฐธ์กฐ๋Š” ํ•ด๋‹น ์„ค์ •์„ ํ•˜๋”๋ผ๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

Posted by doubler
,