LNA Web Application Server

Guides -LENA 운영자 가이드

진단 및 대응

진단 및 대응 기능을 사용하면 장애 가능성 사전 진단과 적절한 대응이 가능하여 Server 안정성을 높일 수 있다. 진단 대상 유형 7가지는 아래와 같다.

  1. Request Pool 의 Full
  2. 대량 DB Data 요청
  3. DB Connection Pool 의 Full
  4. Long Transaction
  5. Peak Control
  6. OOM
  7. Hang

진단 기능은 Rule기반으로 Server의 장애 가능성(또는 장애 상황)을 판단하는 기능이다. 대응 기능은 진단 결과를 기반으로 적절한 Server제어를 통해 장애를 이겨내고 안정적인 서비스를 할 수 있도록 지원하는 기능이다. 상세 설정 방법은 8.3 절에서 설명한다.

장애 진단 유형

장애 진단 유형은 크게 "Resource Base 진단"과 "Hang 진단"으로 구분할 수 있다.

  • Resource Base 진단: Server의 Resource 사용 현황 정보를 기반으로 장애 가능성을 판단

    • 1~6번 장애 유형에 해당
  • Hang 진단: Server Hang 상태 여부 판단

    • 7번 장애 유형에 해당

Request Pool의 Full 진단

과도하게 많은 서비스 요청으로 Server의 가용 Thread가 모두 소진되면, 서비스 요청이 지연되거나 서비스 불가 상태에 빠질 수 있다. Thread 사용량 기반으로 과도한 사용자 요청 발생 여부를 파악하고 사용자 요청을 임시 페이지로 우회시키는 방법을 통해 Server를 안정적인 상태로 유지한다.

대량 DB Data 요청 진단

서비스가 대량 DB 데이터를 처리하는 경우, 메모리를 과도하게 점유하면서 OOM 현상, 잦은 Full GC에 의한 서버 Hang 현상 등이 발생할 수 있다. 서비스의 대량 DB 데이터 요청 여부를 파악하고 해당 서비스를 강제로 종료시키는 방법을 통해 Server를 안정적인 상태로 유지한다.

DB Connection Pool 의 Full 진단

DB 처리 시간 지연, 네트워크의 지연, DB Lock 등에 의해 DB Connection이 과도하게 점유된 경우, 서비스는 가용 DB Connection을 할당 받을 때까지 지연된다. DB Connection 할당을 기다리는 서비스들이 누적되어 Server의 Thread를 과도하게 점유하게 되면 서비스 불능 상태까지 발생할 수 있다. 특정 Datasource의 DB Connection 이 모두 소진된 경우, 할당 대기 시간을 짧게 줄이는 방법을 통해 장애를 격리함으로써 Server를 안정적인 상태로 유지한다.

Long Transaction 진단

일시적인 네트워크, 연계시스템 문제 등으로 서비스가 지연되거나 수행시간이 원래 긴 서비스가 존재하는 경우, 해당 서비스들이 Server의 Thread를 과도하게 점유하여 다른 서비스 수행에 지장을 줄 수 있다. 오래 걸리는 서비스들의 Thread 사용률을 제한하는 방법을 통해 다른 서비스들의 QoS를 보장한다.

OutOfMemory 진단

서비스 로직의 오류 또는 시스템의 과도한 Memory 사용에 의해 OOM(OutOfMemory Error)이 발생할 수 있다. OOM이 발생하면 Server의 정상적인 동작을 보장할 수 없으므로 신속히 재기동 해야 한다. Full GC 발생 빈도 증가, 메모리 해제 불가 등의 상황으로 OOM 발생 가능 여부를 미리 판단하여 알리고, 만약 이미 OOM이 발생했다면 신속히 파악하여 자동으로 재기동함으로써 Server 장애 상황을 신속하게 극복한다.

Peak Control 진단

Server처리 한계를 넘는 많은 사용자의 요청이 존재하는 경우, 서비스 지연 또는 불능 상태가 될 수 있다. 만약 사용자 요청이 특정 서비스에만 몰린다면 순서대로 진입하도록 요청을 제어하여 안정적인 서비스를 제공하면서도 사용자의 이탈을 막을 수 있다. 이를 통해 다른 서비스 QoS도 보장할 수 있다.

Hang 진단

Server가 Hang 상태가 되면 Server에서 수행되는 모든 작업이 중단되는 것은 물론 Server가 설치된 시스템 전체에 영향을 줄 수도 있다. Hang 상태가 파악되면 즉시 재기동하여 Server의 빠른 복구와 시스템 전체 장애 발생을 방지한다.

진단이력 화면

진단 이력 검색 화면은 아래와 같다.

상단 검색 기능을 통해 원하는 서버의 진단 요약 정보 및 Report를 검색할 수 있다. Report는 7일간 보관되며 오래된 Report는 자동으로 삭제된다. 가운데 테이블에서 원하는 날짜 Row를 선택하면 해당 날짜에 생성된 진단 Report 목록을 확인할 수 있다. 진단 결과 목록에서 view 버튼을 선택하면 상세 내용을 확인할 수 있으며, Excel로 다운로드를 받을 수도 있다.

Report

진단 결과 목록에서 View 버튼을 선택하면 아래처럼 Report를 확인할 수 있다.

Report는 공통정보와 상세정보로 구성된다. 시간대 별 진단결과 확인이 가능하며 특정 진단 시점에 대한 상세한 내용도 확인할 수 있다.

공통 정보

이상 현상이 감지되는 동안에 대한 진단 요약정보이다.

항목설명
진단 수행시간이상 현상이 감지된 최초 시간
진단 종료시간이상 현상이 감지된 마지막 시간
동일진단 반복횟수이상 현상이 발생한 총 횟수
Report 생성 횟수진단 Report 생성 횟수. 진단 결과가 동일한 유형이라고 판단되면 최대 3개까지만 생성하며, 진단 결과가 달라지는 경우 최대 100개까지 생성한다.
  동일한 현상이 계속 진단되는 경우(예를 들어 위의 경우 Long Transaction 현상이 지속됨) Report는 최대 3개만 남겨서 많은 양의 동일한 내용의 Report가 생성됨은 막는다. 따라서 Total Diagnostics Repeat Count 의 수가 Total Report Creation Count보다 크다는 것은 동일한 진단 결과가 많이 발생했다는 것을 의미한다.

상세 정보

Report 상단에 요약정보가 표시되며, "초록색" 은 정상, "주황색"은 경고, "붉은색"은 이상, "N/A" 는 진단이 Disable 되어 진단하지 않은 상태를 의미한다. 아래에서 장애 유형별로 생성된 진단 Report를 설명한다.

[Request Full 진단 Report]

Request Thread Pool 사용률이 임계를 초과한 경우, "Request Full" 항목에 붉은색으로 표시된다. 원하는 시간의 상세 내용을 보기 위해 해당 Row를 클릭하면 아래와 같은 정보를 확인할 수 있다.

  1. 이상 발생 시간
  2. Dump 생성 시간 및 생성된 Dump(다운로드 가능)
  3. 서버에 취해진 Action 종류
  4. 진단 시 사용된 임계 값
  5. 임계 값을 초과한 Connector별 실제 사용률
  6. 이상 시점에 많이 호출된 서비스(Top 5) 및 해당 서비스의 평균 호출 횟수(5초 간격으로 3회 측정하여, 평균 호출 횟수를 보여줌)
[대량 DB Data 요청 진단 Report]

대량 DB Data 요청이 발생했다고 판단된 경우, "Bulk DB Data Request" 항목에 붉은색으로 표시된다. 원하는 시간의 상세 내용을 보기 위해 해당 Row를 클릭하면 아래와 같은 정보를 확인할 수 있다.

  1. 이상 발생 시간
  2. Dump 생성 시간 및 생성된 Dump(다운로드 가능)
  3. 서버에 취해진 Action 종류
  4. 진단 시 사용된 임계 값
  5. 대량 DB 데이터를 요청한 서비스 목록
[DB Conn Full 진단 Report]

DB Connection 사용률이 임계를 초과한 경우, "DB Conn Full" 항목에 붉은색으로 표시된다. 원하는 시간의 상세 내용을 보기 위해 해당 Row를 클릭하면 아래와 같은 정보를 확인할 수 있다.

  1. 이상 발생 시간
  2. Dump 생성 시간 및 생성된 Dump(다운로드 가능)
  3. 서버에 취해진 Action 종류
  4. 진단 시 사용된 임계 값
  5. DB Conn Pool 사용량이 임계 값을 초과한 Datasource 및 사용률
[Long Transaction진단 Report]

전체 Thread 에서 Long Transaction 의 비율이 임계를 초과한 경우, "Long Transaction" 항목에 붉은색으로 표시된다. 원하는 시간의 상세 내용을 보기 위해 해당 Row를 클릭하면 아래와 같은 정보를 확인할 수 있다.

  1. 이상 발생 시간
  2. Dump 생성 시간 및 생성된 Dump(다운로드 가능)
  3. 서버에 취해진 Action 종류
  4. 진단 시 사용된 임계 값
  5. Long Transaction 목록(서비스 명, 진단 시점에 수행중인 해당 서비스의 총 개수, 서비스 총 개수 대비 Long Transaction으로 판단된 서비스 개수, 진단 시점 기준의 서비스 수행시간, SQL 수행중인 경우 SQL문)
[Peak Control 진단 Report]

특정 서비스의 Thread 사용 비율이 임계를 초과한 경우, "Peak Control" 항목에 붉은색으로 표시된다. 원하는 시간의 상세 내용을 보기 위해 해당 Row를 클릭하면 아래와 같은 정보를 확인할 수 있다.

  1. 이상 발생 시간
  2. Dump 생성 시간 및 생성된 Dump(다운로드 가능)
  3. 서버에 취해진 Action 종류
  4. 진단 시 사용된 임계 값
  5. 대상 서비스가 과점유한 Connector
  6. 많이 수행된 서비스 Top5 목록(서비스 명, 요청된 횟수)
[OOM 진단 Report]

Server에서 OOM이 발생되면, "OOM" 항목이 붉은색으로 표시된다. 원하는 시간의 상세 내용을 보기 위해 해당 Row를 클릭하면 아래와 같은 정보를 확인할 수 있다. OOM이 발생한 경우에만 Dump를 생성하고 서버를 제어한다.

  1. 이상 현상 발생 시간
  2. Dump 생성 시간 및 생성된 Dump(다운로드 가능)
  3. 서버에 취해진 Action 종류
  4. OOM 관련 항목(Heap 사용률, Full GC 빈도, Leak 여부, 대량 DB 데이터 요청 여부 ? Bulk 진단 기능이 on 인 경우 표시됨, heap dump가 생성된 경우 dump 파일 명)

OOM이 발생하지 않더라도, Full GC 빈도가 임계가 넘거나, Leak 여부가 감지되면 노란색으로 표시(Warning)된다. 이는 경고를 의미하며 Dump가 생성되거나 서버 제어가 이루어지지 않는다. Heap Dump가 생성되었음에도 Warning으로 표시되는 경우는 OOM이 발생하여 Heap Dump가 생성되었지만, 이미 그후에 서버가 재기동되어 Action을 취할 필요가 없는 경우이다.

[Hang 진단 Report]

Server가 Hang 상태라고 판단되면, "Hang" 항목에 붉은색으로 표시된다. 이 경우 나머지 항목에 대해서는 판단할 수 없으므로 Unknown으로 표시된다 원하는 시간의 상세 내용을 보기 위해 해당 Row를 클릭하면 아래와 같은 정보를 확인할 수 있다.

  1. 이상 현상 발생 시간
  2. Dump 생성 시간 및 생성된 Dump(다운로드 가능)
  3. 서버에 취해진 Action 종류
  4. Server의 상태 체크를 위한 Connection Timeout 시간과 재시도 횟수

알림

진단을 통해 Report가 생성되면 아래와 같이 알림 기능을 통해 확인 가능하다.

알림 내용을 선택하면 생성된 Report를 바로 확인할 수 있으며, 알림 내용을 확인하고 더 이상 표시하지 않기를 원한다면 x표시를 선택한다. 알림이 많은 경우 상단의 Notifications아이콘을 선택하여 일괄 확인을 할 수 있다.

Notifications 화면에서는 지난 알림에 대한 이력을 볼 수 있다. (1개월 이내의 데이터만 보관)

링크 아이콘 을 클릭하면 선택한 알림에 대한 진단이력 화면으로 이동한다.

확인 아이콘을 클릭하면 선택한 알림에 대한 확인을 의미하며, 우측 상단의 알림 표시를 하지 않게 된다.