16.6.2.5 memcached와 DTrace 사용
memcached 서버 동작의 모니터에 사용할 수있는 여러 가지 DTrace 프로브가 포함되어 있습니다. 포함하는 프로브는 키 / 값 쌍을 추가, 업데이트 또는 삭제시 개별 연결 슬래브 할당 및 해시 테이블의 변경을 모니터 할 수 있습니다.
DTrace 및 DTrace 스크립트 작성의 자세한 내용은 " DTrace 사용자 가이드 "를 참조하십시오.
memcached 1.2.6에서 추가 된 DTrace 프로브의 지원 응용 프로그램을 모니터하고 쉽게 몇 가지 DTrace 프로브가 포함되어 있습니다. DTrace는 Solaris 10, OpenSolaris, OS X 10.5 및 FreeBSD에서 지원됩니다. memcached에서 DTrace 프로브를 사용하려면 소스로부터 빌드하고 --enable-dtrace
옵션을 사용합니다. 자세한 내용은 섹션 16.6.1 "memcached 설치" 를 참조하십시오.
memcached에서 지원되는 프로브는 다음과 같습니다.
conn-allocate(connid)
연결 풀에서 연결 개체를 할당 할 때 시작합니다.
connid
: 연결 ID.
conn-release(connid)
연결 개체가 연결 풀로 해제 될 때 시작합니다.
인수 :
connid
: 연결 ID.
conn-create(ptr)
새 연결 개체가 생성되는 (즉, 연결 풀에 여유 연결 개체가없는) 때 시작합니다.
인수 :
ptr
: 연결 개체에 대한 포인터
conn-destroy(ptr)
연결 개체가 파괴 될 때 시작합니다.
인수 :
ptr
: 연결 개체에 대한 포인터.
conn-dispatch(connid, threadid)
메인 또는 연결 관리 스레드에서 작업자 스레드에 연결이 발송 될 때 시작합니다.
인수 :
connid
: 연결 ID.threadid
: 스레드 ID입니다.
slabs-allocate(size, slabclass, slabsize, ptr)
슬라브 할당 자에서 메모리를 할당합니다.
인수 :
size
: 요청 된 크기.slabclass
: 할당이 클래스에서 이루어집니다.slabsize
:이 클래스의 각 항목의 크기.ptr
: 할당 된 메모리의 포인터.
slabs-allocate-failed(size, slabclass)
메모리 할당에 실패했습니다 (메모리 부족).
인수 :
size
: 요청 된 크기.slabclass
: 요구를 충족시킬 수 없었던 클래스.
slabs-slabclass-allocate(slabclass)
슬라브 클래스에 추가 공간이 필요할 때 시작합니다.
인수 :
slabclass
: 추가 메모리를 필요로하는 클래스.
slabs-slabclass-allocate-failed(slabclass)
메모리 할당에 실패했습니다 (메모리 부족).
인수 :
slabclass
: 추가 메모리를 얻을 수없는 클래스.
slabs-free(size, slabclass, ptr)
메모리를 해제합니다.
인수 :
size
: 해방되는 메모리의 양 (바이트 단위).slabclass
: 메모리가 속한 클래스.ptr
: 해방하는 메모리의 포인터.
assoc-find(key, depth)
해시 테이블에서 지정된 키가 발견 된 때 시작합니다. 이 두 요소는 해쉬 함수가 얼마나 잘 기능하고 있는지를 파악할 수 있습니다. 탐색 함수가별로 최적이 아니라 CPU의 처리 능력이 낭비되는 것을 나타냅니다.
인수 :
key
: 검색된 키.depth
: 해시 테이블의 명부의 깊이.
assoc-insert(key, nokeys)
새로운 항목이 삽입 될 때 시작합니다.
인수 :
key
: 삽입 된 키.nokeys
: 현재 저장되어있는 키의 수 (삽입이 요구 된 키 포함).
assoc-delete(key, nokeys)
새로운 항목이 삭제 된 경우 시작합니다.
인수 :
key
: 삭제 된 키.nokeys
: 현재 저장되어있는 키의 수 (삭제 요청 된 키 제외).
item-link(key, size)
캐시에서 항목이 링크 될 때 시작합니다.
인수 :
key
: 항목의 키.size
: 데이터의 크기.
item-unlink(key, size)
항목이 삭제 될 때 시작합니다.
인수 :
key
: 항목의 키.size
: 데이터의 크기.
item-remove(key, size)
항목의 참조 횟수가 줄어들 때 시작합니다.
인수 :
key
: 항목의 키.size
: 데이터의 크기.
item-update(key, size)
"마지막 참조"시간이 업데이트 될 때 시작합니다.
인수 :
key
: 항목의 키.size
: 데이터의 크기.
item-replace(oldkey, oldsize, newkey, newsize)
항목을 다른 항목으로 대체 될 때 시작합니다.
인수 :
oldkey
: 대체 항목의 키.oldsize
: 오래된 항목의 크기.newkey
: 새로운 항목의 키.newsize
: 새로운 항목의 크기.
process-command-start(connid, request, size)
명령이 처리를 시작하면 시작합니다.
인수 :
connid
: 연결 ID.request
: 수신 된 요청.size
: 요청 크기.
process-command-end(connid, response, size)
명령이 처리를 완료 할 때 시작합니다.
인수 :
connid
: 연결 ID.response
: 클라이언트에 응답하는 응답.size
: 응답의 크기입니다.
command-get(connid, key, size)
get
명령에 시작합니다.인수 :
connid
: 연결 ID.key
: 요청 된 키.size
:이 키 데이터의 크기 (없으면 -1).
command-gets(connid, key, size, casid)
gets
명령에 시작합니다.인수 :
connid
: 연결 ID.key
: 요청 된 키.size
:이 키 데이터의 크기 (없으면 -1).casid
: 항목의 CAS ID.
command-add(connid, key, size)
add
명령에 시작합니다.인수 :
connid
: 연결 ID.key
: 요청 된 키.size
:이 키 데이터의 새로운 크기 (없으면 -1).
command-set(connid, key, size)
set
명령에 시작합니다.인수 :
connid
: 연결 ID.key
: 요청 된 키.size
:이 키 데이터의 새로운 크기 (없으면 -1).
command-replace(connid, key, size)
replace
명령에 시작합니다.인수 :
connid
: 연결 ID.key
: 요청 된 키.size
:이 키 데이터의 새로운 크기 (없으면 -1).
command-prepend(connid, key, size)
prepend
명령에 시작합니다.인수 :
connid
: 연결 ID.key
: 요청 된 키.size
:이 키 데이터의 새로운 크기 (없으면 -1).
command-append(connid, key, size)
append
명령에 시작합니다.인수 :
connid
: 연결 ID.key
: 요청 된 키.size
:이 키 데이터의 새로운 크기 (없으면 -1).
command-cas(connid, key, size, casid)
cas
명령에 시작합니다.인수 :
connid
: 연결 ID.key
: 요청 된 키.size
:이 키 데이터의 크기 (없으면 -1).casid
: 요청 된 CAS ID.
command-incr(connid, key, val)
incr
명령에 시작합니다.인수 :
connid
: 연결 ID.key
: 요청 된 키.val
: 새 값입니다.
command-decr(connid, key, val)
decr
명령에 시작합니다.인수 :
connid
: 연결 ID.key
: 요청 된 키.val
: 새 값입니다.
command-delete(connid, key, exptime)
delete
명령에 시작합니다.인수 :
connid
: 연결 ID.key
: 요청 된 키.exptime
: 만료 시간.