본문 바로가기

노력을 이기는 재능은 없고
노력을 외면하는 결과도 없다.
- 이창호 9단

E R R O R/Windows Error

[Windows Error] 윈도우(Windows) 가상 메모리가 부족합니다. 에러 해결방법

  Junesker   2021. 9. 9.
반응형

회사에서 관리하고 있는 CS 사이트들 중, 특정 몇개의 사이트가 죽었다. 잘 돌아가던 시스템이 죽었으니 왜 죽었는지 무슨 이유때문에 죽었는지를 파악하기 위해 우선 시스템 로그를 확인해보았다. 이벤트 뷰어에 시스템이 죽었던 시간대에 발생한 이벤트를 언저리로 찾아보았다. 이벤트ID 2004의 Resource-Exhaustion-Detector, "Windows에서 가상 메모리가 부족하다고 진단했습니다. 다음 프로그램에서 대부분의 가상 메모리를 사용했습니다...." 과 같은 이벤트가 발생했음을 알 수 있었다. 

 

 

 

 

 

사이트가 설치되어 있는 OS스펙은 윈도우10(32bit), RAM(4GB), 하드디스크(500GB) 등 으로 되어 있는데, 사이트를 가동하는데에 있어서 사용 최대치 메모리보다 더 많은 메모리를 필요로 가용하는듯 하다.

 

Windows에서 가상 메모리가 부족하다고 진단했습니다. 다음 프로그램에서 대부분의 가상 메모리를 사용했습니다. mysqld.exe(2096)에서 1462493184바이트를 사용했고, explorer.exe(3136)에서 616431616바이트를 사용했으며......

 

 

 

 

 

해결하기 이전에 궁금해졌다. Windows에서 이야기하는 메모리들 중, 가상메모리는 무엇일까?

 

 

 

 

 

가상 메모리란?

메모리관리 기법의 하나로, 기계에 실제로 이용 가능한 기억 자원을 이상적으로 추상화하여 사용자들에게 매우 큰(주) 메모리로 보이게 만드는 것을 말한다. 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식이다. 이러한 방식은 멀티태스킹 운영 체제에서 흔히 사용되며, 실제 주기억장치보다 큰 메모리 영역을 제공하는 방법으로도 사용된다.

 

 

 

 

 

위 가상 메모리 정의는 위키백과에서 가져온 내용이다. 쉽게 말해 보조기억장치인 하드디스크의 용량 일부를 RAM에서 메모리를 제공하듯이 디스크 용량을 제공하여 가상의 주소를 부여해 가용할 수 있도록 제공하는 메모리인것이다. 

 

그렇다면, Windows 32bit와 64bit에서 가용하는 가상메모리에는 차이가 있을까? 정답은 있다. 안그래도 여러 블로그와 여러 플랫폼에서 작성해주신 글들을 많이 찾아봤다. (덕분에 윈도우 32bit/64bit에서 가상메모리가 어떤 형태로 쓰이는지 어떻게 쓰이는지 조금은 알 수 있는 계기가 되었다.)

작성자도 간혹 "윈도우 32bit버전을 사용하게 되면 4GB 이상의 RAM을 활용할 수 없다"는 이야기를 접하곤 했다. 그런데 검색해보면서 그러한 내용이 맞는것 같다는 생각이 들정도로 작성된 글 대부분이 그렇게 이야기해주고 있는곳이 많았다. 윈도우 XP, 비스타, 7, 8이 32bit버전의 클라이언트 윈도우라고 한다. 

우리가 사용하는 메모리들 중 보조기억장치로 사용하는 하드 디스크가 있다. 하드 디스크에는 C,D,E... 등등의 드라이브가 있는데 여기서 C드라이브 내에 pagefile.sys라는 파일이 있는데 페이징파일이라고도 한다. 실행을 위해 파일에 있는 데이터를 메모리에 읽었다가 사용빈도, 우선순위에 따라 페이징 파일로 보내거나 메모리로 불러오거나 할때 사용한다고 한다. 이점 참고하고 아래 내용을 들어가본다.

32bit는 CPU 32bit 주소 지정방식을 사용하였기 때문에 할당할 수 있는 전체 메모리 공간의 개수도 2^32byte 즉 4GB가 된다. PAM(실제메모리 주소 정보)에 할당할 수 있는 전체 메모리 주소는 2^32Byte 즉 4GB의 크기를 가지게 된다. 이러한 한계로 인해 32bit 시스템은 전체 메모리의 용량이 4GB밖에는 안되는것이다. 그래서 32bit 시스템에 메모리를 추가적으로 달아도 4GB이상의 메모리는 사용할 수 없다.

 

위와 같은 내용에 반대로 64bit 윈도우의 경우엔 커널 메모리 공간이 8TB, 유저 메모리 공간이 8TB나 된다. 그리고 64bit 윈도우에서 32bit 프로그램을 실행한다고 하더라도 동일한 2GB 유저 메모리 공간을 할당해주지만 4GT기술을 사용할 수 있도록 제작된 프로그램인 경우, 자동으로 4GB의 유저 모드 공간을 제공해준다. 

 

고로, 윈도우 32bit, 64bit 중 사이트를 운영 및 관리하기 위해선 64bit 운영체제를 사용하는것이 제일인듯하다. 그리고 앞으로 32bit 운영체제가 설 자리는 현저히 줄어들고 줄어들다보면 사라지지 않을까라는 생각도 하게 된다. 운영체제 메모리부분만 정말 살짝 발가락만 담군 정도로 알아봤지만 굉장히 어려운듯하다. 

 

 

 

 

 

 

윈도우10 32bit를 사용하는 경우에 가상메모리 부족 현상이 발생한다면 64bit 운영체제로 업데이트하는게 좋겠다! RAM도 충분히 늘리면 더 좋을것 같다!

 

 

 

 

 

 

 

 

 

 

그리고, 혹시나 나중에 가상 메모리를 변경해야하는 상황이 발생했을때 변경 방법 또한 남겨놓고자 한다. 32bit, 64bit 운영체제를 사용하는 어느 환경에서나 설정을 변경해야할 상황은 있을 수도 있을테니까 아래 방법으로 저장해둔다.

 

 

 

 

 

1.  내 컴퓨터의 속성창으로 들어간다.

 

 

 

 

 

 

2.  정보 아래에 관련설정에 고급 시스템 설정을 들어간다.

 

 

 

 

 

 

3.  시스템 속성에 고급 > 성능의 설정을 들어간다.

 

 

 

 

 

 

4.  성능옵션 고급탭에서 가상 메모리의 변경으로 들어간다.

 

 

 

 

 

 

5.  가상모메리창에서 설정해야할 사항들 설정 후, 설정 및 확인 버튼을 누르고 종료한다.

 

모든 드라이브에 대한 페이징 파일 크기 자동 관리 체크박스를 해제해야 아래 내용들을 수정할 수 있기 때문에 먼저 해제 후 진행한다. 사용자 지정 크기를 체크하고 처음크기 및 최대 크기를 설정 후 설정버튼을 누르고 확인버튼을 눌러 종료한다.

 

처음크기 : RAM 용량 x 1024(1Byte) x 1.5
최대크기 : 처음크기 x 3

 

 

 

 

 


[참고]

 

System engineer

CafeCEO

 

 

 

 

 

반응형

댓글