2010-11-24 5 views
6

저는 Apache Solr 프로젝트에서 일하고 있습니다. (클라우드 환경에서 배포 - Amazon ec2 인스턴스).Solr 캐싱 메커니즘에 대한 질문

나는 Solr이 결과를 캐싱하는 데 훌륭한 역할을한다는 것을 알고 있습니다. 같은 쿼리를 다시 실행하면 응답에 Solr QTime 0 또는 1 밀리 초가 표시됩니다.

저는 Solr 시스템을 테스트하고 싶습니다. 따라서 사용할 수있는 쿼리 목록이 제한되어 있습니다 (50,000 개의 고유 쿼리). 문제는 모든 쿼리가 캐싱된다는 것입니다.

스트레스 테스트 - 5 분 ​​후 - 내 모든 쿼리는 Solr &에서 실행됩니다. 이렇게하면 시스템이 땀을 흘리게됩니다. (마녀가 목적이었습니다). 하지만 같은 쿼리를 다시 실행하면 QTime이 거의 0입니다! -> Solr은 쉬운 시간을 가지고 있습니다. &은 스트레스를받지 않습니다.

내 질문 : 어떻게 모든 Solr 캐시 (Solr 및 Lucence 캐시 모두)를 전환 할 수 있습니까? 또는 어떻게 캐시를 제한 할 수 있습니까?

나는 모든 Solr 인턴 캐시를 사용하려고 시도했지만 캐시는 여전히 유지됩니다. (QueryResultCache 및 FieldCache) 참고 : 구성에서는 Lucence가 내부 캐시를 관리한다고 언급합니다. 아마도이 캐시가 문제 일 수 있습니까?

모든 50,000 개의 쿼리를 캐시에 저장할 수 있다는 것은 이상한 일입니다.

답변

6

구성에서 filterCache, queryResultCache and documentCache을 주석 처리 할 수 ​​있습니다. Lucene's FieldCache cannot be disabled.

비록 벤치마킹을하는 경우조차 그렇게하는 것이 실제로 의미가 없지만. 또한 운영 체제에서 디스크 캐싱을 비활성화 하시겠습니까? CPU 캐시 (세 가지 레벨 모두)? 각 하드 디스크의 내부 캐시?

캐시는 시스템의 일부이므로 캐시를 비활성화하면 프로덕션 환경에서 정확하게 수행되지 않으므로 벤치 마크가 쓸모 없게됩니다.

+1

+1. @ user519 ... 주석 처리가 도움이 될지 확실하지 않습니다. 크기를 0으로 설정하십시오. 어쨌든 : 캐시를 끄면 벤치 마크는 쓸모가 없다 !! – Karussell

+0

나는 그것을 알고 있었다. 문제는 다음과 같습니다. 68,000 개의 고유 쿼리 (로그에서 검색)가 있습니다. 그러나 테스트에서 5 분 정도 지나면 모든 쿼리가 시스템에 공급되어 캐싱이 발생합니다. 더 긴 테스트를 원한다면 수백만 개의 쿼리가 필요합니까? 또는 Lucence/Solr 캐시의 쿼리 수는 얼마입니까? –

+0

@Karussell은 정확하다고 생각합니다. 이것은 doc 페이지에서 인용 한 것입니다. "fieldValueCache가 solrconfig.xml에 선언되지 않은 경우 초기 크기 10, 최대 크기 10000, 자동 경고 없음으로 자동 생성됩니다." – JnBrymn

3

캐시를 끄는 것은 최소한 응용 프로그램과 관련된 훌륭한 아이디어입니다. 이 경우의 벤치 마크는 이전에는 볼 수 없었던 쿼리의 응답/비용을 찾기 위해 수집 한 것입니다. 캐시 내에서 인기가있는 것과는 달리 만료됩니다.

검색 시스템의 성능을 나타내는 메트릭을 원하는 것처럼 들리 겠지만, 쿼리 캐시가 아닙니다.

이전 답변은 실제로 모든 벤치 마크에서 "실제 성능"에 대한 자신의 정의와 동일한 것을 측정해야한다고 제안했습니다. 그것은 공학이 작동하는 방식이 아닙니다.

"디스크 캐시"에 관해서. Linux에는 디스크 캐시가 없습니다. 페이지 캐시 만; 그 페이지가 디스크에 저장되어 있는지, 메모리에 생성되었거나 파괴되었는지 또는 스마트 한 대용량 파일 시스템에 대한 사전 할당인지를 나타냅니다. 모든 페이지입니다.

캐시 성능 메트릭 측정을 귀찮게하면 캐시를 벤치마킹 할 때 이점이 있습니다. 이런.

BTW, "-server"와 "XXcompileThreshold"사이에 첫 번째 큰 쿼리 집합이 임의로 있거나 Solr/Lucene에서 가능한 많은 함수 경로를 사용하도록 특별히 선택되어 있는지 확인하고자합니다. JIT는 활성화되어 있고 어느정도 정착되어 있습니다.