리눅스 서버 메모리 최적화 설정

리눅스 서버에서 메모리 최적화는 성능과 안정성을 향상시키는 중요한 과제입니다. 메모리 최적화란 메모리 사용을 효율적으로 관리하고 필요한 작업을 우선적으로 실행하는 것을 의미합니다. 이 글에서는 리눅스 서버 메모리 최적화를 위한 설정 방법에 대해 알아보겠습니다.

1. 스왑 영역 조정하기

스왑 영역(swap space)은 시스템의 메모리가 부족할 때 사용되는 보조 메모리입니다. 스왑 영역 설정에 따라 성능에 영향을 미치기 때문에 올바른 크기로 조정해야 합니다. swappiness란 스왑 영역을 얼마나 활용할지를 결정하는 값으로, 기본값은 60입니다.

기본값은 대부분의 시나리오에서 잘 작동하지만, 특정 경우에는 조정이 필요할 수도 있습니다. 예를 들어, 웹 서버나 데이터베이스 서버 등이 있는 경우 메모리 수요가 상당할 수 있으므로 swappiness 값을 낮춰야 합니다.

$ sudo sysctl vm.swappiness=10

위 명령어를 통해 swappiness 값을 10으로 설정할 수 있습니다. 이러한 설정을 위해서는 root 권한이 필요합니다. 이 값을 적용하려면 /etc/sysctl.conf 파일에 설정을 추가해야 합니다.

$ sudo vim /etc/sysctl.conf

파일을 열고 다음 설정을 추가합니다.

vm.swappiness = 10

저장 후 파일을 닫고, 다음 명령어를 실행하여 변경사항을 적용합니다.

$ sudo sysctl -p

2. 핵심 서비스에 메모리 할당하기

리눅스는 기본적으로 메모리를 페이지 캐시와 버퍼에 할당하여 I/O 성능을 향상시킵니다. 하지만, 사용자 프로세스에 충분한 메모리를 할당하지 않을 수도 있습니다. 핵심 서비스에 충분한 메모리를 할당하기 위해서는 /etc/security/limits.conf 파일을 수정해야 합니다.

예를 들어, 웹 서버를 운영한다면 다음과 같이 파일을 수정할 수 있습니다.

$ sudo vim /etc/security/limits.conf

파일 끝에 다음 내용을 추가합니다.

www-data hard memlock unlimited
www-data soft memlock unlimited

위 설정은 www-data 사용자에게 메모리를 무제한으로 할당하는 것을 의미합니다. 이는 웹 서버가 사용하는 리소스에 대한 제한을 풀어주는 역할을 합니다.

3. 불필요한 서비스 및 프로세스 제거하기

리눅스 서버에서 불필요한 서비스와 프로세스를 실행하면 메모리 자원을 낭비할 수 있습니다. 따라서, 메모리 최적화를 위해 불필요한 서비스를 제거하고, 필요한 서비스에 대해서는 메모리 사용량을 최소화하여 실행해야 합니다.

불필요한 서비스를 제거하려면 다음 명령어를 사용할 수 있습니다.

$ sudo systemctl disable servicename

위 명령어에서 servicename은 제거하려는 서비스의 이름입니다. 제거한 서비스는 부팅 시 자동으로 시작되지 않으며, 수동으로 시작해야 합니다.

필요한 서비스의 메모리 사용량을 최소화하기 위해서는 해당 서비스의 설정 파일을 수정해야 합니다. 예를 들어, 웹 서버(예: Apache)의 경우 httpd.conf 파일을 편집하여 불필요한 모듈을 비활성화할 수 있습니다.

$ sudo vim /etc/httpd/conf/httpd.conf

파일을 열고, 다음과 같이 설정을 수정합니다.

LoadModule module_name /path/to/module.so

위 설정에서 module_name은 비활성화할 모듈의 이름이고, /path/to/module.so은 해당 모듈의 경로입니다. 이러한 설정 변경 후에는 웹 서버를 다시 시작해야 합니다.

$ sudo systemctl restart httpd

리눅스 서버 메모리 최적화 설정은 성능 향상과 안정성을 강화하는 데 중요한 역할을 합니다. 이 글에서는 스왑 영역 조정, 핵심 서비스에 메모리 할당, 불필요한 서비스 제거에 대해 알아보았습니다. 이러한 설정들을 적용하여 메모리 사용을 최적화하고, 서버의 성능을 향상시키세요.