본문 바로가기

전체 글336

AWS Elastic Beanstalk 500 에러 해결하기 도서관리 프로그램 프로젝트를 CI/CD 구축하기 위해서 Elatic Beanstalk로 먼저 배포 작업을 하던 중. 배포한 프로젝트가 home.html은 잘 로드되는데 다른 메뉴만 누르면 500에러가 발생했다....ㅠㅠ 그래서 Elatic Beanstalk에서 주는 로그 파일을 뜯어봤다. 환경에서 로그 메뉴를 눌러서 현재 서버의 로그를 받아 볼 수 있다. 내가 참고한 로그는 /var/log/web.stdout.log 이다. 무슨 로그들이 모이는지는 나중에 알아봐야겠다. Dec 20 05:27:08 ip-172-31-4-33 web[10317]: 2023-12-20T05:27:08.154Z ERROR 10317 --- [nio-5000-exec-7] o.a.c.c.C.[.[.[/].[dispatcherSe.. 2023. 12. 20.
AWS Elastic Beanstalk 502에러 해결하기 CICD 환경 구성을 위해 Elastic Beanstalk를 통해 배포를 하던 중. 업로드 후 도메인 주소로 이동했을때, 502 Bad GateWay라는 표시가 나왔습니다. 이벤트창에는 environment health has transitioned from info to no data. none of the instances are sending data. 라는 말이 찍히고요... 알고보니 AWS Elastic Beanstalk은 기본적으로 5000 포트를 사용하기 때문에, 포트를 5000으로 변경해서 연결해주어야한다네요. 환경 구성 > 업데이트, 모니터링 및 로깅 > 편집 > 키에 SERVER_PORT 값에 5000 를 추가해주었더니 해결이 되었습니다. port번호로 해결이 안되는경우) 사실 저는 이.. 2023. 12. 15.
트러블슈팅 failed to lazily initialize a collection of role: personal.blog.entity.User.authorities: could not initialize proxy - no Session 오류 발생 해결하기 이번에 blog 프로젝트를 수정하면서 권한을 여러개 주기로 결정했다. 권한을 엔티티로 만들고, User와 권한을 일대다로 매핑하고 @OneToMany(mappedBy = "user") List autorities = new ArrayList(); 로 받아왔더니 spring security가 Login처리를 하는 과정에서 지연로딩 프록시 초기화가 불가능한 문제가 발생했다. 문제 해결과정 1) Hibernate.initialize(authorities)메소드를 .. 2023. 12. 14.
blog ERD 허접한 수준의 ERD :) ... 블로그 기능추가를 위해 다시 엔티티를 모델링해보았다. Authorities를 다대다로 많이 하던데 다대다로 하기 싫어서 다대일로 풀어내려고 한다. 2023. 12. 13.
JPA실전 2 - OSIV와 성능 Open Session In View: 하이버네이트, Open EntityManager In View: JPA (관례상 OSIV라 한다.) spring.jpa.open-in-view : true 기본값 OSIV 전략은 트랜잭션 시작처럼 최초 데이터베이스 커넥션 시작 시점부터 API 응답이 끝날 때 까지 영속성 컨텍스트 와 데이터베이스 커넥션을 유지한다. 이를 통해 지연로딩이 가능하지만, 너무 오랜시간동안 데이터베이스 커넥션 리소스를 사용하기 때문에, 실시간 트래픽이 중요한 애플리케이션에서는 커넥션이 모자랄 수 있다. 이것은 결국 장애로 이어진다 spring.jpa.open-in-view: false OSIV 종료 open-in-view: false 로 해야 커넥션풀이 마르지 않음. OSIV를 끄면 커넥션.. 2023. 12. 12.
JPA 실전2 - 컬렉션 조회 최적화 권장순서 1. 엔티티 조회 방식으로 우선 접근 1. 페치조인으로 쿼리 수를 최적화 2. 컬렉션 최적화 1. 페이징 필요 hibernate.default_batch_fetch_size , @BatchSize 로 최적화 2. 페이징 필요X 페치 조인 사용 2. 엔티티 조회 방식으로 해결이 안되면 DTO 조회 방식 사용 3. DTO 조회 방식으로 해결이 안되면 NativeSQL or 스프링 JdbcTemplate 우선 엔티티 조회방식을 우선 권장함.( Batch size로 해결이 안되면 사실 캐시(Redis같은거)쓰는게 맞음.) 요즘 네트워크 성능이 좋아서 엔티티방식이나 DTO방식이나 별 차이 안남. (참고로 엔티티는 캐시에 올리면 안되고 무조건 DTO로 변환해서 DTO를 캐시해야함) 엔티티 조회방식은 JPA.. 2023. 12. 12.