[Linux] 리눅스 성능 튜닝 기본 가이드

리눅스 서버가 느려졌다고 느껴질 때
리눅스 성능 튜닝은 복잡해 보일 수 있지만, 핵심만 잘 이해하고 접근하면 어렵지 않습니다.

리눅스 서버 성능을 점검하고 기본적인 튜닝을 적용하는 방법을 안내해드리겠습니다.


시스템 부하(load average) 확인하기

uptime

uptime 명령어를 입력하면 다음과 같은 정보가 출력됩니다.

14:20:52 up 10 days,  3:32,  2 users,  load average: 0.58, 0.44, 0.36
  • 1, 5, 15분 간의 평균 부하(load average)를 보여줍니다.
  • 일반적으로 CPU 코어 수보다 평균 부하가 작으면 정상입니다.

 

CPU 사용량 점검

top

top 명령어로 실시간 CPU 사용량을 확인할 수 있습니다. CPU 사용률이 지나치게 높다면 다음을 점검해보세요.

  • 특정 프로세스가 CPU를 과도하게 사용하는지
  • 백그라운드에서 무거운 작업이 지속되는지
  • 멀티코어 활용이 제대로 되고 있는지

 

메모리 사용량 확인

free -h

메모리가 부족하면 스왑 사용량(swap)이 급격히 늘어나고, 전체 시스템 속도가 느려질 수 있습니다.

              total        used        free      shared  buff/cache   available
Mem:           7.8G        6.1G        512M        300M        1.2G        1.0G
Swap:          2.0G        1.5G        500M

buff/cache가 많고 available이 부족하다면 메모리 정리를 고려해볼 수 있습니다.

 

I/O 병목 확인하기

iostat -x 1 3

iostat는 디스크 I/O 상태를 확인하는 데 유용합니다. 특정 디스크의 %util 값이 80% 이상이면 병목 현상이 있을 수 있습니다.

대체 명령어로는 iotop, dstat도 사용할 수 있습니다.

 

네트워크 상태 확인

ss -tuln
  • -t: TCP, -u: UDP, -l: Listen 중인 포트, -n: 포트 번호 표시

서버가 외부 요청을 제대로 받고 있는지, 불필요한 포트가 열려 있는지 확인할 수 있습니다.

 

기본적인 커널 튜닝 (sysctl)

/etc/sysctl.conf 파일에 다음과 같은 항목을 추가해 네트워크 튜닝을 적용할 수 있습니다.

# TCP 커넥션 재활용
net.ipv4.tcp_tw_reuse = 1

# SYN flood 방지
net.ipv4.tcp_syncookies = 1

# 파일 디스크립터 최대값 증가
fs.file-max = 100000

적용은 다음 명령어로 수행합니다.

sudo sysctl -p

 

튜닝은 점검부터

리눅스 성능 튜닝은 "막연히 빠르게 만드는 것"이 아니라, 현재 병목 지점을 정확히 파악하고, 그에 맞는 개선을 적용하는 과정입니다.

점검 항목들만 잘 이해하고 체크해도, 서버 운영 중 만나는 대부분의 문제를 빠르게 진단하고 대응할 수 있습니다.