본문 바로가기
개발 공부/서버

[서버 성능 최적화] 모니터링 & 로그 기반 분석, 느린 서버를 수치로 잡아내는 법

by 악마의 개발자 2025. 5. 30.
반응형

서버 성능 최적화


💡 “느려요”라는 말보다 더 정확한 증거가 필요합니다

실무에서 가장 자주 듣는 피드백:

“느려요.”
“버벅여요.”
“왜 그런지 모르겠어요.”

 

하지만 성능 문제는 감이 아니라 숫자와 로그로 판단해야 합니다.
오늘은 서버 성능을 수치로 진단하는 법,
모니터링 + 로그 분석 전략을 알려드릴게요!


📡 서버 성능 모니터링이란?

서버나 애플리케이션의 상태(속도, 오류, 리소스)를 실시간으로 추적하는 시스템

 

✅ CPU 사용률, 메모리 사용량, 요청 수, 에러율 등
✅ 병목 발생 시점을 수치로 확인


🧭 모니터링 도구 종류

도구 설명
top / htop 리눅스에서 실시간 리소스 확인
pm2 monit Node.js 앱 리소스 추적
Grafana + Prometheus 지표 수집 및 시각화
New Relic / Datadog / Sentry APM(Application Performance Monitoring), 실시간 트레이싱
AWS CloudWatch AWS 리소스 상태 모니터링
 

🔍 주요 성능 지표 (KPI)

지표 의미
응답 시간 (Response Time) 한 요청이 처리되기까지 걸리는 시간
에러율 (Error Rate) 전체 요청 중 오류 응답 비율
트래픽 (Throughput) 초당 처리 요청 수 (req/sec)
CPU 사용률 서버 CPU 점유율
메모리 사용량 애플리케이션의 메모리 점유 상태
GC 횟수 메모리 수거 빈도 (Node.js, Java 등에서 중요)
 

📋 로그 기반 성능 분석 전략

✅ 1. 응답 로그 기록

[2025-05-20 13:00:12] GET /users 200  →  ResponseTime: 840ms
  • 요청 URL, 상태 코드, 응답 시간 기록
  • 응답 시간이 특정 구간에서 급증하는 API 찾기 가능

✅ 2. 에러 로그 분리 저장

[2025-05-20 13:05:44] POST /orders 500  →  Internal Server Error: DB Timeout
  • 500 에러, DB 오류 등만 따로 저장
  • 오류 발생 패턴 파악 가능 → 재현 조건 추적

✅ 3. 슬로우 로그 활용 (DB & 서버 공통)

# MySQL 슬로우 쿼리 로그
Query_time: 3.124  Lock_time: 0.000  Rows_sent: 1
SELECT * FROM orders WHERE user_id = 'abc';

→ 평균 이상 걸리는 쿼리를 수집
→ 인덱스, 쿼리 구조, 조건 개선 지점 확인 가능


🧰 병목 구간 분석 실전 예시

  1. 응답 시간이 갑자기 5초 이상 → 로그 보니 특정 API만 느림
  2. 해당 API 내부 코드 분석 → 외부 API 응답 대기 확인
  3. APM에서 trace 추적 → 외부 API 호출에 3.2초 소요
  4. 해결책 → 외부 API 캐싱 + 타임아웃 설정

문제 구간 = 숫자로 확인 → 로그로 추적 → APM으로 흐름 분석


🧠 정리 한마디!

성능 문제는 추측이 아니라 측정으로 잡는다.

 

✔️ 핵심 요약

  • 모니터링: 전체 상태 흐름을 실시간 추적 (CPU, 응답 속도, 트래픽 등)
  • 로그 분석: 특정 API/기능에서의 병목, 오류, 슬로우 쿼리 확인
  • APM 도구: 전체 요청 흐름을 시각적으로 분석 (트레이싱)
반응형