어떻게하면 시스템을 보다 빠르게 만들 수 있을까요? 사이트 운영자라면 바쁜 와중에 이런 고민을 계속하기 마련이죠.
무릇 컴퓨터나 웹사이트나 속도를 개선하는 방법중의 하나는 빠르게 작동하는 부품을 적극적으로 활용하는 것입니다.
마치 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
Code language: PHP (php)
1.2. my.cnf 파일 편집
my.cnf 파일을 편집해 tmpdir을 아래처럼 바꿉니다. 제가 사용하는 Ubuntu 18.04에서 my.cnf는 /etc/mysql 폴더에 있습니다.
tmpdir = /dev/shm
Code language: PHP (php)
1.3. MySql 재시작
이 다음에는 MySql을 다시 시작합니다. 아래 명령어를 참조
service mysqld restart
Code language: PHP (php)
1.4. 검증
솔직히 이 방법은 매우 단순합니다. 그렇지만 가끔 도대체 적용되고 있는지 혼란스러울때도 있죠. 정망 정말 서버 속도가 진정 잘 나올까 궁금해질때 한번씩 설정들이 제대로 작동하는지 궁금해질 때가 있기는 하죠.
그럴때는 아래와 같은 명령을 사용해서 확인합니다.
먼저 MySQl 또는 MariaDB에 접속합니다.
mysql -u root -p
Enter password:
Code language: PHP (php)
그 다음 MySql 명령어창이 나오면 아래 명령어를 사용합니다.
SHOW VARIABLES LIKE 'tmpdir';
Code language: PHP (php)
그러면 아래와 같이 tmpdir이 /dev/shm/으로 적용되어 있다는 메세지를 발견할 수 있습니다.
2. 새로운 램디스크를 만드는 방법
이번에는 조금 더 번거롭지만 새로운 램디스크를 만들어 운영하는 방법을 알아보죠.
이는 새로운 램디스크를 만들고 이를 fstab에 등록하고 마운트하는 과정을 거칩니다.
2.1. Ram Disk 만들기
램디스크라고해서 대단한 것은 아니구요. 메모리에 별도 폴더를 만드는 것이라고 보면 됩니다.
mkdir /dev/shm/mysql
Code language: PHP (php)
2.2. 새로만든 램디스크 폴더에 권한부여
아래와 같은 명령어를 사용해 새로 만든 램디스크 폴더에 권한을 부여합니다.
chown mysql:mysql /dev/shm/mysql
Code language: PHP (php)
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)
Code language: PHP (php)
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
Code language: PHP (php)
2.5. 램디스크 마운트
이렇게 만들어진 램디스크를 마운트 합니다.
그 전에 nginx를 재부팅합니다.
service nginx restart
mount -a
Code language: PHP (php)
2.6. 확인
제대로 작동했는지 확인하는 방법은 앞에서 소개한 df -h를 이용해 랜디스크에서 적용된 리스트를 확인해 봅니다.
그리고 앞에서 소개한 것처럼 데이타베이스에 접속해 SHOW VARIABLES LIKE ‘tmpdir’;명령을 이용해 확인할 수 있습니다.
새롭게 뉴스레터를 시작했습니다.
1️⃣ 주식 등 투자 정보 : 기업 분석, IB 투자의견 등 투자 관련 내용
..... 테슬라 실적 및 IB들의의 테슬라 투자의견
2️⃣ 사례 및 트렌드 : 사례연구와 트렌드 관련 괜찮은 내용
.....유튜브와 경쟁대신 구독 전환한 비디오 플래폼 비메오 사례