본문 바로가기
카테고리 없음

서버 메모리 cpu 최적화

by devljy 2024. 9. 20.

현재 배치 작업을 활용중인 서버가 리소스가 너무 낭비가 되고있었다. 

 

기존 서버의 사양은 cpu : 16 , ram : 16 - > cpu: 8 , ram: 8 로 변경하였다. 

클라우드 서버 비용 ( month : 40만원 -> 20만원 )

 

아래는 변경하면서 확인한 과정들에대한 과정이다.  

 

그림 1 : cpu는 16 core를 사용할 당시에 사용률이 0.5 도 되지않아서 16 -> 8로 수정하게 되었다.

 

 

메모리는 서버에서 해당 애플리케이션이 사용할만한 최소/최대 힙 메모리를 지정해두었다. 

그림2 : ps -ef ❘grep java 로 애플레이케이션 상세 정보를 확인

 

서버에 아무것도 실행중이지 않은 메모리상태 ( 0.5 / 7.61  )에서

애플리케이션을 실행했을때 , 내가 예상한 메모리는 4.5~5.5 / 7.61 정도였다 .

그림3 : rss (Resident Set Size) : 현재 할당되고 사용되는 실제 메모리양

 

하지만 실제로 애플리케이션은 6458976kb -> 예상한 4.5~5.5 를 훌쩍 넘는 6.16 GB 의 사이즈를 가지고있었다.

 

찾아본 결과 자바 애플리케이션의 RSS 는 세가지 ( Heap Size, Non heap size , off Heap Size )로 구성된다는  것을 알아냈다.  (밑 그림 4 참고) ->

** 서버에 단일 애플리케이션을 배포한다고 했을떄 서버의 메모리에 너무 딱맞게 지정하지말고 여유있게 설정을 해야한다 ( non heap size + offHeap size 고려 ). 

 

그림4 : Rss 구조

 

 

그림 5: 클래스 메타데이터 , comppressed class space 등 (Non heap 에 해당한다.) -grafana 툴