본문 바로가기

Coding/etc.

Tomcat 7의 기본 메모리 사이즈

최근 관리를 요청 받은 회사의 사이트가 주기적으로 문제가 발생한다는 요청이 들어왔다.

 

해당 서버에 원격으로 Scouter를 설치해주고 며칠 지켜보기로 했다.

 

얼마 지나지 않아 서버가 다운되었다는 연락이 왔다.

 

스카우터를 살펴보니 Perm 사용률이 99%에 있었고

 

서버 설치당시에 설정을 확인해보니 톰캣에서 메모리에 대한 설정이 전혀 되어있지 않았다.

 

해당 서버에 평균 사용자는 3-40명정도가 지속적으로 유지가 되고 있었다.

 

평소 개발할때는 톰캣에 메모리 설정을 잡아주지 않아도 Out of Memory를 보는 경우가 잘 없어서 전혀 인지하지 못한 문제였다.

 

JVM의 기본 heap 메모리 사이즈는 64MB라서 사용자가 몰리기 시작했을때 메모리가 감당할 수 없는 상태였던것이었다.

 

해당 서버의 사양이 실제 RAM은 6GB로 설정이 되어있으나 윈도우가 32비트라서 4GB만 인식을 하고 있었고

 

기본적으로 사용하는 메모리가 2.2~2.3GB정도가 되어서 그걸 제외하고 메모리 설정을 해줘야 했다.

 

1GB를 메모리로 잡아줄 경우 RAM 사용량이 기본적으로 80%이상으로 올라갈거라 예측되었고,

 

1GB는 과하다는 판단으로 512MB에서 타협을 보았다.

 

-Xms, -Xmx 설정으로 최소와 최대를 모두 512MB에 맞춰주었다.

 

설정을 변경하고 다시 톰캣을 올렸을때는 기존에 99% 사용이었다면 이제는 15~20%정도 사용량을 보였고,

 

확실히 안정을 찾은듯한 모습이었다.

 

 

확실히 실제 환경을 겪어보지 않으면 모를 내용들이 많다.

 

지금은 3~40명의 사용자 규모를 겪은거지만

 

그 인원이 수백배 수천배라면?

 

동시에 수만명이 서버에 몰린다면...?

 

포털사이트에서는 하루 이용자가 적게는 수십만 많게는 수천만 이상이 될텐데

 

그럴때 서버가 얼마나 필요할지 어느정도의 사양의 서버가 있어야 버틸 수 있을까...?

'Coding > etc.' 카테고리의 다른 글

MacOS에서 세팅하면서 참고한 내용  (0) 2021.12.17
Mac OS 에서 nvm 설치하기  (0) 2020.06.14
윈도우 화면 자동 밝기 조절 끄기  (0) 2018.02.23