2008-08-07 3 views
4

memcached에 하드 코드 된 청크 제한 (압축 후 .5 메가)이있는 이유는 무엇입니까? 누군가 그것을 재 컴파일 했습니까? 나는 그 주위에 큰 덩어리를 보내면 안된다는 것을 안다. 그러나이 여분의 무거운 덩어리는 때때로 나를 위해 일어나서 혼란을 가져온다.Memcached 청크 제한

답변

4

인용하려면 official FAQ

What are some limits in memcached I might hit? (Wayback Machine)

에 있어야 사용이 질문 : 당신은 아마 memcache를 함께 볼 수

간단한 한계 키와 항목 크기 제한입니다. 키는 250 자로 제한됩니다. . 그 가장 큰 전형적인 슬래브 크기 때문에 저장된 데이터는 "

자주 제기되는 질문 (FAQ)는 이제 수정되었습니다 크기가 1 메가 바이트 초과 할 수 없으며이를 포함하는 두 개의 질문에 지금있다 :

What is the maxiumum key length? (250 bytes)

키의 최대 크기는 250 자입니다. 접두사 오라이의 전면에 압정으로 고정되어 있기 때문에, 당신은 클라이언트 "접두사"또는 이와 유사한 기능을 사용하는 경우 이하로이 값을 참고 ginal key. 일반적으로 더 짧은 키는 이며 메모리를 절약하고 대역폭을 줄이므로 더 좋습니다.

Why are items limited to 1 megabyte in size?

아, 이것은 인기있는 질문입니다!

짧은 대답 : 메모리 할당 자 알고리즘이 작동하는 방식 때문입니다.

답 : Memcached의 메모리 저장 엔진 (나중에 플러시 가능/조정 됨 ... )은 메모리 에 대한 슬랩 접근 방식을 사용합니다. 메모리는 다양한 크기의 슬랩 덩어리로 나뉘며, 은 최소 숫자부터 시작하여 계승을 기준으로 까지 가능한 가장 큰 값까지 오름차순으로 나뉩니다.

최소값은 400 바이트 말해, 최대 값이 1 메가 바이트이고, 요인은 1.20이다

슬래브 1 - 400 바이트 슬래브 2-480 바이트 슬래브 3-576 바이트 등 ...

슬래브가 클수록 이전 슬래브와 사이에 간격이 큽니다. 따라서 최대 값이 클수록 메모리 저장 공간의 효율성이 떨어집니다. Memcached는 또한 존재하는 모든 슬래브에 대해 에 대해 일부 메모리를 사전 할당해야하므로 더 큰 계승 값 ( 최대 값)을 설정하면 더 많은 오버 헤드가 필요합니다.

왜 그런지 원하지 않는 다른 이유가 있습니다. 우리가 웹 페이지에 대해 이야기하고 있고 값/크기 값을 저장 /로드하려고 시도하는 경우 큰 값일 경우 뭔가 잘못.그 크기에서는 데이터 구조 을로드하고 압축을 풀 때 상당한 시간이 걸리므로 사이트 성능이 좋지 않을 수 있습니다.

당신이 정말로 항목을 1메가바이트보다 큰 저장하려는 경우

, 당신은 편집 slabs.c:POWER_BLOCK 값 memcached를 컴파일, 또는 비효율적 인의 malloc/무료 백엔드를 사용할 수 있습니다. 다른 제안으로는 데이터베이스, MogileFS 등이 있습니다.