자바트러블슈팅

11 posts

자바트러블슈팅-리눅스 진단하기(2)

왜 CPU를 모니터링 해야 하나 CPU가 병목이 가장 많이 발생하는 부분이다. 일반적인 자바 기반의 시스템의 CPU 사용량 User:System 비율은 10:1 8:1 정도 이다. 상세한 분석이 필요할때 mpstat를 사용하면 많은 도움이 된다. 전반적인 상황 모니터링 하기 vmstat를 사용하면 전반적으로 모니터링 할수

2 min read

자바트러블슈팅-리눅스 진단하기(1)

60,000 밀리초에 리눅스 시스템 분석하기 uptime uptime은 원래 서버가 시작한지 얼마나 되는지 확인하기 위한 명령이다. 근데 가장먼저 이 명령어를 실행하는 이유는 load average 때문이다. load average는 앞에서 부터 1분 5분 15분간의 평균값이다. 이값은 0에 가까우면 좋고, 클수록 좋지

4 min read

자바트러블슈팅-메모리 진단하기(4)

메모리 진단하기 메모리 문제 시스템이 느리다고 항상 메모리 단면을 사용하는 것은 아니다. 먼저 스레드가 원인일지 모르니 스레드로 원인 분석을 먼저해보는것이 좋다. 메모리 문제로 인하여 응답시간이 느려질때는 원인 메모르 크기를 잡지 않거나 너무 작게 잡아 GC가 너무 자주 발생하는 경우 임시 메모리를 많이 사용하여 GC가

3 min read

자바트러블슈팅-메모리 진단하기(2)

메모리 진단하기 메모리 단면은 언제 자르나? 힙 덤프는 메모리가 부족해지는 현상이 지속해서 발생할 때와 OutOfMemoryError가 발생했을 때 생성해야 한다. 이러한 메모리 문제가 아닌 다른 상황에서는 메모리 단면을 잘라 놓을 필요가 없다는 말이다. 메모리가 부족해지는 현상을 확인하는 방법 jstat로 확인 WAS의

7 min read

자바트러블슈팅-메모리 진단하기(1)

메모리 진단하기 메모리 때문에 발생할 수 있는 문제 OutOfMemoryError가 발생하는 경우 가비지 컬렉터가 새로운 객체를 생성할 공간을 더 이상 만들어주지 못하고, 더이상 힙 영역의 메모리가 증가될 수 없을때 네이티브 라이브러리 코드에서 스왑 영역이 부족하여 더 이상 네이티브할당을 할수 없을때 두번째 경우는 순수

5 min read

자바트러블슈팅-스레드 진단하기(4)

스레드 진단하기 잘라 놓은 스레드 단면 분석하기 은 스레드 분석용으로 매우 강력한 기능을 제공하면서 전혀 복잡하지 않다. threadlogic의 특징은 여러 스레드 단면을 동시에 분석 할 수 있다. 잠김 현상이 발생한 스레드를 매우 쉽게 추적할수 있다. 오랫동안 수행되는 스레드가 있을 때 매우 쉽게 찾을수 있다. thre

2 min read

자바트러블슈팅-스레드 진단하기(3)

스레드 진단하기 스레드 단면 잘라 놓기 스레드 단면을 분석하면 매우 빨리 원인을 찾을수 있다. 모든 시스템이 응답이 없을 때(시스템에 행이 걸렸을 경우) 사용자 수가 많지도 않은데, 시스템 cpu 사용량이 떨어지지 않을때 특정 애플리케이션을 수행했는데 전혀 응답이 없을때 기타 여러 가지 상황에서 시스템이 내 마음대로 작동

11 min read

자바트러블슈팅-스레드 진단하기(2)

스레드 진단하기 록 경합을 피하는 10+1가지 방법 코드가 아닌 데이터를 보호 하라. 가장 간단하고 빠른 방법은 전체 함수 호출에 synchronized를 거는 것이다. 하지만 데이터 만 synchronized 블록으로 감싼다면 중요한 코드를 잠그는데 드는 시간을 줄일수 있을 것이다. 록 사용 부분에서는 비싼 계산을 하지

2 min read

자바트러블슈팅-스레드 진단하기(1)

스레드 진단하기 스레드에서 발생하는 문제 중 가장 대표적인것 레이스 컨디션(race condition) 멀티 스레드 환경에서 하나이상의 공유데이터를 처리 할때 아무런 록처리를 하지 않을 경우 동시에 여러 스레드에서 데이터를 수정할수있다. 이런 상황에서 데이터가 꼬여서 무한대기하거나 무한 루프에 빠질수 있는데 이런 상황을

2 min read