SlideShare a Scribd company logo
1 of 19
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

카산드라를 설치해서 테스트 해보자 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 2012Daum 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 materialYoungki 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.xInBum 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
 
Mongodb 특징 분석
Mongodb 특징 분석Mongodb 특징 분석
Mongodb 특징 분석Daeyong Shin
 

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)
 
HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 7장 캐시HTTP 완벽가이드 7장 캐시
HTTP 완벽가이드 7장 캐시
 
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012
 
[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례
 
Cassandra education material
Cassandra education materialCassandra education material
Cassandra education material
 
FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기FIFA 온라인 3의 MongoDB 사용기
FIFA 온라인 3의 MongoDB 사용기
 
Gfs Kyu
Gfs KyuGfs Kyu
Gfs Kyu
 
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
 
Performance test
Performance testPerformance test
Performance test
 
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
 
게이트단의 보안
게이트단의 보안게이트단의 보안
게이트단의 보안
 
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션NET 최선단 기술에 의한 고성능 웹 애플리케이션
NET 최선단 기술에 의한 고성능 웹 애플리케이션
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
 
Mongodb 특징 분석
Mongodb 특징 분석Mongodb 특징 분석
Mongodb 특징 분석
 

Viewers also liked

실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1HyeonSeok Choi
 
Tools in android sdk
Tools in android sdkTools in android sdk
Tools in android sdkMinchul Jung
 
서버인프라를지탱하는기술3_4
서버인프라를지탱하는기술3_4서버인프라를지탱하는기술3_4
서버인프라를지탱하는기술3_4HyeonSeok 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
 
Domain driven design ch9
Domain driven design ch9Domain driven design ch9
Domain driven design ch9HyeonSeok Choi
 
Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화HyeonSeok Choi
 
서버인프라를지탱하는기술3_2_3
서버인프라를지탱하는기술3_2_3서버인프라를지탱하는기술3_2_3
서버인프라를지탱하는기술3_2_3HyeonSeok 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
자바 병렬 프로그래밍 ch9HyeonSeok Choi
 
Code 11 논리 게이트
Code 11 논리 게이트Code 11 논리 게이트
Code 11 논리 게이트HyeonSeok Choi
 
MiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.MicroformatMiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.MicroformatHyeonSeok Choi
 
Domain driven design ch1
Domain driven design ch1Domain driven design ch1
Domain driven design ch1HyeonSeok Choi
 
프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14HyeonSeok Choi
 
Mining the social web 6
Mining the social web 6Mining the social web 6
Mining the social web 6HyeonSeok Choi
 
Apprenticeship patterns 7
Apprenticeship patterns 7Apprenticeship patterns 7
Apprenticeship patterns 7Minchul Jung
 

Viewers also liked (20)

실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1
 
Tools in android sdk
Tools in android sdkTools in android sdk
Tools in android sdk
 
서버인프라를지탱하는기술3_4
서버인프라를지탱하는기술3_4서버인프라를지탱하는기술3_4
서버인프라를지탱하는기술3_4
 
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
일래스틱 서치 ch7. 일래스틱 서치 클러스터 세부사항
 
DDD Start! - 2장 아키텍처 개요
DDD Start! - 2장 아키텍처 개요DDD Start! - 2장 아키텍처 개요
DDD Start! - 2장 아키텍처 개요
 
[Http완벽가이드] 9장 웹로봇
[Http완벽가이드] 9장 웹로봇[Http완벽가이드] 9장 웹로봇
[Http완벽가이드] 9장 웹로봇
 
Domain driven design ch9
Domain driven design ch9Domain driven design ch9
Domain driven design ch9
 
Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화Refactoring 메소드 호출의 단순화
Refactoring 메소드 호출의 단순화
 
서버인프라를지탱하는기술3_2_3
서버인프라를지탱하는기술3_2_3서버인프라를지탱하는기술3_2_3
서버인프라를지탱하는기술3_2_3
 
CODE Ch.21 버스에 올라 탑시다
CODE Ch.21 버스에 올라 탑시다CODE Ch.21 버스에 올라 탑시다
CODE Ch.21 버스에 올라 탑시다
 
SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템
 
자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9
 
Code 11 논리 게이트
Code 11 논리 게이트Code 11 논리 게이트
Code 11 논리 게이트
 
MiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.MicroformatMiningTheSocialWeb.Ch2.Microformat
MiningTheSocialWeb.Ch2.Microformat
 
Domain driven design ch1
Domain driven design ch1Domain driven design ch1
Domain driven design ch1
 
프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14
 
Mining the social web 6
Mining the social web 6Mining the social web 6
Mining the social web 6
 
C++ api design 품질
C++ api design 품질C++ api design 품질
C++ api design 품질
 
Code1_2
Code1_2Code1_2
Code1_2
 
Apprenticeship patterns 7
Apprenticeship patterns 7Apprenticeship patterns 7
Apprenticeship patterns 7
 

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

Linux programming study
Linux programming studyLinux programming study
Linux programming studyYunseok Lee
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3Sung-jae Park
 
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminarCho 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에 대해 알아봅시다.pdfHo Jeong Im
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장JangHyuk You
 
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은jieun kim
 
[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 configurationsJohn 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
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은jieun kim
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arcNAVER D2
 
High performance networking in chrome
High performance networking in chromeHigh performance networking in chrome
High performance networking in chromeJi 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 TelecomGruter
 
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
 

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

Linux programming study
Linux programming studyLinux programming study
Linux programming study
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
 
Free rtos seminar
Free rtos seminarFree rtos seminar
Free rtos seminar
 
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
 
Kubernetes
Kubernetes Kubernetes
Kubernetes
 
하둡관리
하둡관리하둡관리
하둡관리
 
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 4 김지은
 
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
Nginx basic configurations
Nginx basic configurationsNginx basic configurations
Nginx basic configurations
 
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 디버그-김성중
 
pgday-2023
pgday-2023pgday-2023
pgday-2023
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
 
High performance networking in chrome
High performance networking in chromeHigh performance networking in chrome
High performance networking in chrome
 
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
 
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...
 

실무로 배우는 시스템 성능 최적화 - 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 을 사용하면 됩니다…. ▸스택 수집, 분석, 프로파일링 다 됩니다….