slowlog
Redis SLOWLOG subcommand
Redis Server Course | Redis Technical Support | Redis Enterprise Server |
---|
Redis SLOWLOG
Slowlog는 모든 명령의 수행시간이 설정 시간 이상이면 기록을 남깁니다.
Latency Monitor와 함께 서버 성능을 분석 또는 문제(trouble) 발생시 추적할 수 있는 유용한 도구입니다.
수행시간은 서버에서 처리하는 시간만 포함합니다.
명령이 클라이언트에서 서버로 도착하는 시간, 결과를 클라이언트에 보내는 시간은 포함하지 않습니다.
Slowlog 기록으로 인한 성능 저하를 최소화하기 위해서 파일에 기록하지 않고 메모리에만 합니다.
이 문서는 버전 4.0.4를 기준으로 만들었습니다.
활성화 방법
활성화하는 데는 redis.conf에 있는 두 가지 파라미터가 사용됩니다.
이는 서버 운영 중
config set 명령으로 설정 가능합니다.
서버 설치 후 디폴트 값으로 활성화됩니다.
- slowlog-log-slower-than: 여기 설정한 시간(microseconds) 이상인 명령을 기록합니다.
단위는 마이크로초(microseconds)입니다. Default는 10000(10ms)입니다.
0(영)으로 설정하면 모든 명령을 기록합니다.
비활성화하려면 음수(마이너스)로 설정합니다. - slowlog-max-len: 여기 설정한 것만큼 보관합니다. Default는 128입니다. 제한은 없습니다. 꽉 차면 오래된 것부터 지우고 새것이 기록됩니다.
SLOWLOG Subcommand
Slowlog 명령에는 총 3개의 subcommand가 있다.
- GET: 사용법 slowlog get
Slowlog에 기록된 시각(Linux timestamp), 수행시간, 명령, 클라이언트 정보를 조회해 볼 수 있다. - GETH: 사용법 slowlog geth
위 내용을 보기 쉬운 형태로 보여줍니다. - LOG: 사용법 slowlog log
Slowlog를 로그 파일에 기록합니다. - LEN: 사용법 slowlog len
몇 개가 기록되었는지 조회해 볼 수 있다. - RESET: 사용법 slowlog reset
Slowlog 기록을 삭제한다. 복구할 수 없다.
SLOWLOG GET [숫자]
Slowlog 기록을 보여준다.
숫자는 몇 개를 보여줄지 정한다. 숫자를 입력하지 않으면 디폴트 10개이다.
다음 네 항목을 보여준다.
- ID: 증가하는 일련번호
- 실행시각(Linux timestamp)
- 수행시간(microseconds)
- 명령: value의 길이가 128바이트보다 크면 128바이트와 (more bytes)가 표시됩니다. Subcommand(option)는 32개까지만 표시됩니다.
- client ip:port : 버전 4.0에서 추가
- client name : 버전 4.0에서 추가, client name은 "client setname" 명령으로 지정할 수 있습니다.
SLOWLOG GETH [숫자]
일시, 소요시간 등을 보기 쉽게 보여줍니다.
H는 human의 약자입니다.
Slowlog가 명령 실행시간을 볼 수 있는 유일하고 유용한 방법임에도 불구하고
잘 사용되지 않는 것은 '실행 시각'이 숫자로만 나오고
다른 항목도 설명이 없어서 일것입니다.
파악하기 쉽도록 했으니 유용하게 사용하시기 바랍니다.
이 기능은 Enterprise 버전에서 사용 가능합니다. |
SLOWLOG LOG
Slowlog를 로그 파일에 기록합니다.
기록 후 Reset해서 메모리에 있던 내용을 지웁니다.
Slowlog의 문제점 중 하나는 메모리에 기록하기 때문에
기록 개수에 제한을 두고 있다는 것입니다.
디폴트로 128개입니다.
128개가 초과되면 기존 내용이 지워지고 다시 기록됩니다.
그래서 로그 파일에 기록할 수 있도록 했습니다.
Slowlog.log파일이 있으면 slowlog 파일에 기록되고
없으면 redis.log 파일에 기록됩니다.
이 기능은 Enterprise 버전에서 사용 가능합니다. |
SLOWLOG LEN
Slowlog에 기록된 개수를 보여준다.
실행 예
SLOWLOG RESET
기록을 지운다.
실행 예
Slowlog 명령 자체도 기록으로 남기기 때문에 slowlog len에서 1이 나온것이다.
SLOWLOG Internal Data Structure
Slowlog는 리스트(list) 자료구조에 저장된다.
SLOWLOG 소스코드
slowlog-log-slower-than와 slowlog-max-len의 default 값이 server.h에 정의되어 있다.
server.c : 모든 명령을 실행하는 call()에서 마이크로초로 수행시간(duration)을 측정하고,
설정에 따라
Latency 나 Slowlog에 기록을 남긴다.
Call()에서 실행하지 않는 특별한 경우는 기록에 남지 않는다.
예를 들어,
debug populate 명령은 dbAdd()를 직접 실행하기 때문에 Slowlog 기록되지 않는다.
slowlog.h : slowlogEntry struct
slowlog.c: function 설명
각 function에 대한 간단한 설명입니다.
SLOWLOG 관련 참고 자료
- redis.io에 있는 Slowlog
- redislabs.com에 있는 Enhancing Redis Slow Log
명령문
SLOWLOG subcommand [argument]
- 이 명령은 version 2.2.12 부터 사용할 수 있다.
Clients for C | Hiredis |
<< DEBUG | SLOWLOG | LATENCY >> |
---|
조회수 :