Azure AI 검색 성능 벤치마크
Important
이러한 벤치마크는 이전 인프라에서 실행되는 배포에 2024년 4월 3일 이전에 만든 검색 서비스에 적용됩니다. 벤치마크는 비벡터 워크로드에도 적용됩니다. 새로운 한도에 대한 서비스 및 워크로드 업데이트가 보류 중입니다.
성능 벤치마크는 유사한 구성에서 잠재적인 성능을 예측하는 데 유용합니다. 실제 성능은 쿼리 서비스의 규모, 보내는 쿼리 형식 등 다양한 요소에 따라 달라집니다.
워크로드에 필요한 검색 서비스의 크기를 예측하는 데 도움이 되도록 여러 벤치마크를 실행하여 다양한 검색 서비스 및 구성에 대한 성능을 문서화했습니다.
다양한 사용 사례의 범위를 다루기 위해 두 가지 주요 시나리오에 대해 벤치마크를 실행했습니다.
- 전자상거래 검색 - 이 벤치마크는 실제 전자상거래 시나리오를 에뮬레이트하며 북유럽 전자상거래 회사 CDON에 기반하고 있습니다.
- 문서 검색 - 이 시나리오는 Semantic Scholar의 전체 텍스트 문서에 대한 키워드 검색으로 구성되어 있습니다. 이는 일반적인 문서 검색 솔루션을 에뮬레이트합니다.
이러한 시나리오는 다양한 사용 사례를 반영하지만 모든 시나리오는 다르므로 항상 개별 워크로드의 성능 테스트를 권장합니다. 사용자의 서비스에 대해 유사한 테스트를 실행할 수 있도록 JMeter를 사용하는 성능 테스트 솔루션을 게시했습니다.
테스트 방법
Azure AI 검색의 성능을 벤치마크하기 위해 서로 다른 계층 및 복제본/파티션 조합에서 서로 다른 두 시나리오에 대해 테스트를 실행했습니다.
이러한 벤치마크를 만들기 위해 다음 방법을 사용했습니다.
- 테스트는
X
QPS(초당 쿼리)에서 시작해서 180초 동안 진행됩니다. 이는 일반적으로 5 또는 10QPS였습니다. - 그런 다음 QPS가
X
만큼 늘어나고 또 180초 동안 실행되었습니다. - 180초마다, 테스트는 평균 대기 시간이 늘어나 1000ms를 넘거나 쿼리의 99% 미만이 성공할 때까지
X
QPS만큼 늘어났습니다.
다음 그래프는 테스트의 쿼리 로드가 어떻게 보이는지에 대한 시각적 개체 예제를 제공합니다.
각 시나리오는 적어도 10,000개의 고유 쿼리를 사용하여 캐싱에 의해 테스트가 지나치게 왜곡되는 것을 방지합니다.
Important
이러한 테스트에는 쿼리 워크로드만 포함됩니다. 많은 양의 인덱싱 작업이 예상되는 경우 이를 예측 및 성능 테스트에 포함해야 합니다. 인덱싱 시뮬레이션에 대한 샘플 코드는 이 자습서에서 찾을 수 있습니다.
정의
최대 QPS - 최대 QPS 숫자는 1000ms 아래로 유지되는 평균 대기 시간 및 제한 없이 99%의 쿼리가 성공적으로 완료된 테스트에서 달성한 가장 높은 QPS를 기준으로 합니다.
최대 QPS 백분율 - 특정 테스트에 대해 달성한 최대 QPS의 백분율입니다. 예를 들어, 지정된 테스트가 최대 100QPS에 도달한 경우 최대 QPS의 20%는 20QPS입니다.
대기 시간 - 쿼리에 대한 서버의 대기 시간이며 이러한 숫자는 RTT(왕복 연기)를 포함하지 않습니다. 값은 밀리초(ms) 단위입니다.
고지 사항 테스트
이러한 벤치마크를 실행하는 데 사용한 코드는 azure-search-performance-testing 리포지토리에서 사용할 수 있습니다. 벤치마크보다 JMeter 성능 테스트 솔루션을 사용했을 때 QPS 수준이 약간 더 낮다는 점에 주목할 필요가 있습니다. 차이는 테스트 스타일의 차이에 기인할 수 있습니다. 이는 가능한 한 프로덕션 워크로드와 유사한 성능 테스트를 만드는 것의 중요성을 나타냅니다.
Important
이러한 벤치 마크는 서비스의 특정 수준의 성능을 보장하지 않지만 시나리오에 따라 기대할 수 있는 성능에 대한 아이디어를 제공할 수 있습니다.
질문이나 문제가 있으면 azuresearch_contact@microsoft.com으로 연락하세요.
벤치마크 1: 전자상거래 검색
이러한 테스트를 실행하기 위해 CDON의 프로덕션 검색 인덱스 스냅샷과 해당 웹 사이트에서 수천 개의 고유 쿼리를 사용했습니다.
시나리오 세부 정보
- 문서 수: 6,000,000개
- 인덱스 크기: 20GB
- 인덱스 스키마: 총 250개 필드(검색 가능한 필드 25개 및 패싯 가능/필터링 가능 필드 200개)가 있는 넓은 인덱스
- 쿼리 유형: 패싯, 필터, 순서 지정 및 점수 매기기 프로필을 포함하는 전체 텍스트 검색 쿼리
S1 성능
초당 쿼리 수
다음 차트에서는 서비스가 연장된 시간 동안 처리할 수 있었던 가장 높은 쿼리 로드를 QPS(초당 쿼리 수)로 보여 줍니다.
쿼리 대기 시간
쿼리 대기 시간은 서비스 부하에 따라 다르며 스트레스가 높은 서비스는 평균 쿼리 대기 시간이 더 높습니다. 다음 표에서는 세 가지 다른 사용 수준에 대해 쿼리 대기 시간의 25번째, 50번째, 75번째, 90번째, 95번째 및 99번째 백분위수를 보여 줍니다.
최대 QPS 백분율 | 평균 대기 시간 | 25% | 75% | 90% | 95% | 99% |
---|---|---|---|---|---|---|
20% | 104ms | 35밀리초 | 115ms | 177ms | 257ms | 738ms |
50% | 140ms | 47ms | 144ms | 241ms | 400ms | 1175ms |
80% | 239ms | 77ms | 248ms | 466ms | 763ms | 1752ms |
S2 성능
초당 쿼리 수
다음 차트에서는 서비스가 연장된 시간 동안 처리할 수 있었던 가장 높은 쿼리 로드를 QPS(초당 쿼리 수)로 보여 줍니다.
쿼리 대기 시간
쿼리 대기 시간은 서비스 부하에 따라 다르며 스트레스가 높은 서비스는 평균 쿼리 대기 시간이 더 높습니다. 다음 표에서는 세 가지 다른 사용 수준에 대해 쿼리 대기 시간의 25번째, 50번째, 75번째, 90번째, 95번째 및 99번째 백분위수를 보여 줍니다.
최대 QPS 백분율 | 평균 대기 시간 | 25% | 75% | 90% | 95% | 99% |
---|---|---|---|---|---|---|
20% | 56ms | 21ms | 68ms | 106ms | 132ms | 210ms |
50% | 71ms | 26ms | 83ms | 132ms | 177ms | 329ms |
80% | 140ms | 47ms | 153ms | 293ms | 452ms | 924ms |
S3 성능
초당 쿼리 수
다음 차트에서는 서비스가 연장된 시간 동안 처리할 수 있었던 가장 높은 쿼리 로드를 QPS(초당 쿼리 수)로 보여 줍니다.
이 경우 두 번째 파티션을 추가하면 최대 QPS가 크게 증가하지만 세 번째 파티션을 추가하면 한계 수익이 감소한다는 것을 알 수 있습니다. 겨우 두 개의 파티션만 있는 S3의 활성 메모리로 이미 모든 데이터를 끌어오는 중이기 때문에 개선이 더 작을 수 있습니다.
쿼리 대기 시간
쿼리 대기 시간은 서비스 부하에 따라 다르며 스트레스가 높은 서비스는 평균 쿼리 대기 시간이 더 높습니다. 다음 표에서는 세 가지 다른 사용 수준에 대해 쿼리 대기 시간의 25번째, 50번째, 75번째, 90번째, 95번째 및 99번째 백분위수를 보여 줍니다.
최대 QPS 백분율 | 평균 대기 시간 | 25% | 75% | 90% | 95% | 99% |
---|---|---|---|---|---|---|
20% | 50ms | 20밀리초 | 64ms | 83ms | 98ms | 160ms |
50% | 62ms | 24ms | 80ms | 107ms | 130ms | 253ms |
80% | 115ms | 38ms | 121ms | 218ms | 352ms | 828ms |
벤치마크 2: 문서 검색
시나리오 세부 정보
- 문서 수: 750만 개
- 인덱스 크기: 22GB
- 인덱스 스키마: 23개 필드(검색 가능 8개, 필터링 가능/패싯 가능 10개)
- 쿼리 유형: 패싯으로 키워드 검색 및 적중 강조 표시
S1 성능
초당 쿼리 수
다음 차트에서는 서비스가 연장된 시간 동안 처리할 수 있었던 가장 높은 쿼리 로드를 QPS(초당 쿼리 수)로 보여 줍니다.
쿼리 대기 시간
쿼리 대기 시간은 서비스 부하에 따라 다르며 스트레스가 높은 서비스는 평균 쿼리 대기 시간이 더 높습니다. 다음 표에서는 세 가지 다른 사용 수준에 대해 쿼리 대기 시간의 25번째, 50번째, 75번째, 90번째, 95번째 및 99번째 백분위수를 보여 줍니다.
최대 QPS 백분율 | 평균 대기 시간 | 25% | 75% | 90% | 95% | 99% |
---|---|---|---|---|---|---|
20% | 67ms | 44ms | 77ms | 103밀리초 | 126ms | 216ms |
50% | 93ms | 59ms | 110ms | 150ms | 184ms | 304ms |
80% | 150ms | 96ms | 184ms | 248ms | 297ms | 424ms |
S2 성능
초당 쿼리 수
다음 차트에서는 서비스가 연장된 시간 동안 처리할 수 있었던 가장 높은 쿼리 로드를 QPS(초당 쿼리 수)로 보여 줍니다.
쿼리 대기 시간
쿼리 대기 시간은 서비스 부하에 따라 다르며 스트레스가 높은 서비스는 평균 쿼리 대기 시간이 더 높습니다. 다음 표에서는 세 가지 다른 사용 수준에 대해 쿼리 대기 시간의 25번째, 50번째, 75번째, 90번째, 95번째 및 99번째 백분위수를 보여 줍니다.
최대 QPS 백분율 | 평균 대기 시간 | 25% | 75% | 90% | 95% | 99% |
---|---|---|---|---|---|---|
20% | 45ms | 31ms | 55밀리초 | 73ms | 84ms | 109ms |
50% | 63ms | 39밀리초 | 81ms | 106ms | 123ms | 163ms |
80% | 115ms | 73ms | 145ms | 191ms | 224ms | 291ms |
S3 성능
초당 쿼리 수
다음 차트에서는 서비스가 연장된 시간 동안 처리할 수 있었던 가장 높은 쿼리 로드를 QPS(초당 쿼리 수)로 보여 줍니다.
쿼리 대기 시간
쿼리 대기 시간은 서비스 부하에 따라 다르며 스트레스가 높은 서비스는 평균 쿼리 대기 시간이 더 높습니다. 다음 표에서는 세 가지 다른 사용 수준에 대해 쿼리 대기 시간의 25번째, 50번째, 75번째, 90번째, 95번째 및 99번째 백분위수를 보여 줍니다.
최대 QPS 백분율 | 평균 대기 시간 | 25% | 75% | 90% | 95% | 99% |
---|---|---|---|---|---|---|
20% | 43ms | 29ms | 53ms | 74ms | 86ms | 111ms |
50% | 65ms | 37ms | 85ms | 111ms | 128ms | 164ms |
80% | 126ms | 83ms | 162ms | 205ms | 233ms | 281ms |
핵심 내용
이러한 벤치마크를 통해 Azure AI 검색이 제공하는 성능에 대해 알 수 있습니다. 서로 다른 계층에 있는 서비스 간의 차이를 확인할 수도 있습니다.
이러한 벤치마크의 몇 가지 주요 핵심 내용은 다음과 같습니다.
- S2는 일반적으로 S1에 비해 쿼리 볼륨의 4배 이상을 처리할 수 있습니다.
- S2는 일반적으로 비슷한 쿼리 볼륨에서 S1보다 대기 시간이 짧습니다.
- 복제본을 추가할 때 서비스가 처리할 수 있는 QPS는 일반적으로 선형 확장됩니다(예: 한 복제본이 10QPS를 처리할 수 있으면 5개의 복제본은 보통 50QPS 처리 가능).
- 서비스의 부하가 높을수록 평균 대기 시간이 더 길어집니다.
또한 시나리오마다 성능이 크게 다를 수 있음을 알 수 있습니다. 기대하는 성능을 얻지 못하고 있는 경우 더 나은 성능을 위한 팁을 확인합니다.
다음 단계
이제 성능 벤치마크를 살펴보았으므로 성능에 영향을 주는 Azure AI 검색의 성능 및 주요 요인을 분석하는 방법에 대해 자세히 알아볼 수 있습니다.