MySQL : AWS RDS : global variables 점검

/*
MySQL 튜닝 ( MySQL 5.5.40 Community Version. on AWS RDS.)
CPU : 8 Core
Memory : 64G
Disk : IOPS Disable
*/

############## VARIABLES 점검###############
SHOW VARIABLES LIKE ‘%max_connections%’
* 최대 동시접속가능한 수.
— 각채널의 Max Connections 합보다 약간 많게함이 어떨까? 또는 status.max_used_connections 값보다 약간 적게하면 맞을려나?
— 현재 max_connections 2000 # 각 채널의 max Connections 를 합한값이 1000개 이상이면 보통 Thread Pool을 쓰는것이 좋다는데…..

  • 채널쪽에서 Too many connection Exception이 발생하지 않도록 설정해볼까.
    SHOW VARIABLES LIKE ‘%wait_timeout%’
  • Connection이후 동작없이 끊기는 Timeout시간(초)
    — 현재 wait_timeout 28800
  • 채널에서 설정한 값중 최대값보다 약간 크게….초기값 8시간은 너무커…

SHOW VARIABLES LIKE ‘%thread_cache_size%’
* Thread 재사용을 위한 Cache수로,
— 현재 thread_cache_size 500
* SHOW STATUS LIKE ‘%threads_created%’를 여러번 확인해서 증가되지 않는 선까지 thread_cache_size를 조금씩 늘려준다. 동시에 500개 너무높지 안나싶다. cpu갯수는 몇개 안되는데…
* threads_connected가 Threads_cached보다 지나치게 크면 thread_cache_size을 높여준다. threads_connected의 피크치값보다 약간 작게 설정하자.
* CACHE Miss Rate(%) =(threads_created / connections)*100 값이 1%보다 크면 thread_cache_size를 조금씩 올려줘라 라는 이야기도 있음.
* Max_Connections보다는 작아야 겠음.
* Community Version은 Thread_Pool에 대한 Plugin이 없음. 따라서 쓰레드풀 못씀.

SHOW VARIABLES LIKE ‘%slow_launch_time%’
* 쓰레드 생성시 걸리는 최대시간.(기본 2초)
— 현재 slow_launch_time 2 # 기본유지.

SHOW VARIABLES LIKE ‘%key_buffer_size%’
* 인덱스를 메모리에 저장하는 버퍼의 크기. 전체 메모리의 5~10%정도로 잡고 모니터링 하면서 올려주자. 우리는 6.4G로 잡자.

SHOW VARIABLES LIKE ‘%table_open_cache%’
* 오픈하는 테이블숫자( 파일 디스크립터 숫자와 연관)

SHOW VARIABLES LIKE ‘%join_buffer_size%’
* 인덱스 없이 풀테이블 조인의 경우 사용되는 메모리 버퍼크기. 8M 유지하면서 보자.

SHOW VARIABLES LIKE ‘%tmp_table_size%’
* 현재 1G 로 어마어마 하게 설정되어있음. 많이 낮춰야 함. SHOW STATUS LIKE ‘%Created_tmp_disk_tables%’, SHOW STATUS LIKE ‘%Created_tmp_tables%’ 확인해보니, .64M 정도로 줄이자.

SHOW VARIABLES LIKE ‘%max_heap_table_size%’
* 메모리 테이블의 최대크기. tmp_table_size와 연관이 많으며 되도록이면 tmp_table_size와 max_heap_table_size 의 값을 동일하게 운영하는것이 좋다고 하네?… 64M로 하고 이후에 모니터링 하면서 튜닝하자.

SHOW VARIABLES LIKE ‘%innodb_buffer_pool_size%’
* 보통 전체메모리의 80%정도로 한다고 하니 일단 50G 설정 후 가감하도록 하자.

SHOW VARIABLES LIKE ‘%innodb_flush_log_at_trx_commit%’
* 로그버퍼의 데이터를 파일에 쓰는 옵션. 0: 커밋 상관없이 매초 디스크에 저장. 1: 커밋시 바로 디스크에 저장. 2: 커밋시 1초동안 모았다가 로그파일에 저장. 우리는 일단 0으로 가자.

SHOW VARIABLES LIKE ‘%innodb_thread_concurrency%’
* 동시 Thread 처리수 인데… 보통 cpu core갯수 이상의 설정은 의미없으므로, 현재 8Core이므로 6Core로 설정하자.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중