Pulse 게시 ·

토스증권, Spark Connect 서버 교체·장기 실행 메모리 문제 대응 공개

토스증권이 Spark Connect 서버를 관리하는 자체 Tenant Operator의 운영 구조를 공개했다. 새 서버가 준비되면 신규 세션만 전환하고 기존 세션은 종료를 기다리되, 기본 90분이 지나면 끊길 수 있다. 별도 72시간 비교에서는 glibc 메모리 할당 영역을 제한한 뒤 Driver 메모리의 지속 증가가 나타나지 않았다고 밝혔다.

내용·출처 업데이트 · 2026. 10. 14. 오후 2:11

개별 Driver 실행·복구는 Apache Spark Operator가, 서버 수 유지와 설정 변경에 따른 교체는 자체 Spark Tenant Operator가 담당한다.

새 generation의 서버가 목표 수만큼 준비돼 일정 시간 안정적으로 유지되면 신규 세션을 전환한다. 준비 시간이 초과되면 교체를 취소하고 기존 서버를 유지한다.

기존 세션은 원래 Driver로 보내며 drain 시작 후 기본 90분이 지나면 서버를 삭제한다. Driver 재시작 시 기존 세션은 복원되지 않는다.

Heap을 8GiB로 고정하고 PreTouch를 적용한 조건에서는 cgroup anonymous memory가 9.26GiB에서 10.5GiB 이상으로 늘었다. MALLOC_ARENA_MAX=2를 추가한 비교에서는 72시간까지 9.06GiB를 유지했다고 설명했다.

운영 환경에서는 Driver·Executor의 arena 상한을 max(4, cores)로 설정하며 테넌트 지정값을 우선한다.

Ready 이전 Driver 주소 게시와 Executor의 Ready 대기 생략을 결합한 설정은 Spark 4.3.0용으로 추가됐으며 이전 버전에는 별도 백포트가 필요하다.

서버 준비 상태를 검사할 때 UI 응답만 확인하면 실제 연결 준비보다 일찍 트래픽을 받을 수 있어, Connect 포트의 gRPC 연결을 확인하도록 바꿨다.

원문