<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Sherry Ger - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Sherry Ger - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/kr/search-labs/author/sherry-ger</link>
    </image>
    <link>https://www.elastic.co/kr/search-labs/author/sherry-ger</link>
    <atom:link href="https://www.elastic.co/kr/search-labs/rss/author/sherry-ger.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[kr]]></language>
    <lastBuildDate>Mon, 21 Sep 2026 20:59:18 GMT</lastBuildDate>
  <item>
    <title><![CDATA['best_compression'으로 검색 성능 개선]]></title>
    <description><![CDATA['best_compression'은 일반적으로 Elastic Observability 및 Elastic Security 사용 사례에서 저장 공간을 절약하는 기능으로 간주되지만, 이 블로그에서는 검색의 성능 조정 수단으로써 그 효과를 보여줍니다.]]></description>
    <content:encoded><![CDATA[<p></p><p>동시성이 높은 워크로드에 맞게 Elasticsearch를 조정할 때 일반적인 접근 방식은 검색 지연 시간을 줄이기 위해 작업 문서 세트를 메모리에 유지하도록 RAM을 최대화하는 것입니다. 따라서 <a href="https://www.elastic.co/docs/reference/elasticsearch/index-settings/index-modules"><code>best_compression</code></a> 은(는) 주로 저장 공간 효율성이 우선시되는 Elastic Observability와 Elastic Security 사용 사례에서 저장 공간 절약 수단으로 간주되며, 검색 워크로드에는 거의 고려되지 않습니다.</p><p>이 블로그에서는 데이터 세트 크기가 OS 페이지 캐시를 크게 초과하는 경우, <code>best_compression</code> 이(가) I/O 병목 현상을 줄여 검색 성능과 리소스 효율성을 개선하는 방법을 보여줍니다.</p><h2><strong>설정</strong></h2><p>해당 사용 사례는 <a href="https://www.elastic.co/docs/deploy-manage/deploy/elastic-cloud/ec-change-hardware-profile#ec-profiles-compute-optimized-arm">Elastic Cloud CPU에 최적화된 인스턴스</a>에서 실행되는 동시성이 높은 검색 애플리케이션입니다.</p><ul><li><p>데이터 볼륨: 약 5억 개의 문서</p></li><li><p>인프라: 6개의 Elastic Cloud(Elasticsearch Service) 인스턴스(각 인스턴스: 1.76TB 저장 공간 | 60GB RAM | 31.9 vCPU)</p></li><li><p>메모리 대 저장 공간 비율: 전체 데이터 세트의 약 5%를 RAM에 저장</p></li></ul><h2><strong>증상: 긴 지연 시간</strong></h2><p>19시경에 현재 요청 수가 급증할 때 검색 지연 시간이 크게 악화되는 것을 확인했습니다. 그림 1과 그림 2에서 볼 수 있듯이, Elasticsearch 인스턴스당 분당 약 400건의 요청이 발생하는 최고 트래픽 수준에서 평균 쿼리 서비스 시간은 60ms 이상으로 저하되었습니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltf8ab7de934d6b410/6a170440c1e8a58db3f881c1/f9c6cc1882e7db24336c65c54bbc1d38dcdb7fa3-697x311.png" alt="Elasticsearch당 분당 요청 수가 최고치를 기록했습니다" /><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt32de2bed0afbacd5/6a1704422b835fa5ddf4b0e2/bbb705ae2fcd14c81d335bf322346caf3bf33765-996x618.png" alt="Elasticsearch의 평균 쿼리 서비스 시간" /><p>초기 연결 처리 이후 CPU 사용량은 비교적 낮은 수준을 유지했는데, 이는 컴퓨팅이 병목 현상이 아님을 나타냅니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blta5b45d4a1ff48f54/6a17044447d49cd7252d88af/cec15a28d2d22e9adedd2951bb2334b3717890a1-1494x730.png" alt="Elasticsearch CPU 사용량" /><p>쿼리 볼륨과 페이지 오류 사이에 강한 상관관계가 나타났습니다. 요청량이 증가함에 따라 페이지 오류도 비례적으로 증가하여 분당 약 40만 건에 달하는 최고치를 기록했습니다. 이는 활성 데이터 세트가 페이지 캐시에 저장될 수 없음을 의미합니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltd0a3d0c610700bdb/6a17044560084b6f403c4459/511f2f10300a9d10ba3d7a82b9a8c8d567ac5636-1492x678.png" alt="페이지 오류 수와 Elasticsearch 성능" /><p>동시에 JVM 힙 사용량은 정상적인 수준을 보였습니다. 이는 가비지 컬렉션 문제가 아님을 시사하며, 병목 현상이 I/O에 있음을 확인시켜 줍니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt3f888a03ce78eb04/6a170448964cea401008ba59/336bbad638f866304358dba1d06ee987de0f23cf-1490x568.png" alt="Elasticsearch에서 힙 사용량" /><h2><strong>진단: I/O 바운드</strong></h2><p>시스템이 I/O 바운드 상태였습니다. <a href="https://www.elastic.co/blog/elasticsearch-caching-deep-dive-boosting-query-speed-one-cache-at-a-time">Elasticsearch는 OS 페이지 캐시를 활용하여 메모리에서 인덱스 데이터를 제공합니다</a>. 인덱스가 캐시에 비해 너무 크면 쿼리는 값비싼 디스크 읽기를 트리거합니다. 일반적인 해결책은 수평적 확장(노드/RAM 추가)이지만, 먼저 기존 리소스를 활용하여 효율성을 개선하고자 했습니다.</p><h2><strong>수정 사항</strong></h2><p>기본적으로 Elasticsearch는 인덱스 세그먼트에 <a href="https://en.wikipedia.org/wiki/LZ4_(compression_algorithm)">LZ4</a> 압축을 사용하여 속도와 크기 사이의 균형을 유지합니다. <code>best_compression</code> ( <a href="https://en.wikipedia.org/wiki/Zstd">zstd</a> 방식 사용)로 전환하면 인덱스 크기가 줄어들 것이라는 가설을 세웠습니다. 설치 공간이 작아지면 페이지 캐시에 더 많은 비율의 인덱스가 들어갈 수 있으므로 압축 해제에 필요한 CPU 사용량의 미미한 증가와 디스크 I/O의 감소를 맞바꿀 수 있습니다.</p><p><code>best_compression</code> 을(를) 활성화하기 위해 인덱스 설정 <code>index.codec: best_compression</code> (으)로 데이터를 다시 색인했습니다. 또는 인덱스를 닫고 인덱스 코덱을 <code>best_compression</code> (으)로 재설정한 다음 세그먼트 병합을 수행해도 동일한 결과를 얻을 수 있습니다.</p>POST my-index/_close
PUT my-index/_settings
{
    "codec": "best_compression"
}
  
POST my-index/_open  
POST my-index/_forcemerge?max_num_segments=1<h2><strong>결과</strong></h2><p>결과는 가설을 뒷받침했습니다. 저장 공간 효율성 개선은 CPU 사용률의 증가 없이 검색 성능의 상당한 향상으로 직결되었습니다.</p><p><code>best_compression</code> 을(를) 적용함으로써 인덱스 크기가 약 25% 감소했습니다. 반복적인 로그 데이터에서 나타난 감소율보다는 낮지만, 이 25% 감소는 페이지 캐시 용량을 동일한 수준으로 실질적으로 증가시켰습니다.</p><p>다음 로드 테스트(17시 시작) 동안 트래픽은 훨씬 더 높아져 Elasticsearch 노드당 분당 최대 500건의 요청을 기록했습니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blta61ab3bd5ded5716/6a170449a6c2b9f711e795dd/fc1902f396cb2115c0013155ad07f6eb87389c60-660x309.png" alt="Elaticserach에서 로드 테스트" /><p>로드가 높아졌음에도 CPU 사용률은 이전 실행보다 낮았습니다. 이전 테스트에서 사용률이 높았던 것은 과도한 페이지 오류 처리 및 디스크 I/O 관리로 인한 오버헤드 때문이었을 가능성이 큽니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt9fd1a44b02a4f787/6a17044b2b835ff996f4b0e6/15699ef4c65b3f0a9f8a3e1bae8bb18f7b647025-819x352.png" alt="best_compression으로 Elasticsearch CPU 사용률 성능 개선" /><p>결정적으로 페이지 오류가 많이 감소했습니다. 처리량이 높아진 상황에서도 오류 수는 분당 20만 건 미만으로, 기준 테스트의 30만 건 이상에 비해 현저히 줄어들었습니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltef0c621d76767115/6a17044c2b835fe49ef4b0ea/f76ca967976d740af88a9359b66041701abb46fc-764x340.png" alt="best_compression으로 페이지 오류 수 및 Elasticsearch 성능 개선" /><p>페이지 오류 결과는 여전히 최적에 미치지 못했지만, 쿼리 서비스 시간은 약 50% 단축되었습니다. 로드가 많은 상황에서도 30ms 미만으로 유지되었습니다.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt6579b3d005d04101/6a17044e66c4f9179cf8bf13/750ec1c59b8eb5069aed4c066d856ecea82d5bca-620x311.png" alt="best_compression으로 Elasticsearch의 평균 쿼리 서비스 시간 성능 개선" /><p></p><h2><strong>결론: 검색을 위한 best_compression</strong></h2><p>데이터 볼륨이 사용 가능한 물리적 메모리를 초과하는 검색 사용 사례에서 <code>best_compression</code>은(는) 강력한 성능 조정 수단입니다.</p><p>캐시 미스를 해결하는 일반적인 해결책은 RAM을 늘려 확장하는 것입니다. 하지만 인덱스 공간을 줄임으로써 페이지 캐시의 문서 수를 최대화하는 동일한 목표를 달성했습니다. 다음 단계에서는 <a href="https://www.elastic.co/blog/space-savings-a-lesser-known-benefit-of-index-sorting-in-elasticsearch"><strong>인덱스 정렬</strong></a>을 통해 저장 공간 최적화를 더 강화하고 기존 리소스에서 성능을 극대화할 것입니다.</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/improve-elasticsearch-performance-best-compression</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/improve-elasticsearch-performance-best-compression</guid>
    <category><![CDATA[Elastic 내부]]></category>
    <dc:creator><![CDATA[Sherry Ger,Ryan Eno]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt4ff57fbb95c04412/6a17044fab7f081490db9d66/5141a8c2618337207d848ce16b258a86885955b2-1600x1034.jpg" length="0" type="image/jpeg"/>
    <pubDate>Fri, 23 Jan 2026 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>