Thread Dump 생성 방법

  • Unix : kill -3 [PID]

  • window : Ctrl + Break

  • 공통 :  jstack [PID]

  • 반드시 생성시 3~5회 연속으로 생성하여 문제 상황에 대한 변화 과정을 확인


Thread Dump 정보

    • tid (Java-Level Thread ID )를 이용하여 정보 얻기

      • ThreadMXBean을 이용하여 ThreadInfo 정보 획득 가능
      • JMX 또는 REST API 등록으로 정보 획득을 가능하게 할 경우 문제 분석 용이
      • tid와 threadId가 다른 경우도 존재하기 때문에 name으로 찾는 것이 좋음
  •  - nid (Native Thread ID)를 이용하여 정보 얻기

      • Linux  : ps -mo , ps - Elf 이용

Thread 상태

 Thread Dump - BLOCKED State ( synchronized )



Thread Dump - BLOCKED State - DEADLOCK



Thread Dump - WAIT State

wait 메소드 실행 시 가지고 있던 모니터를 다 반환, wait하는 객체를 notify를 하는 코드를 찾아야 함



Thread Dump - RUNNABLE State



트러블 슈팅

1. CPU 사용 및 Load가 점차적으로 증가

1. 재시작후 Thread  dump를 주기적으로 생성

2. 장애 원인 확인





2. 요청이 증가하는 경우 장애가 발생하지는 않지만 응답시간이 느려지는 현상

1. Thread Dump  생성후 TDA로 분석



2. Stack Trace 확인

3. log4j 설정 확인

4. log4j 문서 확인

3. 요청이 증가한 매우 간헐적으로 CPU가 100%로 폭증 이후 요청량이 줄어들어도 CPU 사용량은 줄어들지 않고 재시작후 정상으로 돌아오는 현상

1. CPU를 많이 사용하는 Thread 확인 - ps -mo 명령어를 통하여 CPU를 사용하는 lwp ( Light Weight Process) 확인



2. 16진수로 변경된 Thread Id를 이용하여 Thread Dump 검색


4. 장애 원인 확인





  


참조

https://d2.naver.com/helloworld/1286587








'IT > ETC' 카테고리의 다른 글

트러블 슈팅  (0) 2018.11.09
4 steps to troubleshooting  (0) 2018.10.29

CDN(Contents Delivery Network)의 정의

- 대용량 또는 사용자의 잦은 요청이 있는 컨텐츠들을 Cache 서버에 분산 배치하여 컨텐츠의 전송 중 발생하는 트래픽 집중 & 병목현상 및 데이터 손실을 해결하기 위해 등장한 컨텐츠 전송 기술 ( 느린 응답속도/다운로딩 타임을 극복하기 위한 기술 )


CDN의 작동 원리



1.  웹 브라우저가 실행되는 디바이스인 PC나 모바일 기기의 사용자 에이전트가 특정 주소에 접근하여 HTML, 이미지, CSS, JavaScript 파일 등 렌더링하는 데 필요한 콘텐츠를 서버로부터 요청

2. DNS는 콘텐츠에 대한 각 요청이 발생하면 End User와 가장 가까운 위치에 최적으로 배치된 CDN 서버에 End User가 매핑되고, 해당 서버는 요청된 파일의 캐싱된(사전 저장된) 버전으로 응답(전송). 

3. 서버가 파일을 찾는 데 실패하는 경우 CDN 플랫폼의 다른 서버에서 콘텐츠를 찾은 다음 End User에게 응답을 전송. 콘텐츠를 사용할 수 없거나 콘텐츠가 오래된 경우, CDN은 오리진 서버에 대한 요청 프록시로 작동하여 향후 요청에 대해 응답할 수 있도록 Patch된 새로운 콘텐츠를 저장


CDN의 구성 요소 

- CDN 서버 : 컨텐츠 저장, 최종 사용자에게 스트리밍 서비스 

- Contents 분배 : 지정된 컨텐츠를 스케쥴에 따라 지정된 CDN 서버에 전송하여 최신 컨텐츠 버전을 유지함. 

- GLB라우터 : 지역적으로 분산되어 설치된 여러 CDN 서버를 사용자와 가장 가까운 CDN서버에서 사용자가 서비스 받을 수 있도록 하는 라우터 

- CDN관리 및 모니터링 SW : 분산되어 있는 CDN서버를 중앙에서 관리, 장애상황 대처


CDN기술요소 

- Contents Sync : CP의 웹컨텐츠 중 변경된 내용이 있다면 CDN서버와 Sync

- Caching 기술 : 자주 사용되는 파일 캐쉬 서버에 저장  

    -  Pull 모델 - ISP들의 POP지점에 Cache서버 배치 

    - Push 모델 = 캐쉬서버를 웹서버 앞에 위치 

- Load Balancing : 서버사이의 트래픽 향상

    - Product-Based 솔류션 : 기업 소유 형태

    - Service-Based 솔류션 : 아웃소싱 형태 

- Streaming 기술 : 실시간으로 사용자가 원하는 컨텐츠 전송 기술

     - Multicasting Streaming : 동시에 많은 고객

     - On-demand Streaming : 주문형 서비스


 

CDN 캐싱 방식의 종류

- Static Caching

– 사용자의 요청이 없어도 Origin Server에 있는 Content를 운영자가 미리 Cache Server에 복사함

– 따라서 사용자가 Cache Server에 접속하여 Content를 요청하면 무조건 그 Content는 Cache Server에 있음! (100% Cache Hit)

– 대부분의 국내 CDN에서 이 방식을 사용함 (예. Pooq 동영상 스트리밍/다운로드, NCSOFT 게임파일 다운로드 등)


Dynamic Caching

– 최초 Cache Server에는 Content가 없음

– 사용자가 Content를 요청하면 해당 Content가 있는지 확인하고, 없으면(Cache Miss) Origin Server로 부터 다운로드 받아(Cache Fill) 사용자에게 전달해 줌

– 이후 동일 Content를 요청 받으면 저장(캐싱)된 Content를 사용자에게 전달(Cache Hit)

– 각 Content는 일정 시간(TTL)이 지나면 Cache Server에서 삭제될 수 있고, 혹은 Origin Server를 통해 Content Freshness 확인 후에 계속 가지고 있을 수 있음

–  Akamai, Amazon과 같은 Global CDN 업체, 그리고 Cisco나 ALU의 통신사업자향 CDN 장비 솔루션에서 이 방식을 지원함



CDN 도입효과

- CP측면 : Web성능향상, 다양한 멀티미디어 제공, 비용절감, QoS증가

- ISP측면 : Performance 향상, 사용자 만족도 향상 

- User측면 : QoS확보된 서비스 제공, 다양한 컨텐츠 서비스




참고 

https://blog.naver.com/paninfo/10139797986

https://cdn.hosting.kr/cdn%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94/

http://brainwave.tistory.com/82

https://idchowto.com/?p=16938

http://i5on9i.blogspot.com/2014/05/cdn-proxy-server.html

https://www.kdata.or.kr/info/info_04_view.html?field=&keyword=&type=techreport&page=231&dbnum=127531&mode=detail&type=techreport

'IT > IT 기술' 카테고리의 다른 글

DNS 동작원리  (1) 2018.11.05
HTTP/1.1 VS HTTP/2  (1) 2018.11.01
Container  (0) 2018.10.29

DNS란 

  • www.example.com과 같이 사람이 읽을 수 있는 이름을 192.0.2.1과 같은 숫자 IP 주소로 변환하여 컴퓨터가 서로 통신할 수 있도록 한다. 
  • 인터넷의 DNS 시스템은 이름과 숫자 간의 매핑을 관리하여 마치 전화번호부와 같은 기능
  • DNS 서버는 이름에 대한 요청을 IP 주소로 변환하여 최종 사용자가 도메인 이름을 웹 브라우저에 입력할 때 해당 사용자를 어떤 서버에 연결할 것인지를 제어한다. 이 요청을 쿼리라고 한다.

Domain 구조

  • 인터넷상에서 사용되는 도메인은 전 세계적으로 고유하게 존재하는 이름
  • 정해진 규칙 및 체계에 따라야 하며, 임의로 변경되거나 생성될 수 없음.
  • 인터넷상의 모든 도메인은 ".(dot)" 또는 루트(root)라 불리는 도메인 아래에 그림과 같이 나무를 거꾸로 위치시킨 역트리(Inverted tree)구조로 계층적으로 구성되어 있음
  • 루트 도메인 바로 아래의 단계를 1단계 도메인 또는 최상위도메인(TLD, Top Level Doamin)이라고 부르며, 그 다음 단계를 2단계 도메인(SLD, Second Level Domailn)이라고 함
  • 도메인은 일반최상위도메인(gTLD: Generic Top Level Domain)과 국가최상위도메인(ccTLD: Country Code Top Level Domain)로 구분할 수 있으며 여기서 일반최상위도메인은 다시 스폰서도메인(Sponsored TLD)과 언스폰서도메인(Unsponsored TLD)으로 구분됩니다.



DNS 서비스 유형

    • 신뢰할 수 있는 DNS

      • 개발자가 퍼블릭 DNS 이름을 관리하는 데 사용하는 업데이트 메커니즘을 제공하며, 이를 통해 DNS 쿼리에 응답하여 도메인 이름을 IP 주소로 변환
      • 신뢰할 수 있는 DNS는 도메인에 대해 최종 권한이 있으며 재귀적 DNS 서버에 IP 주소 정보가 담긴 답을 제공할 책임이 있음

      • 재귀적 DNS

        • 보통 클라이언트는 신뢰할 수 있는 DNS 서비스에 직접 쿼리를 수행하지 않고, 해석기 또는 재귀적 DNS 서비스라고 알려진 다른 유형의 DNS 서비스에 연결하는 경우가 일반적임

        • 재귀적 DNS 서비스는 호텔 컨시어지와 같은 역할

        • DNS 레코드를 소유하고 있지 않지만 사용자를 대신해서 DNS 정보를 가져올 수 있는 중간자의 역할

        • 일정 기간 동안 캐시된 또는 저장된 DNS 레퍼런스를 가지고 있는 경우, 소스 또는 IP 정보를 제공하여 DNS 쿼리에 답을 하거나, 해당 정보를 찾기 위해 쿼리를 하나 이상의 신뢰할 수 있는 DNS 서버에 전달


DNS 동작 원리



1. 웹 브라우저에 www.naver.com을 입력하면 먼저 Local DNS에게 "www.naver.com"이라는 hostname"에 대한 IP 주소를 질의하여  Local DNS에 없으면 다른 DNS name 서버 정보를 받음(Root DNS 정보 전달 받음)

2. Root DNS 서버에 "www.naver.com" 질의

3. Root DNS 서버로 부터 "com 도메인"을 관리하는 TLD (Top-Level Domain) 이름 서버 정보 전달 받음

4. TLD에 "www.naver.com" 질의

5. TLD에서 "name.com" 관리하는 DNS 정보 전달

6. "naver.com" 도메인을 관리하는 DNS 서버에 "www.naver.com" 호스트네임에 대한 IP 주소 질의

7. Local DNS 서버에게 "응! www.naver.com에 대한 IP 주소는 222.122.195.6 응답 

8. Local DNS는 www.naver.com에 대한 IP 주소를 캐싱을 하고 IP 주소 정보 전달 

 

Recursive QueryLocal DNS 서버가 여러 DNS 서버를 차례대로 (Root DNS 서버 -> com DNS 서버 -> naver.com DNS 서버) 질의해서 답을 찾아가는 과정


참고

https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_domain_name

https://aws.amazon.com/ko/route53/what-is-dns/

https://www.netmanias.com/ko/post/blog/5353/dns/dns-basic-operation



'IT > IT 기술' 카테고리의 다른 글

CDN 동작 원리  (0) 2018.11.05
HTTP/1.1 VS HTTP/2  (1) 2018.11.01
Container  (0) 2018.10.29

+ Recent posts