3월, 2016의 게시물 표시

apache log analysis script ( sed, awk ) 아파치 Access Log 분석 스크립트

아파치 Access Log 분석 스크립트 목표 날짜 시각  URI 횟수 20160116 00  /MainAction.do?ActionName=RefreshSesseion 101 날짜 시각 IP 횟수 20160116 00 10.10.10.10  5 필요 데이터 이해(공백 기준 구분) 아래는 아파치의 기본 access.log 이다. 10.10.10.10 - - [05/Jan/2016:00:00:31 +0900] "GET /MainAction.do?ActionName=RefreshSesseion&fake=9779425681 HTTP/1. 200 13 다음은 AWK를 통하여 잘라내고자 하는 데이터이다.($1: 공백에 의해 구분되는 첫번째 컬럼) $1 IP 10.10.10.10  $4 시각 [ 16/Jan/2016:00 :00:31 $7 URI /MainAction.do?ActionName=RefreshSesseion &fake=9779425681 $9 응답코드 200 $10 응답데이터바이트 중간 목표 포맷 10.10.10.10  16/Jan/2016:00  /MainAction.do?ActionName=RefreshSesseion 200 수행절차 데이터 필터링 불필요한 데이터를 미리 제거한다.여기서는 테스트,모니터링용 주소 제외 사용자 호출 중심으로 필터링한다 여기서는 .do ( 각종 img등 제외) 주소 단순화  세부 파라메터는 제거한다.(.do?action=abc&data=b ==> .do?action=abc ) 데이터 단순화 및 저장 IP, 날짜시각, URI, 응답코드 날짜 시각 URI 횟수 저장한 파일 읽기 AWK 수행 배열구분자 지정 각 줄에 대하여 count[날짜시각,주소]++ 출력 연월일 시각 URI 횟수 해설 파이프 및 regexp를 사용한 필터링, awk를 사용한 테이블 구

Apache HTTPD KeepAlive, Timeout

먼저,  KeepAlive  On 으로 세팅합니다.  KeepAlive  는 접속 유지 개념으로, 만약 접속중에 다른 이미지를 호출하면 새로운 연결을 만들지 않고 (새로운 쓰레드나 프로세스를 띄우지 않고) 그냥 있는 연결로 이미지를 보여주겠다는 개념인데요  이게 중요한 이유가, <img src=xxx> 인 경우 그때마다 연결을 새로 만들거든요..  KeepAlive  Off 인경우 말입니다.  그런데.. KeepAlive  는 양날의 검인것이,  KeepAlive Timeout 에 적혀 있는 시간이 지날때까지  접속이 안끊깁니다. 즉, 계속 연결이 살아 있으니, 동시접속 한계에 부딪치게 되죠.  따라서  KeepAlive  On  KeepAlive Timeout 2  (2초간 접속을 끊지 않고 기다린다..)  이렇게 설정하는것이 최상입니다. 경우에 따라서는  KeepAlive Timeout 1 이렇게 1초만 설정하기도 하죠.  1초~2초 사이를 줍니다.  1초, 2초의 기준은 사이트를 직접 운영하면서, 스코아 보드를 보면서 셋팅해야 되요. 이정도가 적당하겠구나.. 하구요  그다음 중요한 설정이  Timeout 30  이부분입니다. 아파치 디펄트는 Timeout 300 으로 되어 있는데요  "아무 신호가 들어오지 않더라도 접속을 유지시켜 주는 시간" 을 말합니다.  대형사이트의 경우 Timeout 10 이런식으로 아주 작게 잡습니다.  dos 공격을 방지하기 위해서죠. 

JAVA GC ( Hotspot JVM ) 가비지컬렉션

이미지
JAVA GC ( Hotspot JVM ) 가비지컬렉션 (펌) 아래의 글은 Sun(Oracle?) Hotspot JVM을 기반으로 정리한 내용이다. JVM에서 GC는 크게 Minor GC와 Major GC로 나뉜다. Minor GC는 Young Generation영역을 정리하는 GC이고, Major GC는 Old Generation영역을 정리하는 GC이다. 그리고 Major GC는 Full GC로도 불린다. 하지만 일부 CMS Collector를 설명하는 글에서는 Major GC와 Full GC를 구분하기도 하는 것 같다. Major GC와 Full GC의 명확한 구분은 잘 모르겠다.                       Java Heap Memeory 구조 GC의 종류는 아래와 같다.  =========================================================================================== 1. Serial Collector   - 단일 Thread로 GC 작업을 수행   -  "-XX:+UseSerialGC"  옵션 사용하여 활성화 할 수 있다.    - 요즘 H/W환경에서는 사용할 필요가 없는? GC라고 생각된다.   2. Parallel Collector   - 복수의 Thread로 GC작업을 수행한다    -  "-XX:+UseParallelGC"   옵션을 사용하여 Minor GC 에서 parallel collector를 활성화 할 수 있다.   -  "-XX:+UseParallelOldGC"  옵션을 사용하여 Major GC에서 parallel collector를 활성화 할 수 있다.    - 복수의 Thread를 사용하여 GC를 수행하기 때문에 Serial Collector에 비해서 GC가 빨리 수행된다.   - 최대 성능을 내기 위한 GC라고 생각된다. 3. CMS Collector   - Major

Tomcat Web Application 모니터링 툴 – javamelody 설정 방법

Tomcat Web Application 모니터링 툴 – javamelody 설정 방법(펌) Javamelody( https://github.com/javamelody/javamelody/wiki ) 1. Jar 설정 WEB-INF/lib 내 javamedloy.zip내의 javamelody.jar와 jrobin-x.jar를 복사한다. 내 경우는 maven 을 사용하므로, 기존의 pom.xml에 다음과 같이 dependency를 추가하였다. 1 2 3 4 5 < dependency > < groupId >net.bull.javamelody</ groupId > < artifactId >javamelody-core</ artifactId > < version >1.43.0</ version > </ dependency > 2. web.xml 설정 기존에 실행하던 웹 애플리케이션을 모니터링/분석해야 하므로, web.xml의 내용을 편집한다. 보통 web.xml에서는 선언된 순서로 우선순위를 지니므로, 다른 서블릿 선언보다 위쪽에 다음의 설정을 추가로 기록한다. 1 2 3 4 5 6 7 8 9 10 11 < filter > < filter-name >monitoring</ filter-name > < filter-class >net.bull.javamelody.MonitoringFilter</ filter-class > </ filter > < filter-mapping > < filter-name >monitoring</ filter-name > < url-pattern >/*</ url-pattern > </ filt