MySQL에서 접속 중인 session 정보를 확인해보자

2021. 2. 7. 22:15개발/DB

728x90
반응형

개요

  • MySQL에서 접속 중인 session 정보들을 확인해보자.

Connection monitoring

  • MySQL에서는 현재 잡혀있는 session에 대한 모니터링 테이블이 존재한다.
  • 문제가 되는 session들을 찾아내거나 kill할 필요가 있을 때, 참조하면 좋다.

SHOW PROCESSLIST;

현재 실행 중인 process list들을 확인할 수 있다.

show full processlists;
show processlist;

확인할 수 있는 field들은 아래와 같다.

  • id: session id
  • user: 접속한 계정의 id
  • host: host + port
  • db: 접속한 db
  • command: thread가 현재 실행 중인 명령, Sleep의 경우는 idle 상태를 의미하며, 자세한 내용은 Thread command를 참조하자.
  • time: 현재 state가 유지된 시간, seconds 단위이다.
  • state: 현재 thread의 상태, 자세한 내용은 Thread information를 참조하자.

다만 위의 쿼리의 경우 몇가지 제약사항이 존재한다.

  • 필터링해서 보고 싶다!.
  • sleep session에 대해서만 보고 싶다.

등등의 여러 조건들을 통해서 확인하고 싶다면 information_schema.processlist를 조회해서 사용하면 된다.
아래의 몇가지 예제가 존재한다.

-- base query
select * from information_schema.processlist limit 10;

-- not start with 192
select * from information_schema.processlist
where host not like '192%' limit 10;

-- session time above 100 seconds
select * from information_schema.processlist
where time > 100;

Sleep session

Idle 상태로 계속 유지되는 session을 의미한다.
해당 Idle 상태가 지속되는 session이 많을 경우 기본적으로 잡고 있는 session memory가 존재하기 때문에 성능에 영향을 미칠 수 있다.

Timeout options

해당 내용은 Sarc님의 블로그에서 내용을 발췌했다.
MySQL에서는 여러가지 timeout 값을 설정하고, 해당 값을 참조하여 관리를 해주고 있는데 해당 부분을 알아두는 것이 좋을 것 같아 해당 내용을 추가해 두었다.

  • connect_timeout: MySQL 서버 접속시에 접속실패를 메시지를 보내기까지 대기하는 시간
  • delayed_insert_timeout: insert시 delay될 경우 대기하는 시간
  • innodb_lock_wait_timeout: innodb에 transaction 처리중 lock이 걸렸을 시 롤백 될때까지 대기하는 시간으로 innodb는 자동으로 데드락을 검색해서 롤백시킴
  • innodb_rollback_on_timeout: innodb의 마지막 구문을 롤백시킬지 결정하는 파라미터 timeout은 진행중인 transaction을 중단하고 전체 transaction을 롤백하는 과정에서 발생
  • net_read_timeout: 서버가 클라이언트로부터 데이터를 읽어들이는 것을 중단하기까지 대기하는 시간
  • net_write_timeout: 서버가 클라이언트에 데이터를 쓰는 것을 중단하기까지 대기하는 시간
  • slave_net_timeout: 마스터/슬레이브로 서버가 클라이언트로부터 데이터를 읽어들이는 것을 중단하기까지 대기하는 시간
  • table_lock_wait_timeout: 테이블 락을 중단하기까지 대기하는 시간
  • wait_timeout: 활동하지 않는 커넥션을 끊을때까지 서버가 대기하는 시간 (php,jdbc 등을 통한 connection)
  • interactive_timeout: 활동중인 커넥션이 닫히기 전까지 서버가 대기하는 시간 (mysql command line)

출처

728x90
반응형

'개발 > DB' 카테고리의 다른 글

ElasticSearch - DFR에 대해 알아보자  (1) 2021.08.29
ElasticSearch - BM25에 대해서 알아보자  (1) 2021.08.08
ElasticSearch keyword string 차이  (2) 2021.08.01
MySQL lock & Isolation level  (3) 2021.01.01