2013-04-13 2 views
3
  • 내 응용 프로그램 나는 Raven.Server.exe이 비정상적으로 많은 양을 소비 본 적이, 내가 최대 사용 시간 동안 Take(300) 람다.
  • 로 출장 한 (비록 큰 결과 집합을 반환 몇 쿼리를 포함 RAM. 사실
    • ,이 시간 동안, Raven.Server.exe 수 배기 내 서버의 사용 가능한 RAM. 나는이 상황을 피할 수있는 방법

    RavenDB : RAM 사용률을 높이려면 어떻게합니까?

?

  • 몇 가지 Google 검색을 한 후에 다른 사람들이 내 앞에이 오류가 발생했음을 알 수 있습니다.
  • 그러나 RavenDB는 지난 몇 년 동안 발전해 왔으며 Raven.Server.exe가 캐싱을 완전히 사용하거나 사용하지 못하도록 설정할 수있는 RAM 용량을 제한 할 수있는 많은 구성 인 코드 옵션이 있습니다.

내게 어떤 옵션이 이냐고 물을 수 있습니까? 내 상황에 가장 적합한 메시지는입니까? 여기


내가 서버 구성 옵션을 찾을 것입니다 :

:

내가 코드 옵션을 찾을 것입니다


그것은이 default setting이 존중되지 않는 나에게 분명하다 :

레이븐/MemoryCacheLimitMegabytes

에 대한 MB의 최대 크기 RavenDB 서버 내부의 내부 문서 캐시. 기본값 : 전체 시스템 메모리의 50 %에서 Esent 캐시의 크기를 제외합니다.

내 서버에서 사용자 지정 구성 설정없이 빌드 2330을 사용하면 Raven.Server.exe에서 사용 가능한 RAM의 95 %를 사용하고있었습니다!


편집 : 난 단지 무거운 읽기 을 실행하지 않음 (쓰기) 할 때 테스트 환경에서이 문제를 재현 할 수 있었다.

+0

RavenDB는 사용 가능한 RAM의 95 %를 나쁜 것으로 사용한다고 말합니다. 서버 라기보다는 소비 할 수있는만큼의 리소스를 사용합니다. –

+0

@ChrisMarisic : 예. RavenDB *가 서버의 사용 가능한 RAM을 모두 소모 할 때를 제외하고는 좋은 일입니다. –

답변

9

@Ayende Rahein은 나를 위해 일한 것입니다 여기에 저보다 RavenDB에 대한 무한 자세한 내용을 알고 있지만 :

  1. Take(300) 너무 많이했다. 이것을 Take(128)으로 바꿔야했습니다.
  2. 3.10 GHz 쿼드 코어 클라이언트 시스템에서 나는 Parallel.ForEach 루프 내의 쿼리를 사용하여 2.50 GHz 단일 코어 서버를 페 퍼링했습니다. Parallel.ForEach(objects, new ParallelOptions { MaxDegreeOfParallelism = 3 }, currentObject => { /* My Query */ });DocumentStore 인스턴스 configure the following options에 필요한
  3. : _store.Conventions.DisableProfiling = true; _store.Conventions.ShouldCacheRequest = url => false; _store.DisableAggressiveCaching();
  4. 을 그리고 페이지 내 쿼리에 필요하고 단일 세션 내에서 여러 일괄 요청을 할 경우, 내가 필요 나는 병렬 처리 수준을 지정하는 데 필요 다음
    ravenSession.Advanced.Evict(doc); // for each loaded doc

내가이 다른 누군가가 도움이되기를 바랍니다!

+2

세션을 기본적으로 Evict() 할 수있는 방법이 있습니까? 그게 도움이 될거야! – SandRock

3

짐, 이것이 캐시 문제라고 가정하지 마십시오. 나는 이것이 귀하의 색인 생성이라고 가정합니다. 여러 개의 from 절 또는 SelectMany가있는 색인/축소 색인이 있습니까?

또한 이러한 문제를 처리하는 가장 좋은 장소는 ravendb의 메일 링리스트입니다.

관련 문제