4부. 프로세스 이해하기
1, 2 장
<실무로 배우는 시스템 성능 최적화>
아꿈사 스터디 - 정민철
텍스트
프로세스 이해
▸이유: CPU 사용률을 높이는 코드를 찾아 개선하기 위해
▸프로세스 이해에 필요한 기본 지식
▸수행중인 코드: 어떤 함수를 수행하고 있는가?
▸통신/파일 상태: 통신으로 연계된 서버는 어디고, 어떤 파일
을 열고 있는가?
▸통신/파일 간 동작: 연계 서버 또는 파일에 입출력이 얼마나
자주 그리고 오래 이뤄지는가?
텍스트
프로세스 모니터링 방법
구분 유닉스 리눅스 윈도우
스택 jstack, pstack jstack, pstack
jstack, procexp,
processhacker
통신/파일 상태 pfiles, lsof
/proc/[pid]/fd,
lsof
procexp,
processhacker
, topview
통신/파일 동작 truss, tusc strace procmon
텍스트
스택에 대한 이해
▸프로세스가 어떤 경로를 통해 어떤 함수를 수행하고 있는지에
대한 정보를 저장하는 자료구조
텍스트
JSTACK을 이용한 JAVA STACK DUMP
텍스트
스택 정보를 이용한 성능 분석
▸스택은 성능저하 요인을 유추할 수 있는 정보 제공
▸일정 시간 간격으로 수십에서 수백번 스택 정보를 수집해 분
석하면 성능 분석을 위한 기초 자료가 됨
텍스트
스택 대기 분석
▸대기: 특정 이유로 코드 수행이 멈춰있는 상태로 성능 저하를
발생시키는 원인 중 하나
▸Queue wait: thread pool 등 자원 부족
▸Lock: 공유 자원 사용 대기
▸정상적으로 작업이 진행되지 못하고 대기하는 비율이 얼마나
높은가?
텍스트
LOCK 대기
▸jstack에서 lock 식별(Oracle JVM)
▸locked: lock을 잡은 상태
- locked <0x00000007407830e8>
▸waiting to lock: 다른 쓰레드가 잡은 락이 풀리기를 기다리는
상태
- waiting to lock <0x00000007407830e8>
▸주소가 동일하면 동일한 lock에 대해 대기
▸개선 방법: 대기시간을 줄임, Lock 구간을 최소화, Lock을 세분
화해서 경합을 완화
객체 LOCK
CLASS LOCK
SYNCHRONIZED LOCK
텍스트
SOCKET 읽기 대기
▸Socket에서 다른 서버나 프로세스에서 처리가 끝나기를 기다
리는 상태
▸문제 상황
▸다른 서버나 프로세스 처리 시간이 오래 걸리는 경우
=> 해당 프로세스나 서버 처리시간 개선
▸인터페이스 호출이 빈번하게 일어나는 경우
=> 반복수행 제거, SQL 통합, 집합처리
텍스트
SLEEP 대기
▸프로세스가 sleep 상태에서 대기하는 것
▸비동기 입출력 대기
▸Nonblocking 입출력에서 수신 대기
▸수행조건 만족 대기
▸자원 추가 할당, 대기 파라메터 조정 등으로 해결
텍스트
교착상태
▸서로다른 두개 이상의 프로세스가 상대 프로세스가 점유하고
있는 자원을 기다리는 무한 대기상태
▸java에서는 stackdump에서 자동으로 인식(못하는 경우도 있
음)
JAVA 교착상태 예제
텍스트
STACK 성능 분석
▸각 Stack 수행이 차지하는 비중 분석
▸A서비스 응답 5초, 그 중 B쿼리 수행 시간이 4초
=> B 쿼리를 최적화 시켜야 함
텍스트
STACK 분석 중점 항목
▸Lock 분석
▸Lock으로 대기하는 스레드가 존재하는가?
▸전체 스레드 가운데 Lock을 대기중인 비율이 얼마나 되는
가?
▸최상위 Stack 분석
▸내부 수행 중인 것과 응답대기(소켓 읽기 상태) 중인 비율은
어떤가?
▸비정상적으로 실행 비율이 높은 내부 수행 코드 유형이 있
는가?
(문자열처리, 로깅, 계산, 파일처리 등)
텍스트
STACK 분석 중점 항목
▸SQL 유형 분석
▸SQL 중 어떤 것들의 비중이 높은가?
▸솔루션 유형 분석
▸프레임워크, 룰 엔진, APM 도구, 암호화 등 시스템에 적용
된 솔루션 단위의 수행 비중은 어떤가?
▸업무 유형 분석
▸서비스 요청 단위로 업무의 비중은 어떤것이 높은가?
텍스트
프로세스 스택 분석 도구
▸책에는 저자가 만든 도구를 소개하고 있는데 ….
▸jvisualvm 을 사용하면 됩니다….
▸스택 수집, 분석, 프로파일링 다 됩니다….

실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기

  • 1.
    4부. 프로세스 이해하기 1,2 장 <실무로 배우는 시스템 성능 최적화> 아꿈사 스터디 - 정민철
  • 2.
    텍스트 프로세스 이해 ▸이유: CPU사용률을 높이는 코드를 찾아 개선하기 위해 ▸프로세스 이해에 필요한 기본 지식 ▸수행중인 코드: 어떤 함수를 수행하고 있는가? ▸통신/파일 상태: 통신으로 연계된 서버는 어디고, 어떤 파일 을 열고 있는가? ▸통신/파일 간 동작: 연계 서버 또는 파일에 입출력이 얼마나 자주 그리고 오래 이뤄지는가?
  • 3.
    텍스트 프로세스 모니터링 방법 구분유닉스 리눅스 윈도우 스택 jstack, pstack jstack, pstack jstack, procexp, processhacker 통신/파일 상태 pfiles, lsof /proc/[pid]/fd, lsof procexp, processhacker , topview 통신/파일 동작 truss, tusc strace procmon
  • 4.
    텍스트 스택에 대한 이해 ▸프로세스가어떤 경로를 통해 어떤 함수를 수행하고 있는지에 대한 정보를 저장하는 자료구조
  • 5.
  • 6.
    텍스트 스택 정보를 이용한성능 분석 ▸스택은 성능저하 요인을 유추할 수 있는 정보 제공 ▸일정 시간 간격으로 수십에서 수백번 스택 정보를 수집해 분 석하면 성능 분석을 위한 기초 자료가 됨
  • 7.
    텍스트 스택 대기 분석 ▸대기:특정 이유로 코드 수행이 멈춰있는 상태로 성능 저하를 발생시키는 원인 중 하나 ▸Queue wait: thread pool 등 자원 부족 ▸Lock: 공유 자원 사용 대기 ▸정상적으로 작업이 진행되지 못하고 대기하는 비율이 얼마나 높은가?
  • 8.
    텍스트 LOCK 대기 ▸jstack에서 lock식별(Oracle JVM) ▸locked: lock을 잡은 상태 - locked <0x00000007407830e8> ▸waiting to lock: 다른 쓰레드가 잡은 락이 풀리기를 기다리는 상태 - waiting to lock <0x00000007407830e8> ▸주소가 동일하면 동일한 lock에 대해 대기 ▸개선 방법: 대기시간을 줄임, Lock 구간을 최소화, Lock을 세분 화해서 경합을 완화
  • 9.
  • 10.
  • 11.
  • 12.
    텍스트 SOCKET 읽기 대기 ▸Socket에서다른 서버나 프로세스에서 처리가 끝나기를 기다 리는 상태 ▸문제 상황 ▸다른 서버나 프로세스 처리 시간이 오래 걸리는 경우 => 해당 프로세스나 서버 처리시간 개선 ▸인터페이스 호출이 빈번하게 일어나는 경우 => 반복수행 제거, SQL 통합, 집합처리
  • 13.
    텍스트 SLEEP 대기 ▸프로세스가 sleep상태에서 대기하는 것 ▸비동기 입출력 대기 ▸Nonblocking 입출력에서 수신 대기 ▸수행조건 만족 대기 ▸자원 추가 할당, 대기 파라메터 조정 등으로 해결
  • 14.
    텍스트 교착상태 ▸서로다른 두개 이상의프로세스가 상대 프로세스가 점유하고 있는 자원을 기다리는 무한 대기상태 ▸java에서는 stackdump에서 자동으로 인식(못하는 경우도 있 음)
  • 15.
  • 16.
    텍스트 STACK 성능 분석 ▸각Stack 수행이 차지하는 비중 분석 ▸A서비스 응답 5초, 그 중 B쿼리 수행 시간이 4초 => B 쿼리를 최적화 시켜야 함
  • 17.
    텍스트 STACK 분석 중점항목 ▸Lock 분석 ▸Lock으로 대기하는 스레드가 존재하는가? ▸전체 스레드 가운데 Lock을 대기중인 비율이 얼마나 되는 가? ▸최상위 Stack 분석 ▸내부 수행 중인 것과 응답대기(소켓 읽기 상태) 중인 비율은 어떤가? ▸비정상적으로 실행 비율이 높은 내부 수행 코드 유형이 있 는가? (문자열처리, 로깅, 계산, 파일처리 등)
  • 18.
    텍스트 STACK 분석 중점항목 ▸SQL 유형 분석 ▸SQL 중 어떤 것들의 비중이 높은가? ▸솔루션 유형 분석 ▸프레임워크, 룰 엔진, APM 도구, 암호화 등 시스템에 적용 된 솔루션 단위의 수행 비중은 어떤가? ▸업무 유형 분석 ▸서비스 요청 단위로 업무의 비중은 어떤것이 높은가?
  • 19.
    텍스트 프로세스 스택 분석도구 ▸책에는 저자가 만든 도구를 소개하고 있는데 …. ▸jvisualvm 을 사용하면 됩니다…. ▸스택 수집, 분석, 프로파일링 다 됩니다….