서비스 사용자 증가에 따라 서버는 많은 자원을 사용하게 된다. 이때 기본적인 부하상태 확인하는 명령들을 정리한다.
CPU 코어수 Memory 용량 도 확인하여 분석에 참고하자.
작성일 : 2022-03-24 OS : CentOS Linux release 7.6.1810

1> PID 값 확인
1 2 3 4 5 6 7 | ps -ef | grep [구분명] | grep - v grep | awk '/[실행명]/ {print $2}' # EX> tomcat pid ps -ef | grep tomcat | grep - v grep | awk '/java/ {print $2}' # EX> node application pid ps -ef | grep opendocs | grep - v grep | awk '/node/ {print $2}' |
2> thread 수 확인
1 | ps uH p [PID] | wc -l |
※ 쓰레드는 메모리를 증가시키므로 top 명령으로 체크가 필요
3> open file 수 확인
1 | lsof -p [PID] | wc -l |
※ 리눅스는 파일 단위로 소켓을 관리하므로 해당 프로세스가 열고있는 파일 수 체크가 필요
4> ulimit & prlimit (시스템 자원 사용제한) 설정값 확인
1 2 3 4 5 | # 시스템 전체 ulimit -Hn ulimit -Sn # 특정 프로세스 prlimit --nofile --output RESOURCE,SOFT,HARD --pid [PID] |
※ ulimit / prlimit 설정값 제한에 따라 open file 수가 제한됨
5> port 수 확인
1 2 3 4 5 6 7 8 9 10 11 | # 전체 오픈된 포트 netstat -an | wc -l # PORT 확인 netstat -an | grep [PORT] | wc -l # IP로 확인 netstat -an | grep [IP] | wc -l # 상태별 확인 netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n |
6> tcpdump 로 패킷확인
1 2 3 4 | # 패킷목록 tcpdump -i eth0 dst [IP] # 헤더정보 tcpdump -vvvs 1024 -l -A | egrep --line-buffered "^........(GET |HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: " | sed -r 's/^........(GET |HTTP\/|POST |HEAD )/\n\1/g' |