전체 글 387

IBM JVM의 Heap fragmentation의 원인과 조치 방법

IBM JDK 1.4를 사용하는 JVM에서 자주 발생하는 Heap fragmentation 때문에 자주 곤란한 경우가 있다.그럼 언제 이와 같은 문제가 발생하는 것이고 원인을 뭘까 고민하던 중 아래 글과 IBM JDK diagnostic 문서를 보면 해결이 가능하다. Java heap fragmentation의 원인들 1. 큰 객체를 할당하는 어플리케이션 (주요원인) --> 어플리케이션 수정2. 많은 pinned, dosed 객체들 --> pCluster, kCluster 값 변경 (pinned 만 적용됨)3. JVM fragmentation defect --> 최산 Java를 사용함4. JNI에서 생성한 객체들 (pinned) --> JNI에서 객체를 제거해주도록 수정5. Xms = Xmx 인 경우, ..

JBoss Security

JBoss Security Java에서 제공하는 보안관련 세부 기능 중 JBoss security를 기준으로 매핑된 내용을 나열하였습니다. 실제로는 이것보다 훨씬 더 많은 내용들이 매핑되지만, 웹 어플리케이션, EJB 등에서 사용하는 보안위주로 다루겠습니다. 구분 JBoss Security 매핑 Cryptography - 웹 서비스 보안(WS-Security)에서 SOAP메세지를 안전하게 송수신 하기 위해 사용합니다. - 프로토콜 수준에서 암호화를 제공하는 SSL에서 사용합니다. - Login Module 적용 시 패스워드 암호화를 위해 사용합니다. Authentication and Access Control - 웹애플리케이션의 인증 시 사용합니다. - EJB의 method permission 적용 시 ..

Oracle JDBC 버전 간단히 확인하기

간혹가다가 Oracle JDBC의 버전을 빠르게 확인해야 하는 경우가 있다. JAVA code를 작성해서 버전을 확인하는 방법도 있지만 시간이 많이 소요되므로 다음과 같이 확인해 보자 1. MAINFEST.MF 파일 확인하기 1) ojdbc6.jar 파일의 압축을 해제한다. 2) META-INF/MAINFEST.MF 파일을 오픈하여 jdbc 버전을 확인한다. Manifest-Version: 1.0 Ant-Version: Apache Ant 1.6.5 Created-By: 1.5.0_51-b10 (Sun Microsystems Inc.) Implementation-Vendor: Oracle Corporation Implementation-Title: JDBC Implementation-Version: 11..

L4의 부하 분산 방법

L4의 부하 분산 방식은 제조사에 조금씩 차이가 있지만 가장 보편적으로 많이 쓰이는 방식을 소개한다. L4 부하 분산 방법에 대해서 알아보자. 1. Round Robin - 연결되어 있는 모든 서버에 동일한 세션을 라우팅 - 모든 서버의 연결 세션 갯수가 거의 비슷하게 됨 2. Hashing - 해쉬 연결 방식은 클라이언트의 IP:PORT를 조합하여 hash 함수를 통해 라우팅 - 세션의 유지가 가능하지만 서버의 연결 세션 갯수에 불균형이 발생 할 수 있음 3. Least Connection - 리스트 커넥션 연결 방식은 Active Connection이 적은 서버로 세션을 라우팅 - 모든 서버의 Active 연결 세션이 거의 비슷하게 됨 4. Weighted Round Robin - 특정 서버에 가중치..

jmap 명령어를 이용항 heap dump 파일 생성하기

JVM의 Heap 메모리 정보 확인 및 Heap dump를 생성하는 명령어Unix/Linux의 경우 kill -3 명령어를 이용하여 JVM의 Heap dump 생성이 가능하지만 Windows의 경우 서비스로 기동되어 있을 경우 command console이 없어 thread dump 및 Heap dump 생성이 어려움이럴 경우 jmap 명령어를 활용하여 Heap dump를 생성할 수 있다. - 필요한 환경 1. UNIX / Linux / Windows : JAVA 6 이상 - 명령어 위치 ( JAVA_HOME은 JDK 설치 폴더를 의미함) $JAVA_HOME/bin/jmap.exe - 명령어 사용법 > jps -v ... JVM의 PID를 확인 ...heapdump 파일 생성 > jmap -dump:fo..

jinfo 명령어를 활용한 JVM 상세 정보보기

JVM의 상세정보를 확인하는 명령어JVM의 버전(마이너), 컴파일 버전, 경로, os 타입, 인코딩 정보 등의 상세 내용을 확인할 수 있는 jinfo 명령어에 대해서 알아보자 - 필요한 환경 1. UNIX / Linux / Windows: JAVA 5 이상 - 명령어 위치 ( JAVA_HOME은 JDK 설치 폴더를 의미함) $JAVA_HOME/bin/jinfo.exe - 명령어 사용법 > jps -v ... JVM의 PID를 확인 ... > jinfo > JVMINFO.txt 예시) > jps -v 1640 jar -XX:+HeapDumpOnOutOfMemoryError -Xms512m -Xmx512m -XX:NewSize=128m > jinfo.exe 1640 > JINFO.txt JINFO.txt 파..

jstack 명령어를 활용한 Thread dump 생성하기

JVM의 thread dump를 생성하는 명령어.Unix/Linux의 경우 kill -3 명령어를 이용하여 JVM의 thread dump 생성이 가능하지만 Windows의 경우 서비스로 기동되어 있을 경우 command console이 없어 thread dump의 생성이 어려움이럴 경우 jstack 명령어를 활용하여 thread dump를 생성할 수 있다. - 필요한 환경 1. UNIX / Linux : JAVA 5 이상 2. Windows : JAVA 6 이상 - 명령어 위치 ( JAVA_HOME은 JDK 설치 폴더를 의미함) $JAVA_HOME/bin/jstack.exe - 명령어 사용법 > jps -v ... JVM의 PID를 확인 ... > jstack > threadump.txt 예시) > jp..

JPS 명령어를 활용한 JVM PID, 파라미터 확인하기

JVM의 Process ID를 확인하는 명령어.Windows에서 "windows 작업관리자"를 이용하여 JVM의 Process ID를 확인하기는 어렵다. 이럴 경우 ProcessExplorer 툴을 설치하여 확인하거나 jps 명령어를 이용하여 확인할 수 있다. - 필요한 환경 1. UNIX/Linux/Windows : JAVA 5 이상 - 명령어 위치 ( JAVA_HOME은 JDK 설치 폴더를 의미함) $JAVA_HOME/bin/jstack.exe - 명령어 사용법 > jps ... JVM의 PID와 프로그램 명 확인 .. > jps -v ... JVM의 PID, 프로그램, 옵션 확인 .. 예시) > jps 1640 Jmeter 3336 Jps > jps -v 7204 Jps -Denv.class.pat..

http to https redirect (tomcat/jboss)

JBoss만 사용하는 시스템인데, http로 들어온 요청을 모두 https로 변경하는 방법은 다음과 같습니다.여러가지 방법이 있는데 앞단에 웹서버가 없는 경우 다음과 같이 설정하시면 됩니다. 1. deploy/jboss-web.deployer/conf/web.xml 에 다음의 설정 security-constraint설정 추가. App_nmae /* GET POST CONFIDENTIAL 2. deploy/jboss-web.deployer/server.xml에 80 포트에 대해서 https로 redirect 하도록 설정- 기본적으로 redirectPort=8443과 같이 설정이 되어 있습니다. 별도로 수정을 안하셔도 됩니다. by hyeons (12월)