16.6.5 memcached의 FAQ
1.
memcached는 Windows 환경에서 실행할 수 있습니까?
아니오. 현재 memcached는 Unix / Linux 플랫폼에서만 사용할 수 있습니다. 사용 가능한 비공식 포팅 내용은 http://www.codeplex.com/memcachedproviders 를 참조하십시오.
2.
memcached에 저장할 수있는 개체의 최대 크기는 얼마입니까? 그것은 구성 가능합니까?
기본 최대 개체 크기는 1M 바이트입니다. memcached 1.4.2 이상에서는
-I
명령 행 옵션을 사용하여 개체의 최대 크기를 변경할 수 있습니다.이것은 이전 버전의 경우이 크기를 늘리려면 memcached를 다시 컴파일해야합니다. 소스의
slabs.c
파일POWER_BLOCK
값을 변경할 수 있습니다.memcached 1.4.2 이상에서는
-I
명령 행 옵션을 사용하여 지원되는 최대 개체 크기를 구성 할 수 있습니다. 예를 들어, 최대 개체 크기를 5M 바이트로 늘리려면 다음과 같이 실행합니다.$ memcached -I 5m
개체가 최대 개체 크기보다 큰 경우는 수동으로 분할해야합니다. memcached는 매우 간단하고 키와 데이터를 전달하면 그것을 RAM에 캐시 할 시도합니다. 기본 최대 크기를 초과 저장하려고하면 속도를 유지하기 위해 값이 잘립니다.
3.
memcached
는 데이터베이스에 기록이 많은 응용 프로그램에서 데이터베이스의 읽기가 많은 애플리케이션에 더 효과적이라는 사실인가요.예. memcached는 데이터베이스에 쓰는 작업과 관련된 것은 아닌 데이터베이스에서 이미 읽은 데이터를 RAM에 캐시하는 방법입니다.
4.
영구 연결을 사용하지 않는 것이 오버 헤드가 있습니까? 영구 연결이 항상 권장되는 경우 단점은 무엇입니까 (예를 들어, 잠금 문제).
memcached와 통신 할 때 영구 연결을 사용하지 않는 경우 매번 연결을 열 때 대기 시간이 약간 길어집니다. 그 영향은 MySQL에 영구적이지 않은 연결을 사용하는 경우와 동일합니다.
일반적으로 memcached에서 잠금을 사용하는 것은 매우 적기 때문에 영구 연결 잠금 또는 기타 문제가 발생할 가능성은 매우 적습니다. 문제가있는 경우 요청 시간이 초과하여 결과가 반환되지 않으므로 응용 프로그램이 MySQL에서 다시로드해야합니다.
5.
memcached 클라이언트에 의해 조작되는 memcached 서버 중 하나가 충돌하면 어떻게됩니까?
이것은 자동으로 처리되지 않습니다. 클라이언트가 서버에서 응답을 얻을 수없는 경우, MySQL 데이터베이스에서 데이터를로드하기위한 대체 메커니즘을 코딩하십시오.
모든 클라이언트 API는 memcached 인스턴스를 실행 중에 추가 및 삭제하는 기능을 제공합니다. 응용 프로그램에서 memcached 서버가 응답하지 않는 것으로 인식 된 경우 해당 서버를 서버 목록에서 삭제하면 키가리스트 내의 다른 memcached 서버에 자동으로 재분배됩니다. 모든 서버에서 캐시의 내용을 유지하는 것이 중요하다 당신은 일관된 해시 알고리즘을 지원하는 API를 사용하십시오. 자세한 내용은 섹션 16.6.2.4 "memcached의 해시 / 분포 유형" 을 참조하십시오.
6.
memcached 서버의 권장 하드웨어 구성은 무엇입니까?
memcached 처리 오버 헤드는 무시할 수 있습니다. 필요한 것은 잉여의 실제 RAM뿐입니다. memcached 서버는 전용 시스템이 필요하지 않습니다. 잉여의 RAM 용량이 Web 서버, 응용 프로그램 서버 또는 데이터베이스 서버가있는 경우는 그들을 memcached 사용합니다.
전용 memcached 서버를 구축 및 배포 할 경우에는 상대적으로 성능이 낮은 CPU와 많은 RAM 및 1 개 이상의 기가비트 Ethernet 인터페이스를 사용합니다.
7.
memcached는 텍스트의 읽기 / 쓰기보다 비디오 및 오디오에 효과가 있습니까?
memcached는 모든 종류의 데이터에 대해 동일한 방식으로 작동합니다. memcached를 실행하면 저장된 값은 데이터 스트림입니다. 그러나 memcached에 저장할 수있는 개체의 최대 크기는 1M 바이트이지만, memcached 1.4.2 이상에서
-I
옵션을 사용하여 또는 버전 1.4.2 이전에는 소스를 변경하여 더 크게 구성 수 있습니다. 오디오 및 비디오 콘텐츠에 memcached를 사용하는 것을 계획하는 경우는 최대 개체 크기를 늘리는 것이 대부분입니다. 또한 memcached는 읽기에 대한 정보를 캐시하는 솔루션입니다. 캐시 정보를 업데이트 할 때를 제외하고 쓰기에 사용하지 마십시오.8.
memcached는 ASPX에서 작동합니까?
다수의 언어 및 환경에 대한 포팅 및 인터페이스가 있습니다. ASPX는 기본이되는 언어 (C #, VisualBasic 등)에 의존하고 있습니다. ASP.NET을 사용하는 경우는 C #의 memcached 라이브러리가 있습니다. 자세한 내용은 https://sourceforge.net/projects/memcacheddotnet/ 를 참조하십시오.
9.
memcache 연결을 설정하려면 얼마나 비용이 듭니까? 그 연결 풀링해야합니까? 요청 제출 및 결과의 취득을 시작하기 전에 보안 인증 또는 기타 핸드 셰이크되지 않기 때문에 연결의 오픈은 비교적 비용이 들지 않습니다. 대부분의 API는 대기 시간을 줄이기 위해 memcached 인스턴스에 영구 연결을 지원합니다. 연결 풀링은 사용하는 API에 따라 다르지만 TCP / IP를 통해 직접 통신하는 경우는 연결 풀 성능이 약간 좋아집니다. 10.
memcached 서버가 중지되면 데이터는 어떻게 처리됩니까?
그 동작은 응용 프로그램이 완전히 다릅니다. 대부분의 응용 프로그램은 데이터베이스에서 데이터를로드하게 대체합니다 (memcached의 정보를 업데이트 할 때처럼). 여러 memcached 서버를 사용하는 경우 중지 한 서버를 목록에서 제거하여 성능에 영향을주지 않도록 할 수 있습니다. 그렇지 않으면 클라이언트는로드하려고하고있는 키와 대응하고있다 memcached 서버와 통신하는 것을 시도합니다.
11.
MySQL 데이터베이스의 자동 증가 컬럼은 여러 memcached 인스턴스에서 어떻게 조정합니까? 조정되지 않습니다. MySQL과 memcached 관련이 없습니다 (응용 프로그램에 이러한 관련을 작성한 경우 (또는 memcached 및 데이터베이스 정의에 MySQL UDF를 사용하는 경우)를 제외).
memcached의 여러 인스턴스에 자동 증가 키에 따라 정보를 저장하는 경우, 정보는 하나의 memcached 인스턴스에 포함되는뿐입니다. 클라이언트는 키 값을 사용하여 정보가 저장되는 memcached 인스턴스를 판별합니다. 같은 정보는 캐시 메모리가 낭비되기 때문에 모든 인스턴스에 포함되지 않습니다.
12.
압축을 사용할 수 있습니까? 예. 대부분의 클라이언트 API는 어떤 압축을 지원하고 있으며, 저장 중에 값이 압축에 적합한 지 여부를 판단하는 임계 값을 지정할 수있는 것도 있습니다.
13.
다른 유형의 memcached를 동일한 서버에서 다른 노드로 구현 동일한 서버에서 결정이있는 것으로 결정되지 않는 것을 가질 수 있습니까?
예. 단일 서버에서 memcached의 여러 인스턴스를 실행하고 사용하는 서버의 목록을 클라이언트 구성에서 선택할 수 있습니다.
14.
성능 향상을 확인하기 위해, 그리고 memcached에 대한 구성 변경의 영향을 판단하기 위해 구현을 테스트하는 가장 좋은 방법은 무엇입니까? 시작시 구성을 단순화 할 것을 권장하고 있습니까? 성능을 테스트하는 가장 좋은 방법은 memcached 인스턴스를 시작하는 방법입니다. 먼저 데이터를 사용하거나 표시되기 직전에 데이터를 memcached에 저장하도록 응용 프로그램을 변경합니다. API를 통해 데이터가 직렬화되기 때문에 한 줄의 코드 변경하기 만하면됩니다. 그리고 일반적으로 MySQL에서 정보를로드하는 프로세스의 시작을 memcached에 데이터를 요청하는 코드로 변경합니다. memcached에서 데이터를로드 할 수없는 경우에는 기본적으로 MySQL 프로세스에서로드됩니다. 변경할 필요가있는 것은 아마 몇 줄의 코드 만입니다. 이점을 최대한 활용하려면 memcached를 MySQL 테이블의 개별 행의 간단한 캐시로 사용하는 것이 아니라 전체 개체 (예 : Web 페이지, 블로그 게시물, 토론 스레드 등의 모든 구성 요소)을 캐시 하십시오.
memcached는 시작시 구성을 단순화하는 것, 또는 장기간 그것을 유지하는 것은 간단합니다. 기본적인 구조를 만들고 실행되면 종종 사용 중에 변경할 응용 프로그램에서 사용되는 서버 목록에 서버를 추가 할뿐입니다. memcached 서버를 관리 할 필요없이 복잡한 구성은 없습니다. 목록에 서버를 추가 한 후 클라이언트 API 및 memcached 서버에 판단을 맡기고 있습니다.