Skip to content

[refactor/#660] FCM 외부 호출을 트랜잭션 밖으로 분리해 DB 커넥션 점유 병목 해결#661

Open
kanghana1 wants to merge 3 commits into
developfrom
refactor/#660
Open

[refactor/#660] FCM 외부 호출을 트랜잭션 밖으로 분리해 DB 커넥션 점유 병목 해결#661
kanghana1 wants to merge 3 commits into
developfrom
refactor/#660

Conversation

@kanghana1

Copy link
Copy Markdown
Contributor

❤️ 기능 설명

스레드풀 분리 후 성능이 나빠져 모니터링을 해본 결과 병목 원인은 스레드가 아닌 FCM(외부 I/O) 호출이 DB 커넥션(HikariCP)을 점유하는 것이었음. 이를 해결하기 위해 FCM 호출을 트랜잭션 밖으로 빼 커넥션 점유를 제거

변경 사항

  • 일반 알림 (NotificationEventListener): @Transactional(REQUIRES_NEW) 제거 → findById는 리포지토리 자체 트랜잭션으로 커넥션을 짧게 잡았다 반납, FCM은 커넥션 없이 실행
  • 채팅 알림 (ChatPushNotificationService): @Transactional(readOnly) 제거 → fetch join(...WithMember)으로 멤버 로딩 후, detached 상태에서 FCM 루프 실행

연결된 issue

연결된 issue를 자동으로 닫기 위해 아래 {이슈넘버}를 입력해주세요.

close #660



🩷 Approve 하기 전 확인해주세요!


✅ 체크리스트

  • PR 제목 규칙 잘 지켰는가?
  • 추가/수정사항을 설명하였는가?
  • 테스트 결과 사진을 넣었는가?
  • 이슈넘버를 적었는가?

@kanghana1 kanghana1 requested review from Dimo-2562 and dbalsk July 13, 2026 07:52
@kanghana1 kanghana1 self-assigned this Jul 13, 2026
@kanghana1 kanghana1 added the 🌟 REFACT New feature or request label Jul 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🌟 REFACT New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REFACT] 알림 전송을 트랜잭션 밖으로 분리

1 participant