Cassandra education materialYoungki KimThis material is made to educate operators, who deal with cassandra in production environment and based on cassandra version 1.1.X
이 자료는 Cassandra를 상용 환경에서 운용하기 위한, 운용자를 위한 교육 자료로 Cassandra 1.1.X를 기준으로 설명한 자료입니다.
Cassandra education materialYoungki KimThis material is made to educate operators, who deal with cassandra in production environment and based on cassandra version 1.1.X
이 자료는 Cassandra를 상용 환경에서 운용하기 위한, 운용자를 위한 교육 자료로 Cassandra 1.1.X를 기준으로 설명한 자료입니다.
Refactoring 메소드 호출의 단순화HyeonSeok ChoiThe document discusses refactoring methods to simplify method calls. It describes techniques such as renaming methods for clarity, adjusting parameter numbers, hiding unnecessary information, replacing constructors with factory methods, and improving exception handling in methods. Specific refactoring techniques covered include renaming methods, adding/removing parameters, separating queries from modifiers, and parameterizing methods. The overall goal of these refactoring methods is to make code more readable, reusable and maintainable.
SICP_2.5 일반화된 연산시스템HyeonSeok ChoiThe document describes a generic arithmetic system that allows uniform access to number packages with different data representations. It defines generic arithmetic procedures like add, sub, mul, and div that apply the corresponding operation for the specific number package. A scheme-number package for integer arithmetic is also installed. Generic tags are attached to values to identify their representation, and a mapping table is used to dispatch operations to appropriate handler procedures based on tags.
Code 11 논리 게이트HyeonSeok ChoiThe document discusses using logic gates and switches to simplify boolean expressions and create circuit diagrams to represent them. It explains how a circuit with switches can represent boolean logic to make certain input values result in true outputs. Specifically, it talks about using relays which can control switches with electric signals, and how relays allow building circuits to perform simple logic operations and potentially make an adding machine by combining relays, switches, batteries, and lightbulbs.
MiningTheSocialWeb.Ch2.MicroformatHyeonSeok ChoiThe document discusses microformats, which are a way to embed structured data into web pages. It provides examples of how microformats like XFN, geo, hRecipe and hReview can be used. A breadth-first crawl is proposed as a way to extract relationship data from XFN markup. Geo coordinates are also discussed as a common thread that can be used across different types of data and applications.
Domain driven design ch1HyeonSeok ChoiThe document describes the process of developing a domain model for PCB analysis software through collaboration between developers and domain experts. The experts initially struggled to describe their needs, but discussions helped identify key concepts like nets, pins, and signal propagation. Diagrams were used to illustrate object interactions. An early prototype using the model classes demonstrated the core functionality and helped refine the model.
Mining the social web 6HyeonSeok ChoiThis chapter discusses clustering connections on LinkedIn based on job title to find similarities. It covers standardizing job titles, common similarity metrics like edit distance and Jaccard distance, and clustering algorithms like greedy clustering, hierarchical clustering and k-means clustering. It also discusses fetching extended profile information using OAuth authorization to access private LinkedIn data without credentials. The goal is to answer questions about connections by clustering them based on attributes like job title, company or location.
SQL-on-Hadoop with Apache Tajo, and application case of SK TelecomGruterDeView 2013 Presentation - Jae-hwa Jung, Gruter
SQL-on-Hadoop with Apache Tajo,
and application case of SK Telecom
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARKApache Kafak의 성능이 특정환경(데이터 유실일 발생하지 않고, 데이터 전송순서를 반드시 보장)에서 어느정도 제공하는지 확인하기 위한 테스트 결과 공유
데이터 전송순서를 보장하기 위해서는 Apache Kafka cluster로 partition을 분산할 수 없게되므로, 성능향상을 위한 장점을 사용하지 못하게 된다.
이번 테스트에서는 Apache Kafka의 단위 성능, 즉 partition 1개에 대한 성능만을 측정하게 된다.
향후, partition을 증가할 경우 본 테스트의 1개 partition 단위 성능을 기준으로 예측이 가능할 것 같다.
2. 텍스트
프로세스 이해
▸이유: CPU 사용률을 높이는 코드를 찾아 개선하기 위해
▸프로세스 이해에 필요한 기본 지식
▸수행중인 코드: 어떤 함수를 수행하고 있는가?
▸통신/파일 상태: 통신으로 연계된 서버는 어디고, 어떤 파일
을 열고 있는가?
▸통신/파일 간 동작: 연계 서버 또는 파일에 입출력이 얼마나
자주 그리고 오래 이뤄지는가?
3. 텍스트
프로세스 모니터링 방법
구분 유닉스 리눅스 윈도우
스택 jstack, pstack jstack, pstack
jstack, procexp,
processhacker
통신/파일 상태 pfiles, lsof
/proc/[pid]/fd,
lsof
procexp,
processhacker
, topview
통신/파일 동작 truss, tusc strace procmon
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 을 사용하면 됩니다….
▸스택 수집, 분석, 프로파일링 다 됩니다….