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            。 。
 
 

좋은 웹페이지 즐겨찾기