2010년 12월 2일 목요일

Unix(linux)cpu, memory 용량 확인

[리눅스 ]
   cpu 갯수 :  cat /proc/cpuinfo|grep processor|wc -l

[솔라리스 ]
   cpu 갯수 :  psrinfo -v|grep "Status of processor"|wc -l

[IBM-AIX ]
    cpu 갯수 : lsdev -C|grep Process|wc -l
    cpu 사양 : lsattr -El proc0

    memory 사양 : lsattr -El sys0 -a realmem

[HP/UX]

   cpu 갯수 :  ioscan -C processor | grep processor | wc -l

2010년 11월 30일 화요일

[WebLogic] Servlet class 를 url 로 바로 호출하기

 웹로직에서 servelt 클래스를 패키지 명으로 바로 호출하고 싶은 경우 web.xml 에 다음과 같은 설정을 추가 해주면 된다.

<servlet>
   <servlet-name>ServletServlet</servlet-name>
   <servlet-class>weblogic.servlet.ServletServlet</servlet-class>
   <load-on-startup>-1</load-on-startup>
</servlet>
<servlet-mapping>
   <servlet-name>ServletServlet</servlet-name>
   <url-pattern>/servlets/*</url-pattern>
</servlet-mapping>

2010년 8월 27일 금요일

[Oralce] WebLogic windows service 로 등록하는 방법

WebLogic Server 에 같이 포함되어 있는 berasvc 프로그램을 이용해서 weblogic 을 service로 등록이 가능한다. 위치는 %WLS_HOME%/servers/bin 아래 beasvc 프로그램이 있다.



[기존방식으로 실행한 경우]

beasvc -install -svcname:"%DOMAIN_NAME%_%SERVER_NAME%" -delay:120000 -javahome:"%JAVA_HOME%" -execdir:"%USERDOMAIN_HOME%" -extrapath:"%WL_HOME%\server\bin" -password:"%WLS_PW%" -cmdline:%CMDLINE%

beasvc -install -svcname:"mydomain_myserver" -delay:10000 -javahome:"C:\bea\jdk142_11" -execdir:"C:\bea\user_projects\domains\mydomain" -extrapath:"C:\bea\weblogic81\server\bin" -password:"weblogic" -cmdline:"weblogic.Server" -log:"D:\temp\test.log"



[ 실제 데이타를 넣어서 실행한경우]

beasvc -install -svcname:"myTestDomain_AdminServer" -delay:10000 -javahome:"C:\bea\jdk150_11" -execdir:"C:\bea\user_projects\domains\myTestDomain" -extrapath:"C:\bea\wlserver_10.0\server\bin" -password:"power11" -cmdline:"startWebLogic.cmd" -log:"f:\temp\test.log"

weblogic.Server



beasvc -install -svcname:"myTestDomain_AdminServer" -delay:10000 -javahome:"C:\bea\jdk150_11" -execdir:"C:\bea\user_projects\domains\myTestDomain" -extrapath:"C:\bea\wlserver_10.0\server\bin" -password:"weblogic" -cmdline:"-verbosegc weblogic.Server" -log:"f:\temp\test.log"


[삭제]

beasvc -remove -svcname:"myTestDomain_AdminServer"



[추가 설명]
cmdline : 에 Java 명령을통해 실행되어 야 하는 명령어 를 넣어야 한다. java option 도 포함해서 실행 스크립트를 추가 해야 한다.

일반 cmd 나 sh 같은 명령어는 실행이 불가능 하다. java 를 통한 실행이기 때문에 java의 option 과 명령라인이 들어 가야 한다.


** 주의 사항 weblogic.Server 가 인식되기 위해서는 classpath에 weblogic.jar 가 포함되어 있어야 한다.

** 비스타에서 실행시 주의 사항

c:\windows\system32\cmd.exe 를 관리자권한으로 실행을 해야 서비스에 등록및 삭제가 된다.

[Oracle] Coherence*web

[Cluster node (weblogic 10.3.3 or later)]

Coherence*web  세션의 범위는 coherence-web-spi.war 와 coherence.jar 의 위치에 의해서 결정된다. (in classloader hierarchy)

  • application server-scoped
    • classpath 에 다음 라이브러리 추가 : coherence.jar, coherence-web-spi.war
    • system classpath에 다음 라이브 러리 추가 : WL_HOME/common/deployablelibraries/active-cache.jar in the system classpath.
      (** active-cache.jar 는 반드시 deployable-libraries folder 에 넣고 사용해야 한다. )
    • weblogic.xml에 다음을 추가 한다.
      <weblogic-web-app>
      ...
          <library-ref>
              <library-name>coherence-web-spi</library-name>
          </library-ref>
      ...
      </weblogic-web-app>
    • (Optional)
  • EAR-scoped
  • WAR-scoped
    • <weblogic-web-app>
      ...
          <library-ref>
              <library-name>coherence</library-name>
          </library-ref>
          <library-ref>
              <library-name>active-cache</library-name>
          </library-ref>
          <library-ref>
              <library-name>coherence-web-spi</library-name>
          </library-ref>
      ...
      </weblogic-web-app>

[Identifying a Coherence Cluster for EAR-Scoped Cluster Nodes]


weblogic.xml
<weblogic-web-app>
...
<coherence-cluster-ref>
    <coherence-cluster-name>
    myCoherenceCluster
    </coherence-cluster-name>
</coherence-cluster-ref>
...
</weblogic-web-app>

[Locking mode]

[Session scope and Session Attribute]

[clean Expired Http Session]

[ActiveCache]

이 기능을 사용 하려면 active-cache.jar 를 /WL_HOME/common/deployable-libraries 폴더에 넣어야 한다.

[Solaris] 명령어 모음

[시스템 모니터링]

  • CPU : mpstat 5
  • Disk I/O : iostat xcn 5
  • Memory : vmstat 5
  • Network : netstat -I 5 (?) netstat -m 5

[그룹및 계정 생성하기]

Group 생성하기
    groupadd -g 100 groupName

User 생성하기
    useradd -u 100 -g 10 -d /export/home/userName -m -s /bin/csh userName


*사용자 계정및 사용자그룹의 ID 중에서 0~99 번까지는 시스템에 특별 계정용으로 예약되어 있음

[Solaris] GUI 부팅 설정 방법

  1. Text모드로 접속을 한 후
    config설정
    #/usr/dt/bin/dtconfig -e ----> 설정 할 때
    #/usr/dt/bin/dtconfig -d ----> 지울 때
  2. config에서 dtlogin.rc 설정
    #/usr/dt/config/dtlogin.rc start ----> 시작
    #/usr/dt/config/dtlogin.rc stop ----> 멈춤
  3. 스타트
    #/usr/dt/bin/dtlogin start
  4. Ctrl+D 로 빠져나오면 자동으로 GUI모드로 부팅된다.

[java] ServletContext - 어플리케이션 내부의 변수 공유 방법

- 한 어플리케이션 내부의 모두 같은 정보를 공유하기 위한 클래스


[설정 방법]

위치 : web.xml

예제 :
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

.....

<context-param>
<param-name>AdminEmail</param-name>
<param-value>admin@gmail.com</param-value>
</context-param>

......

</web-app>


[사용방법]

String adminEmail = getServletContext().getInitParameter("AdminEmail");

{OR}

ServletContext context = getServletcontext();
String adminemail = context.getInitParameter("AdminEmail");

[java]ServletConfig 서블릿 클래스간의 변수 공유 방법

- 하나의 서블릿 클래스에서 같은 설정 정보를 공유하기 위한 클래스


[설정 방법]
위치 : web.xml

예제 :
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

.....
<servlet>
    <servlet-name>Tester</servlet-name>
    <servlet-class>com.example.Tester</servlet-class>
    <init-param>
        <param-name>AdminEmail</param-name>
        <param-value>admin@gmail.com</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>Tester</servlet-name>
    <url-pattern>/Tester.do</url-pattern>
</servlet-mapping>

......

</web-app>



[사용방법]

String adminEmail = getServletConfig().getInitParameter("AdminEmail");

{OR}

ServletContext context = getServletConfig();
String adminemail = context.getInitParameter("AdminEmail");

2010년 8월 26일 목요일

java.net.Inet4AddressImpl.getLocalHostName(Native Method) 에러 테스트

Java 어플리케이션(WebLogic등) 을 실행시 기동 하는데 시간이 오래 걸리는 경우가 있다. 이때 thread dump 를 발생 시켰을때 
    java.net.Inet4AddressImpl.getLocalHostName(Native Method)
부분에서 hang 이 걸리는 경우 가 있는데 이 부분을 테스트 하기 위한 간단한 java 프로그램이다.

이런경우 host 파일의 설정이나 어떤 이유에서든 host명을 제대로 인식하지 않아서 발생하는 경우 이다.


[실행방법]$>uname -a
$>javac test/TestHostName.java
$>java -Djava.net.preferIPv4Stack=true TestHostName


[java source]
import java.net.InetAddress;

public class TestHostName {

    public static void main(String[] args) {
        try {
            long start = System.currentTimeMillis();
            InetAddress addr = InetAddress.getLocalHost();
            long stop = System.currentTimeMillis();
            System.out.println("Found: " + addr.getHostAddress() + " in: " + (stop - start) + " ms.");
        } catch (Exception e) {

        e.printStackTrace();

    }
}

}

Xmanager를 사용하기 위한 unix 환경 설정 방법

1.접속계정 profile에 " export DISPLAY=remote IP:0.0 " 추가
2. 서버의 root 계정으로 ' xhost +' 실행

ex)
1. export DISPLAY=192.168.0.100:0.0
2. root$>xhost +

Windows NetSh 예제

네트워크 환경이 자주 바뀌는 경우 많이 사용하는 설정을  배치 파일 형태로 만들어서 쉽게 설정 변경이 가능하다.
이때 사용되는 명령어가  netsh 이다.

[example] : Office.cmd


 netsh interface ip set address name="eth0" static 192.168.0.199 255.255.255.0 192.168.0.253 1
netsh interface ip set dns "eth0" static 168.126.63.1
@rem netsh interface ip set dns "로컬 영역 연결" static 210.205.122.161
@rem netsh interface ip set wins "Local Area Connection" static 192.168.0.200
@rem netsh interface ip set dns "Local Area Connection" dhcp
netsh interface ip set address name="무선 네트워크 연결" dhcp
netsh interface ip set dns "무선 네트워크 연결" dhcp
@rem netsh interface ip set address name="로컬 영역 연결" static 192.168.0.199 255.255.255.0 192.168.0.253 1

java classloader 동작 방식

[ClassLoader 의  loading 되는 순서]

 
  1. bootstrap classloader ( JVM 실행시 실행되어 Object class 를 로딩함)
  2. system classloader
  3. common classloader
  4. application classloader (어플리케이션 단위로 클래스 로더가 생성됨 -> 따라서 어플리케이션사이에 클래스 공유를 안함)
  5. jspfile classloader (JSP 파일마다 하나씩 생성)

[ClassLoader 의 호출관계]

Class가 필요한 경우 자신이 속한 ClassLoader 에게 Class를 호출하게 된다.
그런 경우 ClassLoader는 자신의 부모(상위) ClassLoader에게 해당 클래스를 가지고 있는지 확인 한다.
만약 부모 ClassLoader에도 해당 클래스가 없다면 system ClassLoader 까지 호출이 올라 가게된다.
System ClassLoader 에게도 해당 클래스가 없는경우 자신의 범위에 있는 Class Path 에서 해당 Class가 있는지 확인하고 있으면 Loading 하고 클래스를 리턴한다.
만약 자신의 범위의 해당 Class가 없으면 ClassNotFoundException을 발생시킨다.
부모에게서 ClassNotFoundException 을 받은경우 자신의 범위의 Class Path 에서 해당 클래스가 있는지 확인을 하게 된다.
이런 방식으로 처음 요청한 ClassLoader 까지 돌아 오게 된다.


[WebLogic의 Class 찾는 순서]
  1. Domain 폴더의 lib 폴더 (  CLASSPATH 환경변수)
  2. WEB-INF/classes
  3. WEB-INF/lib

2010년 8월 24일 화요일

Unix Shell 계열

[OS 별 기본 Shell]

  • 솔라리스 : C shell
  • HP-UX : Bourne Shell(sh)
  • Linux : Bourne Again Shell (bash)
** BSD 계열은 보통 C Shell 이고  Sys V 계열은 본쉘(콘쉘) 이다.

[Shell 의 발전]
  • 본쉘을 확장시켜 GNU의 Bourne Again Shell(bash)이 만들어 졌다.
  • ksh은 Bourne Shell 을 과 호환되면서 C Shell의 좋은기능을 추가하여 만든쉘 ( pdksh 라는 공개버젼이다. )
  • tcsh 는 C Shell 을 기반으로 Command Line 에서 programmable 하고 Command-line 편집이 가능하도록 확장된 버젼( csh 의 공개버젼)
  • Bourne Shell(sh) < Korn Shell (ksh) < Bourne Again Shell (bash) < ZShell (zsh)
  • C Shell (csh) < TC Shell (tcsh)

Network Switch

Switch 는 Switching 즉 패킷을 어느쪽으로 보내야 하는것에 대한 처리를 해주는 장치이다.



L2
  • Mac 정보(Mac Table)로 Switching

L3
  • IP 정보(Routing Table)로 Switching

L4
  • IP + Port 정보(Session or Connection)로 Switching (기본적으로 포로토콜을 분석해서 처리 한다. http, smtp, ftp 등)
  • 세션관리
  • 서버/방화벽 로드발란싱
  • 네트워크 서비스 품질 보장

L7
  • Application 데이터(Contents)로 Switching
  • L4의 서비스 단위 로드발란싱의 한계를 극복하기 위해 포트 + 데이터 페이로드 패턴을 이용한 패킷 스위칭 (e-mail 내용/ 제목, URL등 )
  • Connection Polling(시스템 부하 감소)
  • Traffic Compression(컨텐츠 압축 전송)
  • 보안 기능(DOS/SYN 공격방어, CodeRed/Nimda등 감염 패킷 필터링 및 네트워크 자원 독점을 막을수 있다.)
** 기본적으로 상위 레이어 스위치는 하위 레이어 스위치의 기능을 처리가 가능하다.


[L4 와 L7 로드발란서 비교]

  • 공통점 : 로드 발란서로 들어온 패킷을 적절한 목적지로 전송 ( 기본기능)
  • 차이점 : 패킷을 분석하고 목적지를 선택하는 방식에 차이가 있슴.


[Sticky session]
  • L4 스위치에서는 클라이언트에서 처음 접속한 서버에 계속 연결해주는 Sticky option이 있다. (기존 사용자의 세션 상태를 timeout(Max 60분) 시간 내에는 계속 유지 가능하다. )
  • 웹어플리케이션 세션 유지에 주로 사용
문제점
  • L4의 로드 밸런싱이 제대로 동작하지 않을 수 있다.
  • 프록시 서버를 사용하는 경우 문제가 발생한다. ( 프록시 서버를 사용하는 경우 회사 내부에서 외부로 나갈때 각각 클라이언트의 IP가 아닌 프록시 서버의IP를 가지고 L4에 접속 하게 된다. 이런 경우에 로드가 한곳으로 집중되는 현상이 발생한다. )

대안
  • 어플리케이션에서 쿠키나 보안 모듈등으로 해결은 가능하나 성능및 가격의 문제점이 있다.
  • L7 스위치를 사용한다. (cost는 상승하나 추가 적인 개발이 필요 없다. )
    • URL 스위칭 : 이미지나 정적컨텐츠를 분리해서 스위칭 한다.
    • Cookie 스위칭 : http header의 cookie 값에 따른 특정 string을 기준으로 부하를 분산한다.
    • Content 스위칭 : 최근 많이 사용되는 방식이다. http header의 모든 필드를 기반으로 한다.


[Reference]

http://www.freeism.co.kr/tc/657
http://blog.naver.com/youngchanl?Redirect=Log&logNo=110004600784

[Shell] 특정 폴더의 jar 모두 classpath 에 추가하기

Jar 를 Classpath에 추가 해야 하는 shell 에 다음과 같이 추가 한다.



for filename in [Jar가 있는경로]/*.jar
do
    CLASSPATH=${CLASSPATH}:$filename
done

[Shell] Stdout log 잘라내는 shell

#!/usr/bin/sh

# 사용시 주의 사항 stdout 로그를 만드는 스크립트가 >> 형태로 되어 있어야만된다.
# 만약 > 형태로 존재 하면 사용하던 파일사이즈만큼 null을 넣고 그 아래 로그가 이어져 남게 된다.

LOG_DIR=/WLS/bea/user_projects/domains/mydomain
BACKUP_DIR=${LOG_DIR}/backup
STDOUT_LOG_NAME=Admin.out
FILE=${LOG_DIR}/${STDOUT_LOG_NAME}
BACKUP_FILE=${BACKUP_DIR}/${STDOUT_LOG_NAME}.`date +"%Y%m%d_%H%M"`

cp $FILE $BACKUP_FILE
> $FILE

echo "*************************************************"
echo "Done file backup from ${FILE} to ${BACKUP_FILE}"

Unix 사용 tip 모음

[command line style 변경]
    bourn shell(sh) 계열은 커맨드 라인 스타일을 변경 가능 하다.
    vi style 로 변경 : $> set -o vi


[UNIX 특수키 적용법 ]

    $> stty erase "^H" kill "^U" intr "^C" eof "^D"


[UNIX 에서 화면 내용을 txt 파일로 저장하는 방법]

    $>script screen.txt
    종료방법 : CTRL+D
    * GUI 내용은 저장이 안됨

OS 시스템 정보 확인 명령어 모음

  • Windows
    • cup 정보
      • Windows 작업관리자 (ctrl + shift + esc)
    • Memory 정보
      • Windows 작업관리자 (ctrl + shift + esc)
    • IP 정보
      • ipconfig
    • 포트 정보
      • cmd> netstat -an | moew
  • HP-UX
    • OS 정보
      • $> uname –a
    • cup 정보
      • CPU의 개수 확인
        $> ioscan -fknC processor |  grep processor  | wc –l
        * /usr/sbin 밑에 존재하고 root권한으로 실행해야 함.
      • Memory 정보
        $> dmesg
        * 하단의 Memory Information : Physical: ○○○○○○○ Kbyte 에서 확인할 수 있다
        * root권한으로 실행해야 함.
        * 참조 : 아래와 같이 두 명령어를 입력해도 확인할 수 있다.
        $> value=`dmesg | grep Physical | grep Kbytes |awk '{print $2}'`
        $> expr $value / 1024
      • IP 정보
        $> vi /etc/rc.config.d/netconf
      • 포트 정보
        $> netstat -an |grep {port number}
      • 디스크 용량정보
        $> df -k
        *sam을 쓰면 확실한 정보를 얻을 수 있지만 root 권한에서만 사용할 수 있다.
  • Solaris
    • OS 정보
      • $> uname -a
    • cup 정보
      • Cpu의 개수 확인
        • $> psrinfo | wc –l
      • CPU의 정보 확인 및 메모리확인
        • $> prtconf  | more
    • Memory 정보
      • $> prtconf | more
    • IP 정보
      • $> ifconfig –a
    • 포트 정보
      • $> netstat -an | grep {port number}
    • 디스크 용량
      • $> df –k
  • AIX
    • cup 정보
      • $> prtconf  | more
      • cpu 사양
        • $> lsattr -El <cpuid>
    • memory
      • $> lsattr -El sys0 -a realmem
    • IP 정보
      • $> ifconfig –a
      • $> prtconf | more
    • 포트 정보
      • $> netstat -an |grep {port number}
    • 디스크 용량정보
      • $> df -k
  • Linux
    • cup
      • $> cat /proc/cpuinfo
    • 디스크
      • $> df -k
  • Cent Os
    • Version
      • $> cat /etc/redhat-release

MimeMapping 설정하는곳

[Weblogic]

    Property Location : (domain) -> Configuration -> Web Applications ->Mime Mapping File : ./config/mimemappings.properties
   
    Example:
        htm=text/html
        gif=image/gif
        jpg=image/jpeg


[Web Application]

Location : web.xml
Example:
    <mime-mapping>
        <extension>Z</extension>
        <mime-type>application/x-compress</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>z</extension>
        <mime-type>application/x-compress</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>zip</extension>
        <mime-type>application/zip</mime-type>
    </mime-mapping>
    <mime-mapping>
        <extension>hwp</extension>
        <mime-type>application/x-hwp</mime-type>
    </mime-mapping>


[Apache]

    Location : config/mime.types

[java] Thread dump 생성 방법

[Kill -3 [PID} 명령어를 낼 수 있는 방법 (UNIX, LINUX용)]

    기본적으로 stdout 으로 Thread Dump 가 출력된다.
    ** 단 Aix 의 경우는 별도의 파일로 생성되고 stdout 으로  생성된 파일의 경로및 이름이 나온다.


[Ctrl + Break방법(WINDOW 전용) ]
    이 방법은 윈도우에서만 사용가능한 방법으로 cmd 창으로 바로 출력된다. Thread dump를 생성하기 전에 cmd 창의 속성에서 layout 값의 Height 값을 3000 정도로 설정한다.


[weblogic.Admin util을 사용하는 방법(OS별 공용)]
    java -cp {weblogic.jar classpath} weblogic.Admin -url {해당 웹로직 IP:Port} -username {username} -password {password} THREAD_DUMP

    ex > java –cp /bea/wlserver_10.0/server/lib/weblogic.jar weblogic.Admin –url 100.100.11.15:7001 -username weblogic -password weblogic THREAD_DUMP

[JAVA] DataSource 사용시 java:comp/env/ JNDI 접두어처리

Java 에서 Datasource 를 사용하여 개발시 JNDI 이름에 "java:comp/env/" 접두사를 사용하는 경우가 있다.  이렇게 개발된 어플리케이션을 다른  WAS 로 이전시에 해당 접두어가 없어져야 하는 문제가 생기는 경우가 있다.  이때 소스를 수정하지 않고 사용 하려면 아래와 같이 web.xml 에 설정을 추가 해 주면 된다.

<resource-ref>
<description>DB Connection</description>
<res-ref-name>[JNDI NAME]</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>


** WebLogic 의 경우 DataSource 를 사용하려면 접두어가 없이 JNDI Name 를 사용하거나 t3://localhost/[JNDI] 이런 형식으로 사용해서 한다.

[WebLogic] Oracle WebLogic Server Install trouble shotting

[Temp 용량 부족으로 에러 발생]
    설치시 Temp 용량이 부족해서 오류가 나는경우 아래와 같은 옵션을 사용해서 tmp 폴더의 위치를 변경한다.


    Option : -Djava.io.tmpdir=/weblogic/tmp


[OutOfMemory 에러 발생]

    OutOfMemory : Xmx 옵션을 준다

    Option : -Xmx1024m


[Mode 설정]
    mode 설정 : GUI 기반에서 console 모드로 install 하고 싶을 때 사용한다.

    Option : -mode=console


[Log 설정]
    log 설정 : 오류 났을 경우 설정하여 어느 위치에서 오류 났는지 확인 가능하다.

    Option : -log=/usr/


[종합 예제]
    java -Xmx1024m -Djava.io.tmpdir=/usr/weblogic/tmp -jar server101_generic.jar -mode=console -log=/usr/weblogic/install.log

2010년 8월 23일 월요일

[Java]Java EE Application type

[JAR (Java ARchive)]
    Java Lib , EJB : 클래스와 패키지를 묶는다.

    폴더 구조

    /                                                  (*.class, 패키지 폴더)
    /META-INF                               
        - ejb-jar.xml                         ( EJB 의 경우 포함)        - weblogic-ejb-jar.xml        (WebLogic의 경우)




[WAR (Web ARchive)]
    Web Application

    폴더 구조

    /                                                   (*.jsp, 등 웹 파일)
    /WEB-INF
        - web.xml
        - weblogic.xml
    /classes                                       (*.class)
    /lib (*.jar)
    /tld                                               (* 옵션, 태그라이브러리 관련)


[EAR (Enterprise ARchive)]
    Enterprise Application , EJB jar + WAR 구조

    폴더구조
   
    /
    /META-INF
        - application.xml
    /JAR, WAR 가 이곳에 들어 간다. (폴더 형태로 들어가도 상관없다.)


[RAR (Resource ARchive)]

[Java Link] Java 관련

[IBM JVM]


    IBM java diagnostics
        - http://publib.boulder.ibm.com/infocenter/javasdk/v5r0/index.jsp?topic=/com.ibm.java.doc.diagnostics.50/diag/welcome.html

http://www.ibm.com/developerworks/aix/library/au-JavaPart1.html

http://www.ibm.com/developerworks/aix/library/au-JavaPart2.html


    Getting more memory in AIX for your Java applications
        - http://www.ibm.com/developerworks/systems/articles/aix4java1.html

http://javagosu.tistory.com/5






[SUN JVM]
    option list
        - http://blogs.sun.com/watt/resource/jvm-options-list.html

Oracle Database Management (startup, stop)

[Oracle Startup]


Version : 10g R1

$>lsnrctl start
$>dbstart
$>sqlplus / as sysdba
SQL> startup



[Oracle Stop]

Version : 10g R1

$>dbshut
$>sqlplus / as sysdba
SQL> shutdown immediate
SQL> exit
$>lsnrctl stop

Oracle Database cursor

[커서의 정의]

  http://en.wikipedia.org/wiki/Cursor_(databases)


[커서 사이즈 가이드]


인스턴스수 * 커넥션수 * Statement Cache Size Count(WebLogic 파라메터) = gide Cursor count
현재 가이드된 숫자 보다 커서 수는 더 크게 잡아야 한다.
그리고 커넥션의 수를 모두 사용 가능하도록 DBA에게 확인을 해야 한다.

[커서 관련 쿼리]

  1. 프로세스당 커서수
    SELECT SID, COUNT (SID) "cursor"
    FROM v$open_cursor
    WHERE user_name = 'KOMIS'
    GROUP BY SID
    ORDER BY COUNT (*) DESC
  2. SQL문당 사용하는 커서수
    SELECT sql_text, COUNT (SID) cnt
    FROM v$open_cursor
    WHERE user_name = 'KOMIS'
    GROUP BY sql_text
    ORDER BY cnt DESC

[Oracle Link] Oracle Product Support

Oracle WebLogic
  http://download.oracle.com/docs/cd/E13196_01/platform/suppconfigs/index.html



Oracle Coherence
  http://wiki.tangosol.com/display/COH/Oracle+Coherence+Knowledge+Base+Home


WebLogic plugin Option
    http://download.oracle.com/docs/cd/E12840_01/wls/docs103/plugins/plugin_params.html#wp1155314

[network] 퍼포먼스 측정에 관한 용어 정리

  1. 처리량 (Throughput) :서버와 클라이언트 사이에 처리되는 트래픽 양을 실시간으로 측정한 양이다.  보통 Gbps 단위를 사용한다. 10Gbps(Gbit/s)의 트래픽을 처리 하는 장비라면 In/Out 의 합이 초당 10Gbps의 트래픽을 처리 한다고 보면된다. 보통 장비 업체의 경우 In/Out 을 구분하지 않고 사용하시만 In/Out 을 구분해야 정확한 성능이 판단 가능하다. 일반적으로 웹서비스를 하는 경우 In 보다 Out이 훨씬 많다.(적게는 수배에서 수십배에 이른다.) 따라서 In/Out 중에서 트래픽이 많은 쪽을 기준으로(보통 Out) 단방향 처리량이 근접해야 한다.
  2. CPS (Connection Per Second) : L4 에서 사용하는 가장 대표적인 성능 측정 단위로 초당 동시 커넥션 처리 숫자 이다. 일반적으로 클라이언트가 LoadBalancer 로 접속하고 이를 특정 서버로 분산한후 다시 세션을 끊는 과정을 1CPS 로 봅니다. 100CPS 라 함은 초당 100개의 커넥션을 동시에 처리한다고 생각하면 됩니다.
  3. TPS (Transaction per Second) or RPS(Request per Second) : L7 에서 사용하는 대표적인 성능 측정 단위로 동시 커넥션 (Max concurrent Connection ) : 동시에 연결된 TCP 세션을 유지 하는 최대 수 Http v1.0 에 비해 Httpv1.1은 TCP 세션 하나를 지속적으로 수행하므로 한번 성립된 세션을 오래 지속할 필요가 있다. 이 성능은 프로세스나 커널에 부착된 메모리의 양에 의존적이다. (무한대로 까지 지원하는 경우는 메모리를 사용하지 않는 스테이트리스 로드밸런싱 알고리즘(해싱... )을 적용한 경우이다.) L7 에서는 TPS 나 RPS (Request per Second) 를 대표적인 성능 측정 단위로 사용한다.




[부연설명]

** 1CPS (L7의 경우는 형태가 달라 진다. )
              Client -----------(LB)----------- Server
Session Setup ----------- SYN ------------>
                     <-------- SYN ACK ----------
                      ----------- ACK ------------>
Get/Response ---------- GET -------------->
                         <------- Response ---------
Session Close ----------- FIN -------------->
                        <------- FIN ACK ------------
                       ----------- ACK ------------->

L7의 경우 통신 방식 Delay Binding을 사용한다.
             Client --------(LB)---------- Server
Session Setup -------- SYN -------->
                        <----- SYN ACK -----
                        -------- ACK -------->
Get/Response -------- GET -------->
                         ---------SYN-------->
                        <------SYN ACK-----
                        --------- ACK ------->
                        --------- GET -------->
                        <------ Response -----
                        <------ Response -----
         (반복 ~) --------- GET ------->
                         --------- GET ------->

                        <------ Response -----

        (~ 반복) <------ Response -----

Session Close -------- FIN --------->
                        <---- FIN ACK -------
                        -------- ACK -------->





[Reference]

** http://cafe.naver.com/loadbalancer.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=32

** http://en.wikipedia.org/wiki/Bit_rate