[로아투두] 로그 저장 최적화 작업

2025. 3. 11. 18:36·Project/LOATODO

1. 서론

로그, 타임라인 서비스 추가 후 서버가 계속 터짐...

2. 원인 파악

1) Jmeter 테스트

Jmeter로 300명의 사용자 테스트

 

[에러 메시지]

{"errorCode":400,"exceptionName":"CannotCreateTransactionException","errorMessage":"Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection"}

 

-> JDBC 커넥션이 없다.

 

원인 파악

application.properties 설정 후 로그 확인

logging.level.org.springframework.transaction.interceptor=trace
logging.level.org.springframework.orm.jpa=DEBUG

 

AI(Grok)를 이용한 분석

 

-> 이미 있는 로그를 삭제하는 트랜잭션이 오래걸린다.

 

deleteLogs 메소드 확인

@Override
public void deleteLogsByLogs(Logs logEntity) {
    factory.delete(logs)
            .where(logs.memberId.eq(logEntity.getMemberId())
                    .and(logs.characterId.eq(logEntity.getCharacterId()))
                    .and(logs.localDate.eq(logEntity.getLocalDate()))
                    .and(logs.logType.eq(logEntity.getLogType()))
                    .and(logs.logContent.eq(logEntity.getLogContent()))
                    .and(logs.name.eq(logEntity.getName()))
            )
            .execute();
}

 

-> 바보같이 코드짬...

 

2) deleteLogsByLogs 수정

@Override
public void deleteLogsByLogs(Logs logEntity) {
    factory.delete(logs)
            .where(logs.id.eq(logEntity.getId()))
            .execute();
}

 

그 후 다시한번 Jmeter 테스트

 

-> Error가 0%로 기능적으로는 문제 없으나,
평균 응답 시간(1.86초)과 최대 응답 시간(3.88초)이 다소 느림. 응답 시간의 변동성(표준편차 851.87ms)도 큼.

저작자표시 (새창열림)
'Project/LOATODO' 카테고리의 다른 글
  • [로아투두] O(n^2) 문제 해결과 partitioningBy
  • [로아투두] Spring Security JWT 관리자 API 뚫려있었네...?
  • [로아투두] 에러 로그 출력 변경
  • [로아투두] bucket4j를 이용해 트래픽 요청 제한하기
마볼링
마볼링
개발과 게임에 관한 내용을 읽기 쉽게 정리합니다.
  • 마볼링
    게임을 좋아하는 개발자의 블로그
    마볼링
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Project
        • LOATODO
        • 인스타그램 클론코딩(중단)
      • Language
        • Java
        • PHP
        • Javascript
      • Framework & Library
        • Spring
        • Vue
      • Computer Science
        • Web
        • Linux
      • CodingTest
        • Algorithm
        • Kotlin으로 푼 코딩 테스트
        • Java로 푼 코딩 테스트
        • Sorting & Thinking
        • BFS
      • 책&강의 정리
      • 정보처리기사
      • 개인
        • 팰월드(PALWORLD)
        • 마인크래프트
  • 블로그 메뉴

    • 링크

      • GitHub
      • Threads
    • 공지사항

    • 인기 글

    • 태그

      Database
      네트워크
      프로그래머스
      Spring
      jsp
      티스토리챌린지
      JPA
      운영체제
      오블완
      코딩테스트
      error
      로아투두
      이터널 모드
      php
      LoaTodo
      아크 서바이벌
      CS
      codingtest
      java
      springboot
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.1
    마볼링
    [로아투두] 로그 저장 최적화 작업
    상단으로

    티스토리툴바