Backend
-
스프링부트 + Oracle 메이븐 프로젝트 만들기Backend/Java and Trouble Shooting 2020. 3. 17. 22:47
+ Type : Maven - 프로젝트 빌드 및 의존성 관리에 Maven 을 사용합니다. Gradle을 선택할 수도 있습니다. + Packaging: Jar - 패키징을 Jar로 하도록 설정합니다. War로도 설정할 수 있습니다. + Java Version: 8 - 자바는 1.8을 사용합니다. + Language: Javav - 언어는 Java를 사용합니다. Kotlin을 선택할 수도 있습니다. + Group com.tistory.offbyone - 자신에게 맞는 값을 넣으면 됩니다. 보통 도메인을 사용합니다. + Artifact: spring-boot-test - Mave 아티팩트명인데, 이것이 프로젝트명이 됩니다. + Version: 0.0.1-SNAPSHOT - 프로젝트의 버전입니다. + Descr..
-
Java의 메모리 영역Backend/Java and Trouble Shooting 2020. 2. 23. 17:20
Java의 메모리 영역(정확히 말하면, 실행 시 데이터가 저장되는 영역(Runtime data area))은 다음과 같다. pc (program counter) 레지스터 : 스레드별 보유 JVM 스택 : 스레드별 보유 힙(Heap) : 대부분의 데이터가 저장되는 일반적인 저장소 메서드 영역(Method Area) 런타임 상수 풀(Runtime Constant Pool) : 메서드 영역에 할당되어 있음 네이티브 메서드 스택(Native Method Stack) 1. pc 레지스터 각 스레드의 JVM 인스트럭션의 주소가 저장되어 있다. 2. 스택 각 스레드마다 하나씩 존재하며, 스레드가 시작될 때 할당된다. 메소드를 호출할 때마다 프레임(Frame)을 추가(push)하고 메소드가 종료되면 해당 프레임을 제거..
-
스레드 덤프로 확인할 수 있는 문제Backend/Java and Trouble Shooting 2020. 2. 23. 14:27
스레드 덤프*로 어떤 문제를 확인할 수 있을까? (*스레드 단면) 1 . 시스템 다운 시스템 다운의 경우 스레드 덤프가 기본적으로 생성되지 않아 좋은 단서가 될 수 없다. JVM 옵션에 OnError 이벤트에 대해 스레드 덤프가 남도록 하여 실마리를 잡을 수도 있다. -XX:OnError="kill -3 %p" -XX:ErrorFile=파일경로 2 . 시스템 느려짐 가장 많이 발생하는 현상으로 시스템이 느려진다면 다음과 같은 순서로 확인하는 것이 좋다. 1. CPU, 메모리와 같은 리소스 사용량 점검 2. 외부와 연동하는 리소스 사용량 점검 3. WAS 메모리 및 스레드 설정 및 사용량 점검 4. Web 서버 설정 점검 5. OS 설정 점검 6. 스레드 상태 점검 7. 메모리 상태 점검 위 절차를 도식화..
-
스레드에서 발생하는 문제들Backend/Java and Trouble Shooting 2020. 2. 22. 21:43
스레드에서 다음과 같은 문제가 발생할 수 있다. 레이스 컨디션 데드록 스타베이션 라이브 록 다른 형태의 예측 불가 오류 1. 레이스 컨디션 멀티 스레드 환경에서 하나 이상의 '공유 데이터'를 처리할 때 아무런 록 처리를 하지 않을 경우, 동시에 여러 스레드에서 데이터를 수정해 버릴 수도 있다. 경우에 따라 동시에 스레드가 처리하러 들어왔을 때 데이터가 꼬여서 무한 대기하거나 무한 루프에 빠지는 경우를 레이스 컨디션 이라 한다. 2. 데드록 데이터를 안전하게 처리하기 위해서 거는 록에서 문제가 발생할 수도 있다. 두 개 이상의 스레드에서 이 록을 서로 풀리기만을 기다리는 상황을 데드록이라 한다. 스레드 1이 DataA에 록을 건 상태에서 변경 처리 후, DataB에 접근하려고 한다. 스레드 2이 DataB..