memcached 작업 원리 와 최적화 제안
기본 개념: slab, page, chunk.
slab 는 논리 적 개념 입 니 다.이것 은 memcached 인 스 턴 스 를 시작 할 때 미리 처 리 된 것 입 니 다. 각각 slab 는 하나의 chunk size 에 대응 합 니 다. 즉, 서로 다른 slab 는 서로 다른 chunk size 가 있 습 니 다.구체 적 으로 몇 개의 slab 를 분배 하 는 지 는 매개 변수 - f (성장 인자) 와 - n (chunk 최소 사이즈) 에 의 해 결정 된다.
page, 메모리 페이지 로 이해 할 수 있 습 니 다.크기 가 1m 로 고정 되 어 있 습 니 다.slab 는 저장 요청 시 시스템 에 페이지 를 신청 하고 페이지 를 chunk size 로 절단 합 니 다.
chunk 는 사용자 데 이 터 를 저장 하 는 가장 작은 단위 입 니 다.사용자 데이터 item (key, value 포함) 은 최종 적 으로 chunk 에 저 장 됩 니 다.chunk 규격 은 고정 되 어 있 으 며, 사용자 데 이 터 를 넣 고 남 으 면 이 나머지 부분 은 다른 용도 로 사용 할 수 없습니다.
작업 절차: memcahed 인 스 턴 스 시작, - f 와 - n 에 따라 slab 를 미리 분배 합 니 다.- n 을 최소 값 으로 시작 하여 - f 를 비례 값 으로 등비 수열 을 생 성하 고 1m 까지 (모든 slab 의 chunk size 는 8 의 배수 에 따라 보완 해 야 한다. 예 를 들 어 비례 값 으로 556 이 라 고 하면 4 에서 560 을 더 해서 8 의 전체 배수 가 된다).그리고 각각 slab 에 페이지 를 할당 합 니 다.사용자 가 저장 요청 을 보 낼 때 (key, value) memcached 는 key + value 의 크기 를 계산 하여 어느 slab 에 속 하 는 지 봅 니 다.slab 를 확인 한 후 빈 chunk 에 key + value 를 넣 었 는 지 확인 합 니 다. 부족 하면 시스템 에 page 를 신청 합 니 다. (이때 - m 매개 변수 가 설정 한 메모리 사용 상한 선 에 도달 했다 면 - M 이 설정 되 어 있 는 지 확인 합 니 다. - M 이 설정 되 어 있 으 면 오류 알림 을 되 돌려 줍 니 다. 그렇지 않 으 면 LRU 알고리즘 에 따라 데 이 터 를 삭제 합 니 다.)신청 후 이 페이지 를 본 slab 의 chunk size 에 따라 절단 한 다음 사용자 데 이 터 를 저장 할 수 있 도록 할당 합 니 다.
주의:
1. chunk 는 page 에서 구분 되 고 page 는 1m 로 고정 되 어 있 기 때문에 chunk 는 최대 1m 를 초과 할 수 없습니다.
2. chunk 의 실제 사용 메모 리 는 48B 를 추가 해 야 합 니 다. chunk 데이터 구조 자체 가 48B 를 차지 해 야 하기 때 문 입 니 다.
3. 사용자 데이터 가 1m 이상 이면 memcached 는 이 를 절단 하여 여러 chunk 에 넣 습 니 다.
4, 배 정 된 페이지 는 회수 할 수 없습니다.
최적화 건의
1. - n 매개 변수 설정 은 이 매개 변 수 를 1024 로 정리 할 수 있 는 수 (48B 의 차 이 를 고려 해 야 함) 로 설정 하 는 것 을 주의 하 십시오. 그렇지 않 으 면 남 은 부분 이 낭 비 됩 니 다.
2. 1m 가 넘 는 데 이 터 를 저장 하지 마 세 요.여러 개의 chunk 로 뜯 어야 하기 때문에 계산 과 시간 비용 이 배로 증가 합 니 다.
3, stats 명령 으로 memcached 상 태 를 잘 봅 니 다.
4. eviction (삭 제 된 데이터) 을 소멸 합 니 다.eviction 을 만 드 는 것 은 메모리 가 부족 하기 때문에 세 가지 생각 이 있 습 니 다. 하 나 는 CPU 가 여력 이 있 는 상황 에서 압축 (PHP 확장) 을 여 는 것 입 니 다.둘째, 메모리 증가.셋째, - f 인 자 를 조정 하여 메모리 낭 비 를 줄인다.
5. 업무 코드 를 조정 하여 명중률 을 높 인 다.
6. 작은 데 이 터 를 캐 시 합 니 다.대역 폭 을 절약 하고 네트워크 I / O 시간 을 절약 하 며 메모 리 를 절약 합 니 다.
7. 업무 특성 에 따라 데이터 사이즈 구간 의 작은 업무 배정 전용 memcached 인 스 턴 스.이렇게 하면 - f 인 자 를 줄 여 데이터 가 몇 개의 slab 에 집중 되 고 메모리 낭비 가 비교적 적다.
memcached 매개 변수 중국어 해석
memcached 1.4.2
-p <num> TCP ( : 11211)
-U <num> UDP ( : 11211, 0 )
-s <
file
> UNIX ( )
-a <mask> UNIX , ( :0700)
-l <ip_addr> IP 。( :INADDR_ANY, )
-d 。
-r 。
-u <username> 。( root )
-m <num> , MB 。( :64MB)
-M 。( )
-c <num> 。( :1024)
-k 。 。
, 。
( -u <username> ; sh ,
"ulimit -S -l NUM_KB"
。)
-
v
( / 。)
-vv ( / )
-vvv ( )
-h 。
-i memcached libevent 。
-P <
file
> ID , -d 。
-f <factor> 。( :1.25)
-n <bytes> key+value+flags ( :48)
-L ( )。
" (TLB)"
, 。
,memcached 。
-D <char> <char> ID 。
。
":"
( )。
, ; ,
"stats detail on"
。
-t <num> ( :4)
-R 。
-C CAS。
-b ( :1024)
-B - :ascii,binary,auto( )
-I 。 。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.