ݺߣ

ݺߣShare a Scribd company logo
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 을 사용하면 됩니다….
▸스택 수집, 분석, 프로파일링 다 됩니다….

More Related Content

What's hot (20)

카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox
떠리 이
Mongodb 관리
Mongodb 관리Mongodb 관리
Mongodb 관리
흥배 최
Mongo db 복제(Replication)
Mongo db 복제(Replication)Mongo db 복제(Replication)
Mongo db 복제(Replication)
Hyosung Jeon
HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 7장 캐시HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 7장 캐시
박 민규
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012
Daum DNA
[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례
NAVER D2
Cassandra education material
Cassandra education materialCassandra education material
Cassandra education material
Youngki Kim
FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기
Jongwon Kim
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
beom kyun choi
Performance test
Performance testPerformance test
Performance test
Jaehong Park
HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드- 19장 배포시스템HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드- 19장 배포시스템
박 민규
Mongo db 2.x to 3.x
Mongo db 2.x to 3.xMongo db 2.x to 3.x
Mongo db 2.x to 3.x
InBum Kim
게이트단의 보안
게이트단의 보안게이트단의 보안
게이트단의 보안
Choonghyun Yang
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.
Kris Jeong
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
흥배 최
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
iFunFactory Inc.
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션
흥배 최
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
ByungJoon Lee
카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox
떠리 이
Mongo db 복제(Replication)
Mongo db 복제(Replication)Mongo db 복제(Replication)
Mongo db 복제(Replication)
Hyosung Jeon
HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 7장 캐시HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 7장 캐시
박 민규
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012
Daum DNA
[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례
NAVER D2
Cassandra education material
Cassandra education materialCassandra education material
Cassandra education material
Youngki Kim
FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기
Jongwon Kim
HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드- 19장 배포시스템HTTP 완벽가이드- 19장 배포시스템
HTTP 완벽가이드- 19장 배포시스템
박 민규
Mongo db 2.x to 3.x
Mongo db 2.x to 3.xMongo db 2.x to 3.x
Mongo db 2.x to 3.x
InBum Kim
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.
Kris Jeong
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
흥배 최
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
iFunFactory Inc.
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션
흥배 최
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
ByungJoon Lee

Viewers also liked (20)

실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1
HyeonSeok Choi
ᅥᅥᅵᆫᄑƳᄅơᄅƳᆯᅵᆼᄒơƳᆫƵᄉƮᆯ34
ᅥᅥᅵᆫᄑƳᄅơᄅƳᆯᅵᆼᄒơƳᆫƵᄉƮᆯ34ᅥᅥᅵᆫᄑƳᄅơᄅƳᆯᅵᆼᄒơƳᆫƵᄉƮᆯ34
ᅥᅥᅵᆫᄑƳᄅơᄅƳᆯᅵᆼᄒơƳᆫƵᄉƮᆯ34
HyeonSeok Choi
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
Minchul Jung
DDD Start! - 2장 아키텍처 개요
DDD Start! - 2장 아키텍처 개요DDD Start! - 2장 아키텍처 개요
DDD Start! - 2장 아키텍처 개요
Minchul Jung
[Http완벽가이드] 9장 웹로봇
[Http완벽가이드] 9장 웹로봇[Http완벽가이드] 9장 웹로봇
[Http완벽가이드] 9장 웹로봇
Minchul Jung
Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화
HyeonSeok Choi
서버인프라를짶탱하기술323
서버인프라를짶탱하기술323서버인프라를짶탱하기술323
서버인프라를짶탱하기술323
HyeonSeok Choi
CODE Ch.21 버스에 올라 탑시다
CODE Ch.21 버스에 올라 탑시다CODE Ch.21 버스에 올라 탑시다
CODE Ch.21 버스에 올라 탑시다
HyeonSeok Choi
SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템
HyeonSeok Choi
자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9
HyeonSeok Choi
Code 11 논리 게이트
Code 11 논리 게이트Code 11 논리 게이트
Code 11 논리 게이트
HyeonSeok Choi
MiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.MicroformatMiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.Microformat
HyeonSeok Choi
Domain driven design ch1
Domain driven design ch1Domain driven design ch1
Domain driven design ch1
HyeonSeok Choi
프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14
HyeonSeok Choi
Mining the social web 6
Mining the social web 6Mining the social web 6
Mining the social web 6
HyeonSeok Choi
Apprenticeship patterns 7
Apprenticeship patterns 7Apprenticeship patterns 7
Apprenticeship patterns 7
Minchul Jung
실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1
HyeonSeok Choi
ᅥᅥᅵᆫᄑƳᄅơᄅƳᆯᅵᆼᄒơƳᆫƵᄉƮᆯ34
ᅥᅥᅵᆫᄑƳᄅơᄅƳᆯᅵᆼᄒơƳᆫƵᄉƮᆯ34ᅥᅥᅵᆫᄑƳᄅơᄅƳᆯᅵᆼᄒơƳᆫƵᄉƮᆯ34
ᅥᅥᅵᆫᄑƳᄅơᄅƳᆯᅵᆼᄒơƳᆫƵᄉƮᆯ34
HyeonSeok Choi
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
Minchul Jung
DDD Start! - 2장 아키텍처 개요
DDD Start! - 2장 아키텍처 개요DDD Start! - 2장 아키텍처 개요
DDD Start! - 2장 아키텍처 개요
Minchul Jung
[Http완벽가이드] 9장 웹로봇
[Http완벽가이드] 9장 웹로봇[Http완벽가이드] 9장 웹로봇
[Http완벽가이드] 9장 웹로봇
Minchul Jung
Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화
HyeonSeok Choi
서버인프라를짶탱하기술323
서버인프라를짶탱하기술323서버인프라를짶탱하기술323
서버인프라를짶탱하기술323
HyeonSeok Choi
CODE Ch.21 버스에 올라 탑시다
CODE Ch.21 버스에 올라 탑시다CODE Ch.21 버스에 올라 탑시다
CODE Ch.21 버스에 올라 탑시다
HyeonSeok Choi
SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템
HyeonSeok Choi
자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9
HyeonSeok Choi
MiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.MicroformatMiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.Microformat
HyeonSeok Choi
프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14
HyeonSeok Choi
Apprenticeship patterns 7
Apprenticeship patterns 7Apprenticeship patterns 7
Apprenticeship patterns 7
Minchul Jung

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

Linux programming study
Linux programming studyLinux programming study
Linux programming study
Yunseok Lee
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
Sung-jae Park
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminar
Cho Daniel
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
PgDay.Seoul
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
Ho Jeong Im
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
JangHyuk You
Kubernetes
Kubernetes Kubernetes
Kubernetes
Kyung Koo Yoon
둡괶리
둡괶리둡괶리
둡괶리
Choonghyun Yang
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
NAVER D2
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
YoungSu Son
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurations
John Kim
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
ymtech
pgday-2023
pgday-2023pgday-2023
pgday-2023
ranaadilstories
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
KwangSeob Jeong
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
NAVER D2
High performance networking in chrome
High performance networking in chromeHigh performance networking in chrome
High performance networking in chrome
Ji Hun Kim
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo,  and application case of SK TelecomSQL-on-Hadoop with Apache Tajo,  and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
Gruter
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
SANG WON PARK
Hadoop Overview 2
Hadoop Overview 2Hadoop Overview 2
Hadoop Overview 2
Kay Kim
하이버네이트의 영속성 컨텍스트와 패치 전략
하이버네이트의 영속성 컨텍스트와 패치 전략하이버네이트의 영속성 컨텍스트와 패치 전략
하이버네이트의 영속성 컨텍스트와 패치 전략
Sung Jae Park
Linux programming study
Linux programming studyLinux programming study
Linux programming study
Yunseok Lee
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
Sung-jae Park
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
PgDay.Seoul
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
Ho Jeong Im
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
JangHyuk You
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
NAVER D2
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
YoungSu Son
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurations
John Kim
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
ymtech
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
KwangSeob Jeong
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
NAVER D2
High performance networking in chrome
High performance networking in chromeHigh performance networking in chrome
High performance networking in chrome
Ji Hun Kim
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo,  and application case of SK TelecomSQL-on-Hadoop with Apache Tajo,  and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
Gruter
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
SANG WON PARK
Hadoop Overview 2
Hadoop Overview 2Hadoop Overview 2
Hadoop Overview 2
Kay Kim
하이버네이트의 영속성 컨텍스트와 패치 전략
하이버네이트의 영속성 컨텍스트와 패치 전략하이버네이트의 영속성 컨텍스트와 패치 전략
하이버네이트의 영속성 컨텍스트와 패치 전략
Sung Jae Park

실무로 배우는 시스템 성능 최적화 - 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. 텍스트 스택에 대한 이해 ▸프로세스가 어떤 경로를 통해 어떤 함수를 수행하고 있는지에 대한 정보를 저장하는 자료구조
  • 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을 세분 화해서 경합을 완화
  • 12. 텍스트 SOCKET 읽기 대기 ▸Socket에서 다른 서버나 프로세스에서 처리가 끝나기를 기다 리는 상태 ▸문제 상황 ▸다른 서버나 프로세스 처리 시간이 오래 걸리는 경우 => 해당 프로세스나 서버 처리시간 개선 ▸인터페이스 호출이 빈번하게 일어나는 경우 => 반복수행 제거, SQL 통합, 집합처리
  • 13. 텍스트 SLEEP 대기 ▸프로세스가 sleep 상태에서 대기하는 것 ▸비동기 입출력 대기 ▸Nonblocking 입출력에서 수신 대기 ▸수행조건 만족 대기 ▸자원 추가 할당, 대기 파라메터 조정 등으로 해결
  • 14. 텍스트 교착상태 ▸서로다른 두개 이상의 프로세스가 상대 프로세스가 점유하고 있는 자원을 기다리는 무한 대기상태 ▸java에서는 stackdump에서 자동으로 인식(못하는 경우도 있 음)
  • 16. 텍스트 STACK 성능 분석 ▸각 Stack 수행이 차지하는 비중 분석 ▸A서비스 응답 5초, 그 중 B쿼리 수행 시간이 4초 => B 쿼리를 최적화 시켜야 함
  • 17. 텍스트 STACK 분석 중점 항목 ▸Lock 분석 ▸Lock으로 대기하는 스레드가 존재하는가? ▸전체 스레드 가운데 Lock을 대기중인 비율이 얼마나 되는 가? ▸최상위 Stack 분석 ▸내부 수행 중인 것과 응답대기(소켓 읽기 상태) 중인 비율은 어떤가? ▸비정상적으로 실행 비율이 높은 내부 수행 코드 유형이 있 는가? (문자열처리, 로깅, 계산, 파일처리 등)
  • 18. 텍스트 STACK 분석 중점 항목 ▸SQL 유형 분석 ▸SQL 중 어떤 것들의 비중이 높은가? ▸솔루션 유형 분석 ▸프레임워크, 룰 엔진, APM 도구, 암호화 등 시스템에 적용 된 솔루션 단위의 수행 비중은 어떤가? ▸업무 유형 분석 ▸서비스 요청 단위로 업무의 비중은 어떤것이 높은가?
  • 19. 텍스트 프로세스 스택 분석 도구 ▸책에는 저자가 만든 도구를 소개하고 있는데 …. ▸jvisualvm 을 사용하면 됩니다…. ▸스택 수집, 분석, 프로파일링 다 됩니다….