19
4 부 . 부부부부 부부부부 1, 2 부 < 부부부 부부부 부부부 부부 부부부 > 부부부 부부부 - 부부부

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

Embed Size (px)

Citation preview

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

4 부 . 프로세스 이해하기1, 2 장

< 실무로 배우는 시스템 성능 최적화 >아꿈사 스터디 - 정민철

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

텍스트

프로세스 이해▸ 이유 : CPU 사용률을 높이는 코드를 찾아 개선하기 위해▸ 프로세스 이해에 필요한 기본 지식

▸ 수행중인 코드 : 어떤 함수를 수행하고 있는가 ?▸ 통신 / 파일 상태 : 통신으로 연계된 서버는 어디고 , 어떤 파일을 열고 있는가 ?▸ 통신 / 파일 간 동작 : 연계 서버 또는 파일에 입출력이 얼마나 자주 그리고 오래 이뤄지는가 ?

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

텍스트

프로세스 모니터링 방법구분 유닉스 리눅스 윈도우

스택 jstack, pstack

jstack, pstack

jstack, procexp,

processhacker

통신 / 파일 상태 pfiles, lsof /proc/[pid]/

fd, lsofprocexp,

processhacker, topview

통신 / 파일 동작 truss, tusc strace procmon

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

텍스트

스택에 대한 이해▸ 프로세스가 어떤 경로를 통해 어떤 함수를 수행하고 있는지에 대한 정보를 저장하는 자료구조

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

텍스트

JSTACK 을 이용한 JAVA STACK DUMP

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

텍스트

스택 정보를 이용한 성능 분석▸ 스택은 성능저하 요인을 유추할 수 있는 정보 제공▸ 일정 시간 간격으로 수십에서 수백번 스택 정보를 수집해 분석하면 성능 분석을 위한 기초 자료가 됨

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

텍스트

스택 대기 분석▸ 대기 : 특정 이유로 코드 수행이 멈춰있는 상태로 성능 저하를 발생시키는 원인 중 하나

▸ Queue wait: thread pool 등 자원 부족▸ Lock: 공유 자원 사용 대기

▸ 정상적으로 작업이 진행되지 못하고 대기하는 비율이 얼마나 높은가 ?

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

텍스트

LOCK 대기▸ jstack 에서 lock 식별 (Oracle JVM)

▸ locked: lock 을 잡은 상태- locked <0x00000007407830e8>

▸ waiting to lock: 다른 쓰레드가 잡은 락이 풀리기를 기다리는 상태- waiting to lock <0x00000007407830e8>

▸ 주소가 동일하면 동일한 lock 에 대해 대기▸ 개선 방법 : 대기시간을 줄임 , Lock 구간을 최소화 , Lock 을 세분화해서 경합을 완화

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

객체 LOCK

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

CLASS LOCK

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

SYNCHRONIZED LOCK

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

텍스트

SOCKET 읽기 대기▸ Socket 에서 다른 서버나 프로세스에서 처리가 끝나기를 기다리는 상태▸ 문제 상황

▸ 다른 서버나 프로세스 처리 시간이 오래 걸리는 경우=> 해당 프로세스나 서버 처리시간 개선

▸ 인터페이스 호출이 빈번하게 일어나는 경우=> 반복수행 제거 , SQL 통합 , 집합처리

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

텍스트

SLEEP 대기▸ 프로세스가 sleep 상태에서 대기하는 것

▸ 비동기 입출력 대기▸ Nonblocking 입출력에서 수신 대기▸ 수행조건 만족 대기

▸ 자원 추가 할당 , 대기 파라메터 조정 등으로 해결

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

텍스트

교착상태▸ 서로다른 두개 이상의 프로세스가 상대 프로세스가 점유하고 있는 자원을 기다리는 무한 대기상태▸ java 에서는 stackdump 에서 자동으로 인식 ( 못하는 경우도 있음 )

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

JAVA 교착상태 예제

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

텍스트

STACK 성능 분석▸ 각 Stack 수행이 차지하는 비중 분석

▸ A 서비스 응답 5 초 , 그 중 B 쿼리 수행 시간이 4 초=> B 쿼리를 최적화 시켜야 함

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

텍스트

STACK 분석 중점 항목 ▸ Lock 분석

▸ Lock 으로 대기하는 스레드가 존재하는가 ?▸ 전체 스레드 가운데 Lock 을 대기중인 비율이 얼마나 되는가 ?

▸ 최상위 Stack 분석▸ 내부 수행 중인 것과 응답대기 ( 소켓 읽기 상태 ) 중인 비율은 어떤가 ?▸ 비정상적으로 실행 비율이 높은 내부 수행 코드 유형이 있는가 ?

( 문자열처리 , 로깅 , 계산 , 파일처리 등 )

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

텍스트

STACK 분석 중점 항목 ▸ SQL 유형 분석

▸ SQL 중 어떤 것들의 비중이 높은가 ?▸ 솔루션 유형 분석

▸ 프레임워크 , 룰 엔진 , APM 도구 , 암호화 등 시스템에 적용된 솔루션 단위의 수행 비중은 어떤가 ?▸ 업무 유형 분석

▸ 서비스 요청 단위로 업무의 비중은 어떤것이 높은가 ?

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

텍스트

프로세스 스택 분석 도구▸ 책에는 저자가 만든 도구를 소개하고 있는데 … .▸ jvisualvm 을 사용하면 됩니다… .▸ 스택 수집 , 분석 , 프로파일링 다 됩니다… .