콘텐츠로 이동

2025 04 29

2025-04-29

ES Refresh Policy

참고: https://wave1994.tistory.com/187

  • 개요
    • 색인, 업데이트, 삭제 등 데이터 변경 작업이 언제 검색 결과에 반영될지 제어하는 정책
    • ES 기본: near real-time
      • 데이터 색인되자마자 검색 X
      • 내부적으로 일정 주기 (기본 1초)마다 refresh 작업을 통해서만 새 데이터가 검색에 노출
  • Refresh 동작 원리
    • 변경된 문서를 메모리 버퍼, 트랜잭션 로그 (translog)에 저장
    • refresh 발생 시, 메모리 버퍼의 Lucene 세그먼트로 변환되어 검색 가능한 상태로 변경
    • 기본적으로 1초마다 refresh 되지만, 주기는 refresh_interval로 조정 가능
  • Refresh Policy 옵션
    • Index/Update/Delete/Bulk API 등에서는 refresh 파라미터로 정책 지정 가능
    • false (기본값)
      • 별도의 refresh 동작 X. 변경 사항 반영 시점은 다음 자동 refresh. 성능에 가장 유리
      • 대용량 처리에 이걸 사용하자
    • true
      • 해당 요청 직후 즉시 refresh 수행. 변경 사항 바로 검색에 반영. 성능 저하 위험 있음
    • wait_for
      • 변경 사항 refresh 되어 반영될 때 까지 응답 지연. 즉시 refresh X, 다음 refresh 까지 대기
  • elastic4s
    • refresh=false <-> .refresh(RefreshPolicy.None) 혹은 명시 X
    • refresh=true <-> .refresh(RefreshPolicy.Immediate) or .refreshImmediately
    • refresh=wait_for <-> .refresh(RefreshPolicy.WaitFor)

netstat, curl, netcat

  • netstat (network status)
    참고: https://semtul79.tistory.com/6

    • 네트워크 연결, 라우팅 테이블, 인터페이스 통계, 포트 상태 등 네트워크 관련 정보 출력
    • 현재 서버에서 열린 포트, 연결된 클라이언트, 서버 listen 중인 포트, 네트워크 상태 진단 등에 사용
    • 예시)

      $ netstat -ant
      Active Internet connections (servers and established)
      
      Proto | Recv-Q | Send-Q | Local Address         | Foreign Address       | State
      tcp          0        0   127.0.0.53:53           0.0.0.0:*               LISTEN
      tcp          0        0   0.0.0.0:22              0.0.0.0:*               LISTEN
      tcp          0        0   172.31.22.162:39806     169.254.169.254:80      TIME_WAIT
      tcp          0      384   172.31.22.162:22        13.209.1.56:53874       ESTABLISHED
      tcp          0        0   172.31.22.162:22        13.209.1.57:48444       ESTABLISHED
      tcp6         0        0   :::22                   :::*                    LISTEN      
      tcp          0        0   172.31.22.162:53484     142.251.42.142:443      ESTABLISHED
      

      • 모든 ip (0.0.0.0:22) 로 LISTEN 되며, 외부 컴퓨터는 아무 ip/port와 가능
      • 현재 컴퓨터의 주소는 ifconfig의 eth0 => 172.31.22.162
      • 142.251.42.142는 https로 접속 (클라이언트)
      • 각각은 소켓이라고 볼 수 있으며, 소켓은 5가지 항목 (프로토콜 | src ip | src port | dst ip | dst port) 으로 구성
  • curl
    • url 기반의 데이터를 웹 서버로 전송하기 위한 명령줄 유틸
    • HTTP/HTTPS/SCP/SFTP/FTP 등 다양한 프로토콜, 프록시 헤더 쿠키 등 세부 옵션 설정 가능.
    • postman과 같은 역할 가능
  • netcat
    참고: https://feccle.tistory.com/253

    • TCP/UDP 사용해 네트워크 연결 읽고 쓰는데 사용
    • 네트워크 디버깅, 파일전송, 포트 스캐닝, 원격 제어 등 다양한 용도 사용 가능
      kakao@joel-MacBook-Pro  ~  nc -zv 1.1.1.1 53
      Connection to 1.1.1.1 port 53 [tcp/domain] succeeded!