본문 바로가기
Linux/TIP

[CentOS] LINUX swap file 생성으로 메모리 부족을 해결...

by aegypius 2020. 11. 23.
728x90
반응형

Service Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.


  운영중인 서버 한 대를 이전해야 하는 상황인데 조금 번거로운 일이 생겼다. 보통 서버를 이전하는 경우라면 새로운 서버를 추가로 세팅한 후에 기존의 서버에서 자료를 넘기면 그만일 것이다. 하지만 지금은 A서버를 B서버로 옮기기 전에 임시서버(?)를 두고 이곳에 모두 옮긴 후 며칠 후에나 새로운 B 서버로 이전해야 한다. 여기서 그 이유는 중요하지 않다. 어떤 기술적인 문제는 아니고 서류상의 문제이기 때문에....

  임시로 사용할 서버는 vultr에서 올해 선보인 서울리전으로 선택했는데, 가장 낮은 용량의 vps를 사용했음에도 그 성능이 꽤나 괜찮았다. (2~3일만 사용할 것이기에 CentOS8, 1core, 램은 1024MB, SSD 24GB으로 실재로 운영하기에는 턱없이 부족하다.) 기존의 서버에서 운영중이던 웹사이트(10,000개 이상의 웹페이지와 MySQL 4~50MB정도의 규모) 몇 개를 올리다 보니 서버의 가용메모리가 차츰 줄어든다. 대략 웹사이트 12개를 이전했더니 가끔씩 503 Service Unavailable 오류가 보이지만... -_-; 예상보다 잘 버텨준다!.

HTTP 503 error : Service Unavailable

  top, free 로 메모리를 확인해보니 아래와 같다.

[root@vultrguest /]# free
              total        used        free      shared  buff/cache   available
Mem:         838292      593684       54864      110632      189744       31176
Swap:             0           0           0
[root@vultrguest /]# top
top - 04:21:03 up 10:18,  1 user,  load average: 0.00, 0.01, 0.00
Tasks: 110 total,   1 running, 109 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.3 hi,  0.0 si,  0.0 st
MiB Mem :    818.6 total,     63.2 free,    577.7 used,    177.7 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.     36.3 avail Mem

  이 서버에서 운영되는 사이트들은 접속자가 많지는 않지만 google을 포함한 검색엔진의 bot 들이 자주 드나들기 때문에 조금 신경을 써야 한다....대충 48시간만 버텨주길....

  저장공간을 고려해서 대략 6GB의 스왑(swap) 파일을 아래와 같이 생성했다.

fallocate -l 6GB /swapfile

  / 에 6GB 용량의 swapfile이 생성되었다. df로 살펴보자.

[root@vultrguest /]# du -h swapfile
5.6G    swapfile

  스왑파일의 퍼미션은 0600으로 설정해야 한다. 그렇지 않으면 아래와 같은 오류메시지가 보인다.

[root@vultrguest /]# swapon /swapfile
swapon: /swapfile: insecure permissions 0644, 0600 suggested.
swapon: /swapfile: read swap header failed

  그리고 read swap header failed 와 같은 오류 메시지도 볼 수 있다. 아래와 같이 mkswap명령으로 스왑영역을 먼저 설정해야 한다. 파티션이나 파일을 스왑영역으로 설정할 수 있다.

# chmod 600 /swapfile
# mkswap /swapfile
Setting up swapspace version 1, size = 5.6 GiB (5999992832 bytes)
no label, UUID=c1ec925c-03ed-4018-90e2-d6d3f886a6e3
#

  이제 생성한 스왑파일을 적용시켜보고, 확인하자.

# swapon /swapfile
[root@vultrguest /]# free
              total        used        free      shared  buff/cache   available
Mem:         838292      416140      230972       97316      191180      214616
Swap:       5859368      215564     5643804
[root@vultrguest /]# top
top - 04:48:39 up 10:46,  1 user,  load average: 0.04, 0.01, 0.00
Tasks: 110 total,   3 running, 107 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
MiB Mem :    818.6 total,    216.3 free,    407.2 used,    195.1 buff/cache
MiB Swap:   5722.0 total,   5511.5 free,    210.5 used.    204.6 avail Mem

  속도는 그리 느리지 않았다... 아무래도 새로운 서버에는 CentOS8에 php 7.4.12로 운영할 것 같다. 대략 이틀은 버텨주지 않을까...기대해본다.

  리부팅 후에도 스왑파일을 사용하려한다면 /etc/fstab를 열어서 다음의 한 줄을 추가하는 것이 가장 간편해 보인다.

/swapfile   none    swap    sw    0    0

  참고로 스왑파일의 용량을 줄이거나 늘리고 싶은 경우, 기타 삭제해야하는 상황이라면 swapoff 명령을 사용할 수 있다.

# swapoff -a

  위와 같이 스왑을 비활성화 한 후에 생성했던 스왑파일을 제거할 수 있다.  만약 메모리를 할당할 수 없다는 오류가 발생한다면, swap파일이 사용하던 메모리가 실제 메모리의 양보다 큰 경우이다. 이때는 캐시 메모리를 삭제하거나 서버를 부팅 한 후에 다시 설정해야 한다.

 


  워드프레스 호스팅을 위한 서버구축과정을 정리하면서 swap파일의 설정에 대한 내용을 중복 정리하였다. 거의 비슷한 내용이지만 아래의 링크를 보면 최근에 스왑파일에 대해서 그나마(?) 간결하게 정리한 글을 볼 수 있다.

2021.04.14 - [Linux/for Hosting] - (3) wordpress 호스팅을 위한 리눅스 서버 구축 - 가상메모리(swap)설정

 

(3) 워드프레스를 위한 리눅스 서버 구축 - 가상메모리(swap)설정

가상메모리의 설정 아무래도 CentOS 7을 기준으로 작성하는 것이지만 다른 배포판을 사용한다 하더라도 큰 무리는 없을 것이다. 권장 메모리의 크기라는 것이 존재는 하지만 이는 어디까지나 권

aegypius.tistory.com

728x90
반응형

댓글