성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
[정성태] 저렇게 조각 코드 말고, 실제로 재현이 되는 예제 프로젝트를 압...
[정성태] Modules 창(Ctrl+Shift+U)을 띄워서, 해당 Op...
[정성태] 만드실 수 있습니다. 단지, Unity 엔진 내의 스크립트와 W...
[공진영] 안녕하세요 좋은글 감사합니다. 현재 제가 wpf로 관제 모...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <div style='font-family: 맑은 고딕, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>닷넷 APM 솔루션 - 제니퍼 닷넷의 기능 요약</div><br /> <br /> 지난 시간을 통해서 .NET APM(Application Performance Management) 솔루션인 "제니퍼 닷넷"의 설치 방법을 알아봤습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > JENNIFER .NET을 이용한 .NET 웹 사이트 모니터링 (1) - 임시 라이선스 요청 및 다운로드 ; <a target='_tab' href='/2/0/857'>http://www.sysnet.pe.kr/2/0/857</a> JENNIFER .NET을 이용한 .NET 웹 사이트 모니터링 (2) - 설치 ; <a target='_tab' href='/2/0/858'>http://www.sysnet.pe.kr/2/0/858</a> </pre> <br /> 그런데 과연 어떤 기능들이 있길래, APM 솔루션으로써 자리매김할 수 있었을까요? 이번에는 그 주요 기능들을 하나씩 살펴보도록 하겠습니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> <div style='font-family: 맑은 고딕, Consolas; font-size: 12pt; color: #2211AA; text-align: left; font-weight: bold'>1. 운영 서버 모니터링</div><br /> <br /> "제니퍼"는 "운영 중인 시스템"을 최소한의 부하로 24시간 365일 상시 모니터링 할 수 있다는 점에서 타 APM 솔루션과 비교해 탁월한 성능 이슈 감지 기능을 제공합니다. 실 서버에 적용할 수 있다는 점으로 인해 운영 중에 불특정하게 발생할 수 있는 성능 문제를 모니터링하는 것이 가능합니다.<br /> <br /> <div style='font-family: 맑은 고딕, Consolas; font-size: 12pt; color: #2211AA; text-align: left; font-weight: bold'>2. 전 거래 모니터링</div><br /> <br /> 제니퍼는 모든 "요청" 건수를 모니터링합니다. 이런 특성으로 인해 요청 간에 영향을 주는 문제까지 모두 파악할 수 있는 능력이 있습니다. 예를 들어, "A", "B", "C" 순으로 들어오는 요청에서 "A" 요청에서 DB 트랜잭션을 걸고 "B", "C"가 그 트랜잭션에 영향을 받아 Lock이 걸렸을 때의 상황을 "제니퍼" 대시보드를 통해 분석하는 것이 가능합니다.<br /> <br /> 이 때문에, "운영자"는 웹 사이트를 100% 관리 가능한 상태로 둘 수 있습니다. ("Managed 언어"로 만들어진 웹 사이트라고 해서 운영 시에 "Managed" 상태가 되는 것은 아닙니다.)<br /> <a name='3'></a> <br /> <div style='font-family: 맑은 고딕, Consolas; font-size: 12pt; color: #2211AA; text-align: left; font-weight: bold'>3. 수행 중인 서비스 모니터링</div><br /> <br /> "현재 실행 중인 서비스", 즉 실행 중인 aspx, asmx, svc 등의 서비스 처리에 대한 상황을 제니퍼 대시보드에서 확인할 수 있습니다. <br /> <br /> [그림 1: 수행 중인 서비스 대시보드]<br /> <img width='500' alt='jennifer_main_features_1.png' src='/SysWebRes/bbs/jennifer_main_features_1.png' /><br /> <br /> 위에서 보는 것처럼 "(A)" 영역은 모니터링 대상이 되는 모든 IIS 서비스에서 처리 중인 aspx/asmx/svc 서비스의 수를 제공하고 "(B)"영역은 개별 웹 애플리케이션 별로 처리 중인 aspx/asmx/svc 서비스의 수를 보여주고 있습니다. [그림 1]의 상황에서는 현재 36개의 요청이 처리 중에 있음을 나타내고 (빨간 막대로 표시되는) 8초 이상 걸리는 서비스들이 14개 정도 있음을 알 수 있습니다.<br /> <br /> 이 화면을 통해서, 운영자는 직관적으로 빨간 막대가 늘어날 때 장시간 쓰레드를 점유하는 서비스가 있음을 알 수 있고 이는 곧 "사용자 응답시간"을 저해하는 요소로써 튜닝이 필요한 부분임을 알 수 있습니다.<br /> <br /> 나아가서, "실시간 액티브 서비스 개수" 대시보드의 막대를 마우스로 더블 클릭하면 요청 중인 서비스 목록을 확인하는 것도 가능합니다.<br /> <br /> [그림 2: 수행 중인 aspx/asmx/svc 목록]<br /> <img width='500' alt='jennifer_main_features_2.png' src='/SysWebRes/bbs/jennifer_main_features_2.png' /><br /> <br /> 운영자는 이런 경우, 장시간 수행 중인 aspx 웹 페이지가 도대체 어디에서 Hang(멈춤) 현상을 겪고 있는지를 알고 싶어할 것입니다. [그림 2]의 애플리케이션 뷰는 개별 서비스에 대한 링크를 제공하여 그 서비스를 수행 중인 스레드의 호출 스택을 보는 것이 가능합니다.<br /> <br /> [그림 3: 수행 중인 스레드의 호출 스택(Call stack) 덤프]<br /> <img width='500' alt='jennifer_main_features_3.png' src='/SysWebRes/bbs/jennifer_main_features_3.png' /><br /> <br /> 운영자는 [그림 3] 화면을 통해서 이 서비스의 장애 원인이 외부 서비스의 호출 때문인지? DB 트랜잭션 잠금으로 인한 것인지? 등의 원인을 파악할 수가 있고 개발자에게 문제 해결을 위한 정보를 제공할 수 있게 됩니다.<br /> <br /> <a name='xview'></a><a name='4'></a> <div style='font-family: 맑은 고딕, Consolas; font-size: 12pt; color: #2211AA; text-align: left; font-weight: bold'>4. 응답 시간 분포 그래프(X-View) 제공</div><br /> <br /> 고객들의 피드백으로 입증된 제니퍼의 가장 강력한 기능으로써 X-View 화면을 들 수 있습니다. X 축을 호출된 시간으로, Y 축을 응답시간으로 하여 전 거래에 대한 분포도를 나타내고 있기 때문에 웹 사이트에 대한 성능을 한 눈에 파악하는 것이 가능합니다.<br /> <br /> [그림 4: 응답 시간 분포 그래프(X-View)]<br /> <img width='500' alt='jennifer_main_features_4.png' src='/SysWebRes/bbs/jennifer_main_features_4.png' /><br /> <br /> X-View는 운영자로 하여금 직관적으로 알 수 있는 튜닝 포인트를 제공하는데, 뷰의 하단 영역에 위치한 - 즉, 처리가 빠른 서비스들보다는 X-View 화면의 상단에 분포한 거래를 위주로 튜닝해야 한다는 것과, 마우스로 그 영역을 Drag 함으로써 해당 요청들에 대한 보다 자세한 정보를 볼 수 있게 합니다.<br /> <br /> [그림 5: 응답이 느린 요청 건수에 대한 상세 화면]<br /> <img width='500' alt='jennifer_main_features_5.png' src='/SysWebRes/bbs/jennifer_main_features_5.png' /><br /> <br /> "상세 화면"에서는 요청을 처리하는 과정 중에 발생한 DB 연동 결과를 함께 제공하므로, 대부분의 웹 사이트가 DB 연동 과정에서 장애가 발생하는 것에 대해 직접적인 원인을 파악할 수 있습니다.<br /> <br /> <div style='font-family: 맑은 고딕, Consolas; font-size: 12pt; color: #2211AA; text-align: left; font-weight: bold'>5. 응답 시간 분포 그래프(X-View) 기반의 문제 해석 예 - 트랜잭션 잠김으로 인한 부하 발생</div><br /> <br /> 운영 서버에서 빈번하게 발생하는 문제 중의 하나가 바로 트랜잭션 Lock인데, X-View에서 어떻게 보여지는 지를 아래의 화면에서 확인할 수 있습니다.<br /> <br /> [그림 6: 트랜잭션 Lock으로 인한 X-View 패턴]<br /> <img alt='jennifer_main_features_6.png' src='/SysWebRes/bbs/jennifer_main_features_6.png' /><br /> <br /> 보통 이와 같이 수직으로 늘어서는 것을 볼 수 있는데, 대개 가장 상단의 요청에서 점유하고 있던 트랜잭션이 해제되면서 연이어 그 트랜잭션으로 인해 잠겨 있던 SELECT 유의 빠른 응답이 가능한 요청들이 처리되어 거의 "수직"에 가까운 선이 생기는 것을 볼 수 있습니다.<br /> <br /> 해당 트랜잭션을 발생한 서비스 및 SQL 쿼리를 알기 위해서 수직으로 늘어선 점들을 포함한 영역을 마우스로 드래그 하면 아래와 같이 상세화면을 볼 수 있습니다.<br /> <br /> [그림 7: X-View 상세 화면을 통해 SQL 쿼리 확인]<br /> <img width='500' alt='jennifer_main_features_7.png' src='/SysWebRes/bbs/jennifer_main_features_7.png' /><br /> <br /> 이 화면에서는 DB에 대한 "연결 문자열"과 "SQL 쿼리 문자열", 그 쿼리에 전달된 인자(IDbDataParameter)를 확인할 수 있습니다. <br /> <br /> 결국, 이런 과정을 통해서 웹 사이트 관리자는 서비스에 장애 요인이 될 수 있는 환경들을 점진적으로 개선할 수 있고, 그와 동시에 사이트 사용자들은 보다 낮은 응답시간의 웹 서비스를 경험하게 됩니다.<br /> <br /> <div style='font-family: 맑은 고딕, Consolas; font-size: 12pt; color: #2211AA; text-align: left; font-weight: bold'>6. 자바/닷넷 웹 응용 프로그램 모니터링</div><br /> <br /> 동일한 제품 라인으로 자바 및 닷넷 프레임워크로 만들어진 웹 사이트를 모니터링하는 것이 가능하기 때문에, 다양한 웹 응용 프로그램을 관리하는 운영자는 웹 사이트 별 모니터링 제품을 복잡하게 고려할 필요가 없습니다. 또한, 자바와 닷넷의 환경 차이로 인한 설정값을 제외하고 대부분의 모니터링 환경이 동일하기 때문에 자바 버전의 제품 사용 경험이 닷넷 버전의 제품에서도 이어질 수 있도록 일관성 있는 UI 경험을 제공합니다.<br /> <br /> <a name="plc"></a><div style='font-family: 맑은 고딕, Consolas; font-size: 12pt; color: #2211AA; text-align: left; font-weight: bold'>7. 서비스 폭주 시 부하량 제어</div><br /> <br /> 보통 PLC(Peak Load Control: 임계 부하량 제어) 기능이 필요한 경우를 예로 들 때, 레거시 시스템과의 병목 현상을 이야기합니다. 가령 레거시 시스템으로부터 데이터를 가져오는 GetData.aspx라는 페이지가 있다고 할 때, 대상 시스템이 한 번에 "90"개의 동시 요청만을 받는 제한적인 상황이 있을 수 있습니다. 하루 중 가장 요청이 많은 서비스 시간대가 되면 빈번하게 90개 이상의 동시 요청이 들어올 수 있고, 이렇게 동시에 요청된 90개 이상의 요청들은 이전의 요청들이 끝날 때 까지 Hang(멈춤) 상태에 빠지게 됩니다. 혹은 동시 요청 제한이 없는 경우라 하더라도 대상 레거시 시스템이 급격한 요청 증가로 인해 시스템 다운이 된다면, 제니퍼를 이용하여 GetData.aspx 웹 페이지를 호출할 수 있는 동시 요청 수를 제한할 수 있습니다.<br /> <br /> 요청 거부된 웹 페이지들은 운영자가 정의한 별도의 HTML 웹 페이지로 재지정 될 수 있습니다.<br /> <br /> 아래의 화면은 90개를 상한으로 지정된 웹 페이지의 동시 요청 수가 그 임계값을 넘었을 때 제니퍼 콘솔의 스피드 미터에서 확인되어지는 상황과 사용자로 하여금 운영자가 정의한 메시지 화면을 볼 수 있도록 처리되었음을 보여주고 있습니다.<br /> <br /> <img width='500' alt='jennifer_main_features_8.png' src='/SysWebRes/bbs/jennifer_main_features_8.png' /><br /> <br /> <div style='font-family: 맑은 고딕, Consolas; font-size: 12pt; color: #2211AA; text-align: left; font-weight: bold'>8. 사용자 정의 대시보드 구성</div><br /> <br /> 특정 웹 사이트의 경우, 운영자가 해당 웹 사이트에서만 유효한 성능 카운터를 제니퍼 콘솔에서 같이 확인하는 것이 가능합니다. 이를 위해서 운영자는 제니퍼소프트에서 제공하는 REMON 라이브러리를 이용하여 성능 카운터를 제니퍼 서버에 전송하는 것이 가능하고, 전송된 성능 카운터 정보를 확인할 수 있는 "사용자 정의 대시보드"를 제니퍼 콘솔에 넣는 것이 가능합니다.<br /> <br /> 아래는 실제 사례로 구현된 사용자 정의 대시보드 화면입니다.<br /> <br /> <img width='500' alt='jennifer_main_features_9.png' src='/SysWebRes/bbs/jennifer_main_features_9.png' /><br /> <br /> <div style='font-family: 맑은 고딕, Consolas; font-size: 12pt; color: #2211AA; text-align: left; font-weight: bold'>9. 기타...</div><br /> <br /> 이 외에도 경보 기능, 통계 분석 및 보고서, 도메인 구성 등... 열거할 수 있는 기능들이 너무나 많은데 모두를 자세히 살펴볼 수 없기 때문에 생략하겠습니다. 자세한 사항은 별도 제공되는 매뉴얼을 참고하십시오. 필요한 경우, 시간 나는 데로 천천히 제 블로그를 통해서도 알아보도록 하겠습니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 어떠세요? APM 솔루션이 손에 잡히시나요?<br /> <br /> 흔히들, APM 솔루션은 문제가 있는 시스템에서만 사용하는 걸로 알고 있습니다. 그런데 이 부분에 대해 제니퍼소프트의 연구소장으로 계시는 "김성조" 기술 이사님의 말씀이 재미있습니다. <br /> <br /> <span style='BACKGROUND-COLOR: #ccffcc; FONT-STYLE: italic; MARGIN: 10px 0px 10px 10px; WIDTH: 800px; FONT-FAMILY: 맑은 고딕, Consolas, Verdana; COLOR: #005555'> "문제가 있는 시스템"이라는 것의 기준이 매우 모호하다는 것이 바로 더욱 근본적인 문제이다. 즉, 적절한 APM 솔루션이 없어 해당 웹 사이트에 대한 "성능의 정량화" 또는 "서비스 운영에 대한 가시성"이 확보되지 않았다면 과연 정말 문제가 있는지/없는지에 대해서는 판단할 수 없다...</span><br /><br /> <br /> 그리고, 그렇게 해서 APM 솔루션을 선택해야 한다면? 가장 현실적이고 실용적인 APM 솔루션인 "제니퍼"가 있습니다. <br /> <br /><br /><hr /><span style='color: Maroon'>[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
2943
(왼쪽의 숫자를 입력해야 합니다.)