[워드프레스 최적화] 데이타베이스를 램디스크에서 작동시켜 속도 개선 방법

하늘을 나는 전투기, Image - rodrigo rodriguez

어떻게하면 시스템을 보다 빠르게 만들 수 있을까요? 사이트 운영자라면 바쁜 와중에 이런 고민을 계속하기 마련이죠.

무릇 컴퓨터나 웹사이트나 속도를 개선하는 방법중의 하나는 빠르게 작동하는 부품을 적극적으로 활용하는 것입니다.

마치 SSD를 적용하면 어떤 방법보다 큰 돈들이지 않고 컴퓨터 속도를 를 빠르게 만들 수 있는 것처럼 말입니다.

웹사이트에서도 서버의 자원 중 가장 빠르게 작동할 수 있는 램을 적극 활용하는 방법을 생각해 볼 수 있습니다.

예전 워드프레스 성능을 최적화하는 방법으로 “데이타베이스(MariaDB) 최적화 방법”을 소개한 적이 있는데요.

이 글을 보고 어느 분께서 데이타베이스를 램에 올려 사용하는 방법에 대해 추가 문의를 주셔서 오랜만에 이 문제를 조금 더 깊게 고민하고 검색해 정리하는 계기가 있었습니다.

이러한 과정에서 얻었던 정보를 간략 정리해 공유해 봅니다.

여기에는 두가지 접근 방법이 있는데요. 하나는 기존 시스템이 만들어 놓은 랜디스크 폴더인 tmpfs 폴더를 그대로 사용하는 방법과 별도 램디스크 폴더를 만드는 방법이 있습니다.

알고보면 두가지 다 같은 방법인데요. 별도 폴더를 만들어 (관리적인 측면에서) 조금 더 용이하게 만들지만 조금 더 만들기 번거로운 방법을 택할 것이냐 간편하게 만들것이냐의 차이일 뿐입니다.

1. 기 램에 만들어진 tmpfs 폴더 활용

우리가 운영하는 서버에는 설치시부터 기본적으로 존재하는 tmpfs폴더들이 존재합니다. 이는 df -h라는 명령어로 쉽게 확인할 수 있는데요.

제가 운영하고 있는 Ubuntu 18.04, NGINX 웹서버에서 df -h 명령어를 사용하면 아래 이미지에서 볼 수 있는 여러 tmpfs 폴더들을 발견할 수 있습니다.

여러 tmpfs 폴더중에서 가장 일반적인 /dec/shm 폴더를 활용하는 것으로 해보죠. 이는 아래와 같은 순서 진행하면 됩니다

1.1. MySql에게 이 폴더를 사용하라고 알려줍니다.

chmod 1777 /dev/shm

1.2. my.cnf 파일 편집

my.cnf 파일을 편집해 tmpdir을 아래처럼 바꿉니다. 제가 사용하는 Ubuntu 18.04에서 my.cnf는 /etc/mysql 폴더에 있습니다.

tmpdir = /dev/shm

1.3. MySql 재시작

이 다음에는 MySql을 다시 시작합니다. 아래 명령어를 참조

service mysqld restart

1.4. 검증

솔직히 이 방법은 매우 단순합니다. 그렇지만 가끔 도대체 적용되고 있는지 혼란스러울때도 있죠. 정망 정말 서버 속도가 진정 잘 나올까 궁금해질때 한번씩 설정들이 제대로 작동하는지 궁금해질 때가 있기는 하죠.

그럴때는 아래와 같은 명령을 사용해서 확인합니다.

먼저 MySQl 또는 MariaDB에 접속합니다.
mysql -u root -p
Enter password: 
그 다음 MySql 명령어창이 나오면 아래 명령어를 사용합니다.
SHOW VARIABLES LIKE 'tmpdir';
그러면 아래와 같이 tmpdir이 /dev/shm/으로 적용되어 있다는 메세지를 발견할 수 있습니다.
워드프레스 최적화_램디스크 확인

2. 새로운 램디스크를 만드는 방법

이번에는 조금 더 번거롭지만 새로운 램디스크를 만들어 운영하는 방법을 알아보죠.

이는 새로운 램디스크를 만들고 이를 fstab에 등록하고 마운트하는 과정을 거칩니다.

2.1. Ram Disk 만들기

램디스크라고해서 대단한 것은 아니구요. 메모리에 별도 폴더를 만드는 것이라고 보면 됩니다.

mkdir /dev/shm/mysql

2.2. 새로만든 램디스크 폴더에 권한부여

아래와 같은 명령어를 사용해 새로 만든 램디스크 폴더에 권한을 부여합니다.

chown mysql:mysql /dev/shm/mysql

2.3. MySql id 찾기

램디스크는 특성상 재부팅하면 없어지는데요. 이러지말라고 fstab에 등록을 시킴니다.
이는 id mysql을 명령어를 이용합니다.

그러면 uid=114(mysql) gid=116(mysql) groups=116(mysql) 와 같은 형식의 정보가 출력됩니다. 이를 기록해 놓습니다.

id mysql
uid=114(mysql) gid=116(mysql) groups=116(mysql)

2.4. fstab 파일 편집합니다.

그냥 다 아는 편집기를 통해서 fstab 파일을 편집 상태로 만들어 램디스크를 등록합니다.
여기에서 여기서는 위에서 검색했던 uid와 gid 정보를 활용합니다.

nano /etc/fstab
tmpfs /dev/shm/mysql tmpfs rw,gid=116,uid=114,size=768M,nr_inodes=50k,mode=0700 0 0

2.5. 램디스크 마운트

이렇게 만들어진 램디스크를 마운트 합니다.
그 전에 nginx를 재부팅합니다.

service nginx restart
mount -a

2.6. 확인

제대로 작동했는지 확인하는 방법은 앞에서 소개한 df -h를 이용해 랜디스크에서 적용된 리스트를 확인해 봅니다.

그리고 앞에서 소개한 것처럼 데이타베이스에 접속해 SHOW VARIABLES LIKE ‘tmpdir’;명령을 이용해 확인할 수 있습니다.

3 COMMENTS

  1. 좋은 글 잘 읽었습니다.

    DB를 램디스크에 마운트하여 작동할 경우 어느 정도 속도 향상을 기대할 수 있나요?

    • 안녕하세요?

      따로 속도를 측정해보지는 않았구요.
      제아 아는 상식선에서 답변을 드리면

      1. 예전에는 HDD를 사용했고 여기 tmpdir에서 작업했기 때문에 상대적으로 느렸는데
      이를 RAM으로 옮기면 디바이스 속도차이만큼 개선 효과가 있을 수 있다.
      2. 다만 이는 데이타베이스 용량이 많고 빠르게 데이타 작업이 이루어지는 경우 체감할 수 있지 조그만한 사이트는 별 차이없다

      정도로 알고 있습니다. 이런 논지에서 살펴보면 작은 사이트의 경우 이렇게까지 몸부림칠(?) 이유는 많지 않아보이기도합니다.

      별로 도움이 못드렸네요..

LEAVE A REPLY

Please enter your comment!
Please enter your name here