2011-10-23 1 views
4

직장에서 우리는 전용 메모리 캐시 서버에 대한 가능성을 논의하고 있습니다. 두 가지 선택 사항은 Windows AppFabric Cache Server와 Memcached입니다. 그래서 AppFabric 용과 Memcache 용으로 두 가지 테스트를 설정했습니다.로컬 AppFabric 및 로컬 Memcache - 엄격하게 성능 말하기

Memcache를 는 OS/기기에게 MemCachedDOTnet_2.0 C# 1 API와 8GB의 RAM과 VM웨어 워크 스테이션, 쿼드 코어 가상화 된 Memcache VMWare Appliance 테스트.

캐시에 개체를 몇 개 밀어 넣은 후 평균 타이밍을 시작했습니다.

  • 넣어 0-1MS
  • 이 14-15MS

AppFabric 캐시 서버 없음 VM 그것 때문에 모든 창을 가져 오기 (정밀도는 밀리 초 만했다). 8GB의 RAM이 장착 된 쿼드 코어. 동일한 작업을 시작하기 전에 캐시에 몇 개의 개체를 밀어 넣었습니다. 로컬 캐시 옵션이 클라이언트 설정에서 비활성화되었습니다.

  • 넣어 0-1MS (정밀도는 밀리 초에했다)

지금 문제는 내가 memcached를 슈퍼 빠른 들었지만, 한되는

  • 가져 0-1ms (정밀도는 밀리 초에했다) 나는 그것이 AppFabric보다 빠르다고 생각했으나 AppFabric과 대면에서 15ms 느리지는 않았다. AppFabric 및/또는 MemCache에 대한 다른 모든 사람들의 성능은 어떻습니까? 나는 MS의 실제 번호와 대상 크기 또는 내가 기대하는 값이나 설정 또는 확인하는 옵션을 더 많이 만들 수 있는지 알아보기 위해 살펴 봐야 할 것들을 찾고있다.

  • +0

    저는 AppFabric을 매우 성공적으로 사용했으며 수천 개의 동시 연결로 인해 트래픽이 많은 시나리오에서 매우 잘 수행되는 것으로 나타났습니다. 즉, 나는 또한 memcache가 그렇게 나쁘게 실행되는 것 같아서 놀랍다. MemCachedDOTnet_2.0을 처음 접한 적이 없기 때문에 병목 일 수도 있습니다. 물론 첫 번째 직감은 확실히 VM 이었지만 말입니다. – s1mm0t

    +0

    @ s1mm0t 나는 내가 사용하고있는 클라이언트에 대해 생각해야한다. 몇 가지 더 많은 결과를 얻으려면 위에 나열된 질문을 편집하여 몇 가지를 추가로 시도해 보겠습니다. – Josh

    +0

    VM에서 Memcache를 실행하는 대신 josh를 * nix 기반 시스템에서 실행 한 다음 비교 테스트를 실행하십시오. Memcache는 주로 * nix 시스템에서 실행되도록 만들어졌습니다. Windows 포트는 Windows 환경에서 작동합니다. 이는 Windows를 호스트로 사용할 때 최상의 성능을 발휘한다고 말하는 것은 아닙니다. 또한 Prathul의 제안을 아래에서 시도해 본 결과 알려주십시오. – user20358

    답변

    1

    memcached의 Windows 버전을 테스트하여 사과와 사과를 비교하지 않는 이유는 무엇입니까? 하나의 VM에서 이들 중 하나를 실행할 때 여분의 OS의 오버 헤드가 발생합니다.

    +0

    1. memcached의 Windows 포트에서 "이 포트는 공식 memcached 팀에서 지원하지 않습니다." 2. 여분의 OS가있는 오버 헤드가 있음을 알고 있지만 put이 0-1ms이고 get이 14-15ms 인 경우 오버 헤드가 VM 계층이 아닌 소프트웨어와 관련이있는 것처럼 보입니다. 3. 작업 중에는 솔루션이 VM에 있으므로 오버 헤드가 항상 발생합니다. – Josh

    3

    Appfabric에서 로컬 캐시를 활성화 한 것으로 나타났습니다. 로컬 캐시가 활성화되면 캐시 클라이언트는 객체에 대한 참조를 로컬에 저장합니다. 이렇게하면 클라이언트 응용 프로그램의 메모리에 객체가 활성 상태로 유지됩니다. 응용 프로그램이 객체를 요청하면 캐시 클라이언트는 먼저 객체가 로컬 캐시에 상주하는지 확인합니다. 그렇다면 객체 참조는 서버에 접속하지 않고 즉시 반환됩니다. 존재하지 않으면 오브젝트가 서 v에서 검색됩니다. 객체가 로컬 캐시에 저장되면 응용 프로그램은 해당 객체가 캐시 클러스터의 다른 클라이언트에 의해 업데이트되는지 여부에 관계없이 무효화 될 때까지 해당 객체를 계속 사용합니다. 이러한 이유로 자주 변경되지 않는 데이터에는 로컬 캐시를 사용하는 것이 가장 좋습니다.

    로컬 캐시를 사용하도록 설정 했으므로 클러스터에 연결하지 않고 개체를 즉시 반환했습니다. 데이터가 자주 변경되고 부실 데이터에 대한 허용치가 낮은 경우 로컬 캐시를 사용하지 않도록 설정해야합니다. 로컬 캐시가 비활성화 된 Windows Server Appfabric 1.1에서도 동일한 테스트를 수행하십시오.

    +0

    이것이 올바른 대답이라고 생각합니다. – Calvin