커피닉스, 시스템 엔지니어의 쉼터
  MySQL 퍼포먼스를 top명령어처럼 모니터링 mytop 작성일 : 2003/09/08 01:45
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 14481
     
    글쓴이 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2003.9.2(화)
    수정일 : 2003.9.7(일)

    mytop은 MySQL DB 퍼포먼스를 top명령어처럼 실시간으로 모니터링하는 툴이다.
    홈페이지 : http://jeremy.zawodny.com/mysql/mytop/

    MySQL의 show full processlist와 show status 쿼리 결과값을 토대로 디스플레이하는데,
    화면 설명은 뒤에서 할 것이다.

    운영 환경은 다음과 같다. (mytop은 perl로 개발되었다.)

    * Perl
    * 펄 모듈 - DB관련 - DBI, DBD::mysql (필수)
    * 펄 모듈 - Term::ReadKey   (필수)
    * 펄 모듈 - 컬러로 보기위해서는 Term::ANSIColor (선택)
    * 펄 모듈 - 보다 나은 실시간 정보를 위해서는 Time::HiRes (선택)

    1) 설치

    설치는 과정은 다음 순서대로.

    펄 모듈 DBI, DBD::mysql -> Term::ReadKey -> 선택사항과 관련된 모듈 -> mytop
    DBI와 DBD::mysql 모듈은 보통 설치된 경우(Redhat 8이상은 기본, 7.x는 DBI 기본)가
    많으며 설치 안됐더라고 CPAN에서 받아서 설치하면 된다.

    http://search.cpan.org/dist/DBI/
    http://search.cpan.org/dist/DBD-mysql/
    http://search.cpan.org/dist/TermReadKey/
    http://search.cpan.org/dist/ANSIColor/

    모듈의 설치과정은 모두 다음 과정을 따르면 된다. mytop도 마찬가지 방법으로 설치한다.
    -------------------------------------------
    # tar xvfz ?????.tar.gz
    # cd ?????
    # perl Makefile.PL
    # make
    # make test
    # make install
    -------------------------------------------

    2) 실행화면

    # mytop -u root -p ?????? (???는 mysql DB root PW)



    부분별 의미를 알아보자.

    =============================  ==========================  =======================
    표    시                       의    미                    관련 show status 변수명
    ==============================  ==========================  =======================
    MySQL on localhost (3.23.49a)   호스트명과 MySQL 버전
    ------------------------------  --------------------------  -----------------------
    up 11+23:04:23 [17:17:46]       MySQL uptime과 현재 시간    Uptime
    ==============================  ==========================  =======================
    Queries: 947.4k                 uptime중의 총 쿼리 개수     Questions
    qps:    1 Slow:     0.0         초당 쿼리 수 평균과         Questions
                                    slow 쿼리 수                Slow_queries

    ※ Slow_queries이란 MySQL 서버 설정값인 long_query_time(default는 10초)보다 더 긴
       시간동안 질의된 쿼리 수를 의미한다.
    ------------------------------  --------------------------  -----------------------
    Se/In/Up/De(%):    70/21/04/00  총 쿼리 중 각각 Select,     Com_select
                                    Insert+Replace,             Com_insert, Com_replace
                                    Update,                     Com_update
                                    Delete 비율                 Com_delete
    ==============================  ==========================  =======================
    qps now:    2 Slow qps: 0.0     현재 쿼리 수와              Questions
                                    현재 slow 쿼리 수           Slow_queries
    ※ Slow qps가 자주 나오면 SQL문 최적화가 필요
    ------------------------------  --------------------------  -----------------------
    Threads:   11 (   3/   0)       11은 쓰레드 총 개수         Threads_connected
                                    3은 동작중인 쓰레드         Threads_running
                                    0은 캐시된 쓰레드           Threads_cached
    ------------------------------  --------------------------  -----------------------
    62/12/00/00                     각각 현재의 Select,.. 비율  Com_select, ...
    ==============================  ==========================  =======================
    Key Efficiency: 100.0%          Key 캐시 히트율             Key_reads, Key_read_requests

    ※ Key Efficiency 높을 수록 키 버퍼에서 읽어들인 것임.
       수치가 99%보다 낮다면 key_buffer_size 조정 필요
    ------------------------------  --------------------------  -----------------------
    Bps in/out:  77.0/537.7         초당 주고받은 평균 bytes    Bytes_received
                                                                Bytes_send
    ------------------------------  --------------------------  -----------------------
    Now in/out:   8.4/569.6         현재 주고받은 bytes         Bytes_received
                                                                Bytes_send
    ==============================  ==========================  =======================


    다양한 실행 옵셥은 man페이지를 통해 확인하기 바란다.
    또한 실행중 사용하는 키는 ? 를 누르면 도움말을 볼 수 있다.
    c(command별 사용 비율과 건수), p(일시 정지), s(화면 업데이트간격 변경),
    q(종료), i(sleeping 상태의 쓰레드 표시 여부 변경) 등 다양하다.

    c를 눌러 command별(select, insert, update 등) 사용 비율과 건수를 보자.

      

    3) ~/.mytop 환경 설정

    mytop -u ??? -p ??? 처럼 실행했을 땐 패스워드 유출 가능성도 있고 매번 실행하기도
    불편할 수 있다. 이럴 땐 홈디렉토리의 ~/.mytop에 설정해두면 된다.

    -------------------------------------------
    user=root
    pass=???????
    host=localhost
    db=test
    port=3306
    socket=
    -------------------------------------------

    참고로 MySQL튜닝에 대한 글은 다음을 읽어보기 바란다.

    응용프로그램에서의 최적화  DB와 Mysql (글 문태준)
    http://coffeenix.net/doc/mysql/mysql_tuning.html

    mysql 최적화 (번역 최영봉)
    http://database.sarang.net/database/mysql/tuning/optimize_mysql.html


    커피닉스, 시스템 엔지니어의 쉼터 / URL : http://coffeenix.net/board_view.php?bd_code=57