Skip to content

perf: 첫 화면 로딩 병목 제거 — JIT 끄기, 입항 쿼리 조인화, 관제 경고 Neo4j 조회 축소 - #46

Merged
docodocod merged 1 commit into
devfrom
perf/first-screen-load
Sep 30, 2026
Merged

docodocod merged 1 commit into
devfrom
perf/first-screen-load

Conversation

@docodocod

Copy link
Copy Markdown
Contributor

캐시 빈 첫 화면이 운영 약 31초(관제 경고 30.6초), 로컬 약 10초였다.

  • database: 연결에서 JIT 끔. mart 뷰 조인 행 수 과대추정(실제 1.7천→추정 477만)으로 0.2초 쿼리에 LLVM 컴파일 3초가 붙었다(로컬 PG16). 운영 RDS 는 원래 off.
  • arrivals/upcoming: 행마다 cargo_msds LATERAL·vessel_current_call 상관 서브쿼리로 뷰를 다시 계산하던 것을 한 번 집계 후 조인. 운영 RDS 에서 결과 동일 확인 (83·101·178건, 동순위 입항 시각끼리 순서만 다름), 1.4~3.1초 → 0.04초.
  • 관제 경고(같은 선석): 화물마다 Neo4j 조회 6개 → graph_snapshot 메모리 사본. 운영 비교 등급·쌍·선박 동일, 44초 → 0.005초. 같은 등급 쌍 중 대표로 보이는 쌍과 카테고리 문구 한 곳은 행 순서에 따라 달라진다(원래도 순서 미지정).
  • 관제 경고(인접 선석): 대상마다 부르던 Cypher 를 대상 목록 한 번 호출(UNWIND)로. 탐색·반환 행·정렬 키 그대로, 운영 비교 순서까지 동일, 7.07.8초 → 0.440.68초.

로컬 첫 화면(18개 API 동시): 캐시 빈 상태 10초 → 3.7초, 찬 상태 2.3초 → 1.75초.

캐시 빈 첫 화면이 운영 약 31초(관제 경고 30.6초), 로컬 약 10초였다.

- database: 연결에서 JIT 끔. mart 뷰 조인 행 수 과대추정(실제 1.7천→추정 477만)으로
  0.2초 쿼리에 LLVM 컴파일 3초가 붙었다(로컬 PG16). 운영 RDS 는 원래 off.
- arrivals/upcoming: 행마다 cargo_msds LATERAL·vessel_current_call 상관 서브쿼리로
  뷰를 다시 계산하던 것을 한 번 집계 후 조인. 운영 RDS 에서 결과 동일 확인
  (83·101·178건, 동순위 입항 시각끼리 순서만 다름), 1.4~3.1초 → 0.04초.
- 관제 경고(같은 선석): 화물마다 Neo4j 조회 6개 → graph_snapshot 메모리 사본.
  운영 비교 등급·쌍·선박 동일, 44초 → 0.005초. 같은 등급 쌍 중 대표로 보이는 쌍과
  카테고리 문구 한 곳은 행 순서에 따라 달라진다(원래도 순서 미지정).
- 관제 경고(인접 선석): 대상마다 부르던 Cypher 를 대상 목록 한 번 호출(UNWIND)로.
  탐색·반환 행·정렬 키 그대로, 운영 비교 순서까지 동일, 7.0~7.8초 → 0.44~0.68초.

로컬 첫 화면(18개 API 동시): 캐시 빈 상태 10초 → 3.7초, 찬 상태 2.3초 → 1.75초.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@docodocod
docodocod merged commit 8a8a73c into dev Sep 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant