배포한 웹 서비스에서 성능 이슈가 발생했을 때 기본적으로 확인 하고 조치할 수 있는 내용이다.
💾 Disk / Memory / CPU 리소스 점검
확인 명령어 | 설명 | 조치 방법 |
iostat -x 1 5 | 디스크 사용률 및 대기 시간 확인 (%util) | %util 90% 이상이면 디스크 병목 → 로그 디렉토리 분리, SSD 교체 검토 |
vmstat 1 5 | 시스템 전체 리소스 사용 확인 (us, wa 등) | wa가 높으면 디스크 병목, us가 높으면 CPU 과다 → 병목 코드, IO 집중 작업 분리 |
df -h | 디스크 용량 확인 | /var/log, /tmp 디렉토리 정리, 오래된 로그, 백업 파일 삭제 등 |
free -h | 메모리 사용량 확인 | swap 사용량이 많다면 서버 성능이 저하될 수 있다. 불필요한 process 제거, memory 확장 검토 |
htop 또는 top | 실시간 CPU, 메모리 사용률 확인 | 특정 프로세스 CPU/메모리 과다 사용 시 해당 애플리케이션 튜닝 또는 서버 리소스 증설 고려 |
🐘 PostgreSQL 세션 및 쿼리 상태 점검
확인 명령어 | 설명 | 조치 방법 |
SHOW idle_in_transaction_session_timeout; | Idle 상태 세션의 대기 시간 설정 확인 | 기본값이 너무 크면 커넥션이 계속 유지됨 → SET idle_in_transaction_session_timeout TO '60s'; 설정 권장 |
SELECT pid, usename, state, query_start, query FROM pg_stat_activity WHERE state != 'idle'; | 실행 중인 쿼리 및 상태 확인 | 오래 실행 중인 쿼리 분석 및 튜닝 필요시 SELECT pg_terminate_backend(<pid>);로 강제 종료 |
🔨 JVM 상태 및 Thread 점검
확인 명령어 | 설명 | 조치 방법 |
jstat -gcutil <PID> 1s 10 | GC 사용률 및 빈도 확인 | Old GC 비율이 높으면 -Xmx, -Xms 메모리 조정 G1GC 등으로 GC 정책 변경: -XX:+UseG1GC |
jstack <PID> | 자바 스레드 상태 확인 | BLOCKED, WAITING 상태 확인 데드락 발생 여부 확인, 병목 위치 분석 |
ps -eo nlwp | tail -n +2 | awk '{num_threads += $1} END {print num_threads}' | 서버 전체 스레드 수 확인 | 너무 많다면 적절한 수준의 스레드풀 설정 |
ps -ef | grep java | 실행 중인 JVM PID 확인 |
🛜 Network / Connection 상태 점검
확인 명령어 | 설명 | 조치 방법 |
netstat -antp | grep ESTABLISHED | 서버와 클라이언트 간 연결 상태 확인 | |
ulimit -n | 열린 파일 최대 개수 확인 | 기본값 1024이면 부족 → /etc/security/limits.conf 또는 ulimit -n 65535 설정 |
📝 Application 로그 분석
확인 명령어 | 설명 | 조치 방법 |
tail -f /path/to/app.log | 애플리케이션 로그 확인 | 오류 로그, 슬로우 응답 API 분석 타임스탬프 기준으로 느린 시점 파악 |
예외 로그 메시지 분석 | API 실패 또는 느림의 근본 원인 파악 | 외부 API 호출 실패, 쿼리 병목, GC 또는 동시성 문제 파악 |
⚙️ Server 환경 및 설정 확인
확인 명령어 | 설명 | 조치 방법 |
java -XshowSettings:vm -version | JVM 힙 설정 확인 | -Xms, -Xmx 값이 서버 메모리에 비해 낮다면 조정 (예: -Xmx2g) |
Tomcat 설정 (server.xml) | maxThreads, connectionTimeout 등 | 트래픽에 맞춰 maxThreads 증가 (예: 200 → 500) |
프로그램 및 환경 정보
WAS : Apache Tomcat
Framework : SpringMVC
Language : Java
Database : PostgreSQL, Elasticsearch
Server : Linux(CentOS)
728x90
'🌐OS > Linux' 카테고리의 다른 글
[Linux] 디스크 파티션 검사/복구 하기 (with. Emergency) (0) | 2025.04.14 |
---|---|
[Linux] 시스템 로그 수집 및 확인하기 (with. rsyslog) (0) | 2025.02.03 |
[Linux] 노트북으로 개인 Linux 서버 만들기 (9) | 2024.10.03 |
[Linux & Postgres] TestServer DB 자동으로 Patch하기 (0) | 2024.05.25 |
[Linux] 모니터링 (0) | 2023.08.27 |