일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Openfiler
- php-oracle 연동
- 포기해버린꿈
- pgpool-ii
- connection tunning
- postfix
- 오라클
- 시그널
- 가상파일시스템
- CVSROOT 세팅
- inotify
- perltidy
- ext3
- clustering
- Replication
- pvfs
- 리눅스
- OCFS2
- 펄 코딩스타일
- pgsql
- LVS
- ext4
- mailfiler
- tomcat
- 파일시스템
- pgbench
- 펄
- ZFS
- PERL
- Nexenta
Archives
- Today
- Total
avicom의 신변잡기
mysql connection tuning 본문
status
system variables
상태 체크 쿼리
계산 공식
결과 해석
Aborted_clients | 클라이언트 프로그램이 비 정상적으로 종료된 수 |
Aborted_connects | MySQL 서버에 접속이 실패된 수 |
Max_used_connections | 최대로 동시에 접속한 수 |
Threads_cached | Thread Cache의 Thread 수 |
Threads_connected | 현재 연결된 Thread 수 |
Threads_created | 접속을 위해 생성된 Thread 수 |
Threads_running | Sleeping 되어 있지 않은 Thread 수 |
system variables
wait_timeout | 종료전까지 요청이 없이 기다리는 시간 ( TCP/IP 연결, Shell 상의 접속이 아닌 경우 ) |
thread_cache_size | thread 재 사용을 위한 Thread Cache 수로써, Cache 에 있는 Thread 수보다 접속이 많으면 새롭게 Thread를 생성한다. |
max_connections | 최대 동시 접속 가능 수 |
상태 체크 쿼리
show variables like '%max_connection%';
show status like '%connect%';
show status like '%clients%';
show status like '%thread%';
계산 공식
Cache Miss Rate(%) = (Threads_created / Connections) * 100
Connection Miss Rate(%) = (Aborted_connects / Connections) * 100
Connection Usage(%) = (Threads_connected / max_connections) * 100
결과 해석
- Connection Usage(%) = 100%
절대적인 커넥션 갯수가 부족하므로 max_connections 수를 증가
- DB 서버의 접속이 많은 경우
wait_timeout 을 최대한 적게 (10~20 정도를 추천) 설정하여 불필요한 연결 정리.
- Connection Miss Rate(%) 가 1% 이상이 된다면 wait_timeout 을 좀 더 길게 잡는다.
- Cache Miss Rate(%) 가 높은 경우 : thread_cache_size를 기본값인 8 보다 높게 설정. 일반적으로 threads_connected 가 Peak-time 시 보다 약간 낮은 수치로 설정하는 것이 좋음
- 일반적으로 MySQL 서버는 외부로 부터 접속 요청을 받을 경우 인증을 위해 IP 주소를 호스트네임으로 바꾸는 과정을 수행하여 접속시에 불필요한 부하가 발생하므로 skip-name-resolve를 설정.
도메인 접속 대신 ip 접속을 하게 되면 hostname lookup 과정이 생략되어 빠른 접속 가능.