2015( 제 8 회 ) 한국소프트웨어아키텍트대회 OSS 성능모니터링을위한 Open Source SW 2015. 07. 16 LG CNS 김성조 Tomcat & MariaDB 성능모니터링
Passion Open Source Software Open Hadoop IT Service Share Communication Enterprise Source Access Software Apache MariaDB Tomcat Free flexible 2
Enterprise IT System Web App. Server Database 3
Tomcat & MariaDB http://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-for-2014/8/ https://www.scalebase.com/the-state-of-the-open-source-database-market-mysql-leads-theway/ 4
OSS 도입시고려사항 Functionality Performance Troubleshooting Monitoring 5
OSS Monitoring 을위한 Cloud Non-Java SaaS Iot Mobile DevOps Global Big Data Cost Effective Monitoring Tool 6
Core Functionality 서비스지연에대한현황과원인분석 시스템의주요자원에대한모니터링 User Tomcat MariaDB 원인증상분석 H/W 자원의부족 S/W Resource Leak Slow SQL DB Lock Too many record loaded 서비스 Delay 서비스 Error 서비스 Queuing 서비스수행내용분석 관련자원분석 7
Simple Structure 추출 저장 차트 Server Client 8
Code Open Source Configuration Release Reference Manual Commercial Service Solution Integration 9
Scouter Project https://github.com/scouter-project/scouter 10
Tomcat Monitoring Active Service Service Profile TPS Response Time Heap Usage Thread Dump Heap Histo 11
Linux Monitoring CPU Memory/Swap Env, Netstat, Disk Usage, Etc Network Usage 12
MariaDB Monitoring (1) (2) (1) Active 세션현황 (2) SQL 유형트렌드 (3) 실시간 SQL 뷰 (3) 13
Eclipse RCP 웹보다쉬운기능구현 유용한 Plug-in 들 특징 Standalone Client 대용량데이터처리 멀티서버통합 Java Program Linux, OSX, Windows Perspective 사용자 Dashboard 검증된 UI/UX Look and Feel Drag & Drop 장점 강력한컴포넌트 SWT, GEF/Zest BIRT(Report Tool) MAT(Eclipse Memory Analyzer) 14
Architecture & Implementation jdk/tools.jar ASM Eclipse RCP TCP psutil TCP/UDP Native API 15
ASM(Byte code Instrumentation) http://asm.ow2.org ASM is an all purpose Java bytecode manipulation and analysis framework. It can be used to modify existing classes or dynamically generate classes, directly in binary form. javax.servlet.http.httpservlet javax.servlet.filter java.sql.statement java.sql.preparedstatement java.sql.callablestatement java.sql.resultset java.net.socket org.apache.tomcat.dbcp.dbcp.basicdatasource org.apache.tomcat.jdbc.pool.connectionpool org.apache.commons.httpclient.httpclient 16
Monitoring Libraries PSUtil(Python) psutil is a cross-platform library for retrieving information on running processes and system utilization (CPU, memory, disks, network) In Python. https://pypi.python.org/pypi/psutil tools.jar(java) Heap Histogram ps Thread Dump top netstat 17
MariaDB Monitoring Plugin SQL 방식이아닌 Native Call 방식 DB 내 Plugin 방식으로구현 : 간단한 Config 로 DB 와같이배포 DB 자체기능처럼동작 Connection Manager SQL Parser Query Optimization Query Execution Pluggable Storage Engine Memory, Cache, Index & Storage Management Monitoring Plugin (Native Call) InnoDB MyISAM Archive Memory 18
타언어간 Native Data 호환 Integer(4) Long(8) Float(4) Double(8) String(UTF8) Byte[] 19
Thread Singleton Architecture - Pipe & Filter Pattern 프로파일 네트웍수신 자원사용량 프로파일저장 프로파일 DB 경고 자원사용량저장 자원사용량 DB 20
Hash Indexing & Compression Hash Index Data Compression (1) (2) (3) Files Writer date, byte[] offset w Write Cache 32mb 32mb Addr = 5byte Bucket= 3600*24*2(500ms) Gzip Thread 32mb 32mb date, offset R R R Block=File byte[] Read Cache 21
To-do List 모니터링대상확대 NoSql - Redis - Couchbase - MongoDB RDBMS - PostgreSQL Web Framework - node.js - Play(Scala) - vert.x - Python django - Ruby on Rails Message Queue - RabbitMQ - ActiveMQ 지속적인개발 새로운모니터링 / 분석개념 인터페이스고도화 활용가이드 타툴과연계활용 최종사용자응답모니터링 품질관리 (Transaction Inspection) Application Framework SMS, NMS, 거래추적 22
Thank you 23