내 세상

[MySQL] CPU / Memory / InnoDB Buffer Usage 100% 이슈 조치 본문

Technical/MySQL

[MySQL] CPU / Memory / InnoDB Buffer Usage 100% 이슈 조치

sga8 2021. 4. 16. 14:16
728x90
반응형

 

1. wait_timeout

  - mysqld와 mysql client가 connection된 후, idle 상태인 connection 끊을 때까지 서버가 대기하는 시간 

  - mysql 서버가 client와의 connection을 계속해서 가져가 max connections error가 발생하는 경우가 있음.

  - 28800(8시간, default) → 300(5분) 

 

2. interactive_timeout

  - mysqld와 mysql client가 connection된 후, idle 상태가 아닌 connection을 끊을 때까지 서버가 대기하는 시간.

  - mysql 서버가 client와의 connection을 계속해서 가져가 max connections error가 발생하는 경우가 있음.

  - 28800(8시간, default) → 300(5분)

 

3. long_query_time

  - query 중 slow query로 분류하기 위해 사용되는 기준 시간.

  - 10초로 했을 때, size가 큰 테이블을 조인해서 결과를 내는 경우에도 slow query 판정 되기 때문에 log가 과도하게 많아지는 현상이 있음.

  - 10(10초, default) → 30(30초)

 

4. innodb_buffer_pool_size

  - data file/log file이 기록되는 순서를 조정하는 역할.

  - disk access를 줄이기 위한 cache 역할

  - size가 클수록 성능에 유리하나, 실제 운용되는 시스템의 성능에 따라 지정할 수 있어야함.

 

5. innodb_buffer_pool_instances

  - innodb_buffer_pool_size 를 N개의 instance로 쪼갰을 때, 각 instance가 1GB 이상일 경우에만 작동함.

  - 통상적으로 CPU core 수 * 2로 사용하는 것이 바람직함.

  - 8(default) → 4 (Cpu Core가 2개 이기때문)

 

 

 

innodb_buffer_pool_size(IBPSize) 를 설정하는 계산식

  - show global status like 'innodb_buffer_pool_pages_data'; -- IBPDataPages

  - show global status like 'innodb_buffer_pool_pages_total'; -- IBPTotalPages

  - show global status like 'innodb_page_size'; -- IPS

 

IBPPctFull = IBPDataPages * 100.0 / IBPTotalPages
  • IBPPctFull >= 95%
    • IBPSize = DB Server's RAM * 0.75
  • IBPPctFull < 95%
    • IBPSize = IPS * IBPDataPages / (1024*1024*1024) X 1.05

 

innodb_buffer_pool_size 계산식 참고 링크

dba.stackexchange.com/questions/19164/what-to-set-innodb-buffer-pool-and-why

728x90
반응형