본문 바로가기
Linux/Linux

Linux) 짧은 시간에 빠르게 서버 상태 파악하기(3)

by LILO 2021. 5. 9.
반응형

서버 상태 파악하기 - LAB

 

"pidstat" 명령을 이용해 Process 별로 CPU를 얼마나 사용중인지 확인합니다. "top" 명령과 비슷한 Output을 가져오지만 해당 세션(스크린) 전체에 표시하는 것이 아니고 Interval 주기마다 변화되는 지표를 보여줍니다.

누군가에게 보여주거나 기록하기에 좋은 편이긴 합니다.

 

아래의 명령어는 1초마다 Process별로 Resource를 얼마나 사용하고 있는지 확인합니다.

 

# pidstat 1

 

 

특별히 많이 잡고있는 솔루션도 보이지 않고 Load 역시 매우 안전한 편입니다.

 

 

 

Block Device의 성능과 관련된 지표를 확인하기 위한 "iostat" 명령을 사용합니다.

1초 간격으로 Block Device에 관한 지표를 받아 옵니다.

 

# iostat -xz 1

 

 

다 중요한 항목이겠지만 그 중에서 주로 보면 좋을 항목들을 아래에 정리했습니다.

 

- r/s: 해당 Device에 요청한 초당 읽기 요청 수
- w/s: 해당 Device에 요청한 초당 쓰기 요청 수
- rkB/s: 해당 Device에서 초당 읽어들인 데이터 블록 단위
- wkB/s: 해당 Device에서 초당 쓴 데이터 블록 단위
- await: 해당 Device에서 처리되기 위해 요청된 입출력 평균 시간(ms)

위의 지표들의 설명을 참고해 확인해본 결과 크게 문제될 이슈가 없었습니다.  

 

 

 

앞에서 "vmstat"을 통해 메모리 부분을 자세하게 확인을 했었지만 "free" 명령어는 자주 쓰이기때문에 소개합니다.

메모리 관련된 지표들이 굉장히 깨끗하게 나오는 명령입니다.

 

"free" 명령어는 인자에 k, m, g를 붙여서 용량의 단위별로 확인할 수 있습니다. "g" 옵션은 아주 간단하게 볼 때는 유용하게 쓰이지만 GB 단위이기 때문에 생략된 부분이 있기 때문에 보통 "k"나 "m" 옵션을 많이 사용합니다.

 

# free -m

 

 

Shared, Buffer, Cache를 포함한 여유 공간인 Free 영역이 1.53G 정도 남았고 전체적으로 봤을 때도 거의 사용하지 않은 편입니다. Swap 영역도 전혀 건드리지 않았습니다.

 

여기서 Available 같은 경우는 Shared, Buffer, Cache 공간을 제외하고 산정된 영역으로 나중에 회수가 가능한 메모리입니다. 가끔 가다 "echo"로 특정 명령을 사용하여 캐시메모리를 줄여주는 작업을 하는 경우가 있는데 이는 OS에 행이 걸릴 수도 있는 문제이므로 사용하는 것을 자제하기 바랍니다

(특히, inode 캐시까지 없애는 3이 가장 큰 원인이 됩니다.)

 

그리고 만약 비우는 작업이 필요할 시 특정 솔루션으로 인해 쌓이는 경우가 많기 때문에 그 솔루션을 계속 이용한다면 어차피 다시 쌓일 확률이 높습니다. 되도록이면 캐시와 버퍼에 관한 이해도를 높인 상태에서 작업 하는 것을 권합니다

 

이 Free 영역이 5%대에서 장기간 유지된다면 메모리 증설 작업이 필요할 수도 있습니다.

 

 

 

 

다음은 거의 만능에 가까운 성능 지표를 볼 수 있는 "sar" 명령어를 이용하여 네트워크 부분만 보려고 합니다.

앞에서 많은 명령으로 확인한 것이 많기 때문에 다른 지표는 생략하고 합니다. 사실 "sar" 명령의 옵션만 잘 써도 애지간한 지표들은 다 볼 수 있긴합니다.

 

1초 간격으로 Network Interface 별로 네트워크 처리량을 확인하기 위해 아래의 명령을 사용합니다.

 

# sar -n DEV 1

 

 

- rxpck/s: 초당 받은 패킷수
- txpck/s: 초당 전송한 패킷수
- rxkB/s: 초당 받은 bytes
- txkB/s: 초당 전송한 bytes

 

해당 IP로 특별한 요청도 별로 없는 것으로 보이고 이슈될 만한 문제가 없어보입니다.

왜냐면 "rxkB/s" 지표에 받은 패킷이 거의 없기 때문이고 해당 인터페이스의 경우 1Gbit/s가 최대 값이기 때문에 안정권이라고 예측하였습니다.

 

 

이제 통신량과 관련된 지표를 확인하게 아주 간단하게 네트워크와 관련된 지표를 마무리하려고 합니다. 이 작업도 "sar"를 이용합니다.

 

1초 간격으로 오류 및 재전송 세그먼트와 TCP 통신량을 요약해서 확인하기 위해 아래의 명령을 이용합니다.

 

# sar -n TCP,ETCP 1

 

 

여기서 Active와 Passive 수를 중점으로 보면 서버의 Load를 빠르게 체크할 수 있습니다. 

retrans/s는 네트워크 및 서버에 관한 이슈와 직결된 문제를 체크할 수 있습니다.

 

아래에서 3개에 대한 설명을 간단히 하려고 합니다.

 

- active/s: 로컬에서 요청한 초당 TCP 연결 수
- passive/s: 원격지로부터 요청된 초당 TCP 연결 수
- retrans/s: 초당 TCP 재연결 수

 

 

 

"top" 명령을 이용해 실시간으로 프로세스별 메모리 및 CPU 등 주요 리소스 사용량을 실시간으로 확인합니다.

이 명령은 리눅스를 사용한다면 계속 사용하게 될 명령이기 때문에 엔지니어 뿐만 아니라 리눅스를 사용한다면 개발자도 숙지해야 됩니다. 

 

# top

 

물리메모리 사용량 순

 

 

CPU 사용량 순

 

유저별 사용량

 

 

"RES"는 물리 메모리 크기이고 %CPU는 CPU 사용량입니다. 크게 이 둘만 보고있어도 빠르게 캐치 가능합니다.

 

- Shift + m: RES(물리 메모리) 사용량 순 정렬
- Shift + p: %CPU(CPU 사용률) 순 정렬
- Shift + U + <User Name>: 입력한 유저별 조회

 

 

 

 

○ REFERENCE

 

netflixtechblog.com/linux-performance-analysis-in-60-000-milliseconds-accc10403c55

 

Linux Performance Analysis in 60,000 Milliseconds

You log in to a Linux server with a performance issue: what do you check in the first minute?

netflixtechblog.com

 

반응형