Elasticsearch 신입 트러블슈팅 면접

Elasticsearch 신입 · 취준 (0~1년) 트러블슈팅 5문항 조회수 16 · 2026-08-11 (화) 02:10:54
1 인덱싱 장애
Easy

Q. Elasticsearch에 데이터를 인덱싱하는 중 '429 Too Many Requests' 에러가 발생했습니다. 이 에러의 원인과 해결 방법을 설명해주세요.

Elasticsearch가 요청을 처리할 수 있는 용량과 관련이 있습니다.

A. 모범답안

429 에러는 Elasticsearch의 스레드 풀이 가득 차서 더 이상 요청을 처리할 수 없을 때 발생합니다. 주로 bulk 인덱싱 시 너무 많은 요청을 동시에 보내거나, 클러스터의 리소스가 부족할 때 나타납니다. 해결 방법으로는 bulk 요청의 크기를 줄이거나 배치 간 딜레이를 추가하는 방법이 있습니다. 또한 _cat/thread_pool API로 스레드 풀 상태를 확인하고, 필요시 클러스터 리소스를 증설해야 합니다. 재발 방지를 위해서는 적절한 bulk size와 요청 간격을 설정하고 모니터링을 강화해야 합니다.

핵심 포인트
  • • 스레드 풀 포화 상태가 원인
  • • bulk 요청 크기 조절 및 딜레이 추가
  • • _cat/thread_pool API로 상태 확인
  • • 적절한 bulk size 설정으로 재발 방지
답변에 넣으면 좋은 키워드
429 에러 스레드 풀 bulk 인덱싱 thread_pool API 배치 크기 리소스
실무에서는

대용량 로그 데이터를 실시간으로 인덱싱할 때 클러스터 과부하를 방지하기 위해 필수적인 지식입니다.

Follow-up 질문

bulk 요청 시 적절한 배치 크기는 어떻게 결정하나요?

2 검색 성능
Easy

Q. 검색 쿼리가 평소보다 매우 느리게 실행되고 있습니다. 어떤 순서로 원인을 분석하고 디버깅하시겠습니까?

Elasticsearch가 제공하는 쿼리 분석 API를 활용하면 좋습니다.

A. 모범답안

먼저 _search API에 profile 파라미터를 추가하여 쿼리의 세부 실행 시간을 분석합니다. 이를 통해 어떤 부분에서 시간이 오래 걸리는지 파악할 수 있습니다. 다음으로 _cat/indices API로 인덱스 크기와 샤드 상태를 확인하고, _cluster/health로 클러스터 전체 상태를 점검합니다. 느린 쿼리 로그(slowlog)를 확인하여 패턴을 분석하고, 필요시 쿼리를 최적화하거나 인덱스 설정을 조정합니다. 캐시 히트율도 _stats API로 확인하여 캐시 효율성을 점검해야 합니다.

핵심 포인트
  • • profile API로 쿼리 실행 시간 분석
  • • 인덱스 상태 및 클러스터 헬스 체크
  • • slowlog 확인으로 패턴 분석
  • • 캐시 히트율 및 쿼리 최적화
답변에 넣으면 좋은 키워드
profile API slowlog _cat/indices cluster health 쿼리 최적화 캐시
실무에서는

실시간 검색 서비스에서 사용자 경험을 저하시키는 성능 이슈를 빠르게 해결해야 할 때 사용됩니다.

Follow-up 질문

profile API 결과에서 특히 주목해야 할 메트릭은 무엇인가요?

3 클러스터 상태
Medium

Q. Elasticsearch 클러스터 상태가 yellow로 변경되었습니다. 이 상태의 의미와 원인 분석 방법, 그리고 해결 방안을 설명해주세요.

샤드의 할당 상태와 관련이 있으며, primary와 replica의 차이를 생각해보세요.

A. 모범답안

yellow 상태는 모든 primary 샤드는 할당되었지만 일부 replica 샤드가 할당되지 않은 상태를 의미합니다. _cat/shards API로 어떤 샤드가 unassigned 상태인지 확인하고, _cluster/allocation/explain API로 샤드가 할당되지 않은 구체적인 이유를 파악합니다. 주요 원인으로는 노드 수 부족, 디스크 공간 부족, 샤드 할당 설정 문제 등이 있습니다. 단일 노드 환경이라면 replica 수를 0으로 조정하거나, 노드를 추가하여 해결할 수 있습니다. 디스크 부족이 원인이라면 오래된 데이터를 삭제하거나 스토리지를 확장해야 합니다.

핵심 포인트
  • • replica 샤드 미할당 상태
  • • _cat/shards와 allocation/explain API로 원인 파악
  • • 노드 수, 디스크 공간, 할당 설정 확인
  • • replica 수 조정 또는 노드 추가로 해결
답변에 넣으면 좋은 키워드
yellow 상태 replica 샤드 unassigned allocation explain primary 샤드 노드
실무에서는

운영 중인 검색 서비스에서 클러스터 안정성을 모니터링하고 장애를 예방하는 데 필수적입니다.

Follow-up 질문

green, yellow, red 상태의 차이점과 각 상태에서 서비스 가용성은 어떻게 다른가요?

4 메모리 관리
Medium

Q. Elasticsearch 노드에서 OutOfMemoryError가 발생하여 노드가 다운되었습니다. 원인을 파악하고 재발을 방지하기 위한 방법을 설명해주세요.

Elasticsearch의 힙 메모리 사용과 JVM 설정을 중심으로 생각해보세요.

A. 모범답안

먼저 Elasticsearch 로그에서 OOM 발생 시점과 힙 메모리 사용량을 확인합니다. _nodes/stats API로 각 노드의 메모리 사용 현황을 분석하고, fielddata, segment 메모리 등 어떤 부분에서 메모리를 많이 사용하는지 파악합니다. 주요 원인으로는 부적절한 힙 크기 설정, 대용량 aggregation 쿼리, fielddata 캐시 과다 사용 등이 있습니다. JVM 힙 크기를 적절히 조정하되 전체 메모리의 50%를 넘지 않도록 설정하고, fielddata 캐시 크기를 제한해야 합니다. 또한 doc_values를 활용하고, 무거운 쿼리는 최적화하거나 제한하여 재발을 방지합니다.

핵심 포인트
  • • 로그 및 _nodes/stats로 메모리 사용 분석
  • • fielddata, segment 메모리 등 세부 항목 확인
  • • JVM 힙 크기를 전체 메모리의 50% 이하로 설정
  • • fielddata 캐시 제한 및 doc_values 활용
답변에 넣으면 좋은 키워드
OutOfMemoryError 힙 메모리 fielddata JVM doc_values _nodes/stats
실무에서는

대용량 데이터 분석 쿼리를 처리하는 서비스에서 안정적인 운영을 위해 반드시 관리해야 하는 부분입니다.

Follow-up 질문

Elasticsearch에서 힙 메모리와 오프힙 메모리는 각각 어떤 용도로 사용되나요?

5 데이터 손실
Medium

Q. 인덱스에 저장했던 문서가 검색되지 않습니다. 데이터 손실 여부를 확인하고 원인을 분석하는 방법을 설명해주세요.

데이터가 실제로 삭제되었는지, 아니면 검색만 안 되는 것인지 구분해야 합니다.

A. 모범답안

_count API로 인덱스의 전체 문서 수를 확인하여 데이터가 실제로 존재하는지 먼저 파악합니다. 문서가 존재한다면 _get API로 특정 문서 ID를 직접 조회하여 데이터 자체는 있는지 확인합니다. 검색이 안 되는 경우 매핑 설정을 확인하여 필드가 올바르게 인덱싱되었는지 점검하고, _analyze API로 검색어가 어떻게 분석되는지 확인합니다. 실제 데이터가 없다면 삭제 이력을 로그에서 확인하고, refresh 설정이나 bulk 요청 실패 여부를 점검합니다. 재발 방지를 위해서는 snapshot을 정기적으로 생성하고, 중요 작업 시 응답 코드를 반드시 확인해야 합니다.

핵심 포인트
  • • _count와 _get API로 데이터 존재 여부 확인
  • • 매핑 설정 및 _analyze API로 인덱싱 상태 점검
  • • 로그에서 삭제 이력 및 bulk 실패 확인
  • • 정기적인 snapshot 생성으로 재발 방지
답변에 넣으면 좋은 키워드
_count API _get API 매핑 _analyze refresh snapshot bulk
실무에서는

중요한 비즈니스 데이터를 다루는 검색 시스템에서 데이터 무결성을 보장하고 장애 시 복구하는 데 필수적입니다.

Follow-up 질문

Elasticsearch에서 refresh 간격이 검색 결과에 어떤 영향을 미치나요?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!