포트 사용하고 있는 프로세스 확인 sudo lsof -i :8080 다음과 같이 포트를 확인할 수 있다. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 1949 daeun 8u IPv6 0x9bd5b38e4fbe7c4b 0t0 TCP localhost:http-alt (LISTEN) java 15097 daeun 176u IPv6 0x9bd5b38e4fb4444b 0t0 TCP *:http-alt (LISTEN) 특정 포트 프로세스 죽이기 kill 명령어 kill -9 {PID} fuser 명령어 $ fuser -k -n tcp 9090 9090/tcp: 2894
피치 못할 사정으로... 쓰고 있던 젠킨스에 접근을 못하게 되어 수동으로 배포할 일이 생겼다. 이참에 리눅스에 jar 파일로 배포하는 법도 익힐겸 수동 배포를 해보았다. 깃허브 연동하여 배포하는 방법은 차차 해봐야겠다.! 젠킨스 만세...!! * 리눅스 서버 배포 ? 로컬에서 프로젝트를 배포하여 새로 시작할 때는 IDE로 손쉽게 Run 버튼을 누르면 되지만, 리눅스 서버에서 배포하기 위해서는 jar 파일을 실행해 줘야 한다. jar 파일 빌드하기 1. 우측 Gradle 탭 - 배포하고자할 모듈 - build - bootJar 실행 2. 좌측 프로젝트 - 배포할 모듈 - build - libs 폴더에서 생성된 jar파일 여기서 생성된 jar파일을 Linux 서버에 옮겨 실행하면 배포 된다. 서버에 JDK ..
프로세스가 정상적으로 동작하고 있는지를 확인 ps -ef | grep java : 현재 실행되고 있는 java 관련 프로세스가 있는지 확인한다. $ ps -ef | grep java root 14188 14162 0 Feb06 ? 00:39:45 java -jar -Dspring.profiles.active=dev /api.jar root 43501 42301 9 18:46 pts/0 00:00:26 java -jar api.jar root 44611 42301 0 18:51 pts/0 00:00:00 grep java 프로세스 중지 kill -9 {pid(프로세스번호)} $ kill -9 43501
진행하고 있는 사이드 프로젝트에서 서버 구축을 위해 네이버 클라우드 플랫폼으로 무료 크레딧을 제공해줘서 서버 올리고 사용하고 있었다. 함께한 팀원이 이미 프로젝트에 대한 서버는 구축해주셔서 잘 사용하고 있었는데 어느날 갑작스러운 서버 장애를 겪게 되었다. 결론적으로 클라우드 서버에서 문제가 발생한 건 아니었지만 직접 구축한게 아니라 장애 처리하면서 서버에 대해 모르는 개념이 너무 많아 고충을 겪었다. 그래서 스스로 정리하며 프리티어로 웹 서버를 간단하게 구축하는 방법을 진행해보기로 한다. 네이버 클라우드 접속 후 회원가입 및 결제 정보 입력 NAVER CLOUD PLATFORM cloud computing services for corporations, IaaS, PaaS, SaaS, with Globa..
1 : N 관계에서 Fecth Join 사용시 발생하는 MultipleBagFetchException 해결법 1. ToOne(OneToOne, ManyToOne) 관계를 모두 Fetch Join 한다. 2. 1:N 관계의 Collection Entity는 Lazy Loading(지연 로딩)으로 조회한다. 3. Lazy Loading(지연 로딩) 성능 최적화를 위해 hibernate.default_batch_fetch_size를 적용한다. * QueryDsl 에서도 1:N 관계에서 단 한번의 fetch join 사용해야 하는 건 똑같다. ToOne(OneToOne, ManyToOne) 관계를 모두 Fetch Join 한다. 연관관계에서 자식 테이블인 ToOne 관계에서는 row 수를 증가시키지 않는다. 따..
회원 정보 조회하는 경우, 탈퇴처리된 상태의 회원은 조회가 안되도록 예외처리를 해야하는 상황이 있었다. 당시 controller-service의 역할에 대한 개념이 불명확해서 어디서 예외처리를 해줘야하는지 고민을 한참 했었다.(ㅎㅎ..하하) 그러다가 나와 비슷한 고민을 하는 분의 질문에서 프로그래밍 로직을 이렇게 한다는 답변을 보게 되었다. " view -> validation logic -> business logic -> dao " 보통의 view는 controller에서 처리하고, 여기서 예외처리는 validation logic에 해당하므로 service에 넣어주는게 맞다고 생각했다. 그리고 아주 단적으로 controller가 없더라도 API 로직은 정상적으로 돌아가야한다는 김영한님의 답을 어디선가..
N+1 문제 : 조회된 부모의 수만큼 자식 테이블의 쿼리가 추가 발생하는 현상 연관 관계가 설정된 엔티티를 조회할 경우에 발생하는 문제 쿼리를 날렸을 때 의도하지 않은 쿼리가 N번 추가로 실행되는 것을 N+1이라고 한다. 해결방법 : FetchJoin * Join, Fetch Join 차이점 Join - 연관 Entity에 Join을 걸어도, 실제 쿼리에서 SELECT 하는 Entity는 오직 JPQL에서 조회하는 주체가 되는 Entity만 조회하여 영속화 - 조회의 주체가 되는 Entity만 SELECT 해서 영속화하기 때문에 데이터는 필요하지 않지만, 연관 Entity가 검색조건에는 필요한 경우에 주로 사용됨 Fetch Join - 데이터를 가져올 때 조회의 주체가 되는 Entity 이외에, Fetc..
스프링부트는 스프링 프레임워크를 이용해서 더 쉽고, 빠르게 개발할 수 있는 도구입니다. 본격 시작하기 앞서 스프링부트를 개발 환경을 세팅해야합니다. 💡해야 할 일 1. InteliJ를 이용해서 스프링부트 설정하기 2. MariaDB 설치 먼저 InteliJ를 설치하고 프로젝트 세팅해보도록 하겠습니다! 1. InteliJ를 이용해서 스프링부트 설정하기 1. InteliJ 다운로드 하기 https://www.jetbrains.com/ko-kr/ JetBrains: 소프트웨어 개발자 및 팀을 위한 필수 도구 www.jetbrains.com InteliJ는 Ultimate버전, Community버전으로 나뉘어져 있습니다. 둘의 차이점은 단연 무료버전 유료버전이지만 더 자세히 살펴보자면 이러합니다. Ultimat..
- Total
- Today
- Yesterday
- 오블완
- spring boot 3
- 자바 어플리케이션 실행 과정
- array
- Kotlin
- 스프링 스케줄링
- 배열
- MultipleBagFetchException
- FetchJoin
- dto 클래스 생성자
- Linux
- Git
- bucket4j
- n+1
- Cannot construct instance of
- redisson 분산락
- ChatGPT
- MongoDB
- QueryDSL
- port
- Spring Security
- 티스토리챌린지
- Java
- 추상클래스
- 스프링오류
- jvm warm-up 전략
- addFilterBefore
- checkout
- junit5
- JPA
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |