본문 바로가기
DATABASE/MariaDB

[MariaDB] 현재 Process 보는 방법 및 모니터링 팁

by DANEW 2023. 7. 22.

Intro

안녕하세요.

초보 DBA 다뉴입니다.

 

MariaDB를 운영하며, 프로세스의 상태를 확인해야 할 때가 많은데요.

프로세스 모니터링을 하는 방법에 대해서 간단하게 알아보며, 좋은 팁을 하나 남길까 합니다.


프로세스 확인 방법

ProcessList

MariaDB의 가장 기본적으로 접속되어있는 프로세스를 보는 방법은

processlist 라는 명령어 입니다.

 

해당 명령어를 사용하기위해 먼저 MariaDB에 접속합니다.

mysql -u[user_id] -p[user_pw]

MariaDB의 접속 후 아래의 명령어를 실행하여, 현재 접속중인 프로세스에 대한 정보를 확인합니다.

Show Processlist;

...

현재 프로세스에 대한 여러가지 간단한 정보를 알 수 있는데요.

 

show processlist 명령어로 확인한 정보로는

현재 접속중인 프로세스는 1167개 라는 것을 알 수 있습니다.

 

또한 ID, User, Host, DB, Command, Time, State, Info, Progress라는 정보들을 알 수 있는데요.

ID : 해당 프로세스의 ID 정보

User : 프로세스에 접속 한 사용자 계정 정보

Host : 프로세스에 접속한 IP 접속 정보

DB : 프로세스가 접속한 Database 정보

Commend : 프로세스의 현재 동작 상태

Time : 현재 동작 상태의 작동 시간

State : 동작 상태의 상세 정보

Info : 실행중인 Query의 일부 (100자)

반응형

Full ProcessList

processlist 명령어의 좀더 자세한 정보를 볼 수 있는 명령어 입니다.

사실 크게 많은 정보를 추가로 볼 수 있는것은 아니고, 실행중인 쿼리의 일부가아닌 전체 쿼리가 보입니다.

Show Full Processlist;

Processlist, Full Processlist 둘다 실행중인 쿼리가 없어서 info에 정보가 보이는 것이 없는데요.

Info의 정보에 대해 더 자세하게 볼 수 있느냐의 차이 입니다.

Tip - mysqladmin 활용

쿼리들이 잠깐 실행되고 종료되고를 반복하는데, 지속적으로 모니터링을 하고싶을 때에는 어떻게 해야할까요?

매번 Show Processlist 명령어를 실행시키며, 계속 확인해 봐야하는 걸까요?

이럴 때 사용할 수 있는 방법이 있습니다.

 

mysqladmin 서버관리 명령어를 통해 리눅스 터미널 창에서 확인하는 방법인데요.

mysql명령어를 통해 MariaDB에 접속해서 확인하지 않고 외부에서 명령어로 확인합니다.

 

방법은 간단한데요. 리눅스 터미널 창에서 아래의 명령어를 실행합니다.

mysqladmin -u[user_id] -p[user_pw] processlist

이렇게 mysql명령어를 통해 MariaDB에 접속하지 않고 외부에서 프로세스 정보를 볼 수 있는데요.

 

이렇게만 사용하면 딱히 장점은 없습니다. 추가로 다른 옵션도 보도록하죠.

-- delay option
mysqladmin -u[user_id] -p[user_pw] -i [delay] processlist

-i 옵션 딜레이 옵션을 사용합니다.

이렇게 -i 2를 사용할 경우 2초에 한번씩 계속 반복하여 processlist 명령어를 실행합니다.

 

근데 문제는 제가 확인하고 있는 MariaDB 서버에 프로세스는 1000개가 넘게 접속해 있었는데요.

과연 의미있는 정보를 쉽게 볼 수 있을까요?

 

저는 command 상태가 Sleep인 프로세스를 제외하고 실제 쿼리가 실행되고있는 프로세스만 보고 싶습니다.

이럴땐 추가로 아래의 명령어를 합쳐서 실행합니다.

-- grep
mysqladmin -u[user_id] -p[user_pw] -i [delay] processlist | grep -v Sleep

리눅스 명령어 grep문을 추가하여 Sleep을 포함하고있는 행을 제외하고 출력합니다.

이런식으로 2초에 한번씩 프로세스 상태를 출력하며, 동작중인 프로세스만 확인 할 수 있게 됩니다.

Insert가 실행중인 쿼리를 하나 잡았네요.


Outro

여태 Show Processlist 명령어를 통해 수동으로 프로세스를 확인해왔는데요.

 

마지막에 Tip으로 남긴 명령어를 통해 보다 쉽게 프로세스를 모니터링 할 수 있게 되었습니다.

꽤나 유용한 Tip같아서 남겨보고 싶었습니다.

 

많은 분들에게 도움이 되었으면 합니다. 감사합니다.

 

 

 

반응형