문자열 길이
string=abcd
echo ${#string} #4
echo `expr length $string` #4
echo `expr "$string" : '.*'` #4

2007/11/29 20:08 2007/11/29 20:08

RedirectMatch ^/([^./]+)$ /check.php?id=$1

이 설정의도는

/abc ---> /check.php?id=abc (redirect 의도)
/ccc ---> /check.php?id=ccc (redirect 의도)
/abc/ ---> /abc/
/abc.php ---> /abc.php

이와 같은 결과가 되도록 설정했지만 애석하게도 제대로 Redirect
되지 않습니다.
이유는 아파치의 Redirect 는 ? 문자가 인코딩(%3f)되어 넘어가기
때문에 PHP 파일에서는 요청쿼리로 해석하지 않고 완전한 하나의
파일로 인식하기 때문입니다.

실제로 첫번째 redirect 결과는

/abc ---> /check.php%3fid=abc (redirect 의도 실패)

이렇게 넘어가서 404 에러를 내게 됩니다.

해결방법은 ?(쿼리)를 사용하지 않고 PATH_INFO 환경변수가 생기도록
다음과 같은 방법을 사용하는것이 좋습니다.

권장설정)

RedirectMatch ^/([^./]+)$ /check.php/id=$1
or
RedirectMatch ^/([^./]+)$ /check.php/$1
or
RedirectMatch ^/([^./]+)$ /check/id=$1
or
RedirectMatch ^/([^./]+)$ /check/$1

sample>
RedirectMatch /v/(.*)\.swf$ http://www.maxpd.com/player/player.swf?videoId=$1

2007/10/17 09:20 2007/10/17 09:20

* Sun Microsystyems의 자바 HotSpot VM은 힙을 세 개의 영역으로 나누고 있다.
 힙의 세 영역은 다음과 같다:
 1) Permanent space: JVM 클래스와 메소드 개체를 위해 쓰인다.
 2) Old object space: 만들어진지 좀 된 개체들을 위해 쓰인다.
 3) New(young) object space: 새로 생성된 개체들을 위해 쓰인다.

* Heap layout 할당에 영향을 주는 스위치들
명령행 스위치 설명
-------------|-------
-Xms=[n]  최소 heap size
-Xmx=[n]  최대 heap size
-XX:PermSize=[n]  최소 perm size
-XX:MaxPermSize=[n]  최대 perm size
-XX:NewSize=[n]  최소 new size
-XX:MaxNewSize=[n]  최대 new size
-XX:SurvivorRatio=[n]  New/survivor 영역 비율 
-XX:newratio=[n]  Old/new 영역 비율. HotSpot 클라이언트 VM은 8, HotSpot 서버 VM은 2.
-XX:TargetSurvivorRatio=[n]  GC동안 비울 생존자 수용 가능량 퍼센티지 (capacity percentage.) 초기값은 50%

* New Generation 메모리 할당 공식
   Eden = NewSize - ((NewSize/(SurvivorRatio + 2)) * 2)
   From space = (NewSize - Eden)/2
   To space = (NewSize - Eden)/2
* Old Generation 메모리 할당 공식
   Old = Xmx - MaxNewSize

* GC한 상태의 Heap메모리 정보출력
jdk1.4에서 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC 

* 정적페이지가 많을 때
-Xms418m -Xmx418m 
-XX:PermSize=1024m 
-XX:MaxPermSize=1024m 
-XX:NewSize=290m 
-XX:MaxNewSize=290m 
-XX:SurvivorRatio=3 

* 동적인 페이지가 많을 때
-Xms1024m -Xmx1024m 
-XX:PermSize=128m 
-XX:MaxPermSize=128m 
-XX:NewSize=800m 
-XX:MaxNewSize=800m 
-XX:SurvivorRatio=4 

-Xms384m -Xmx384m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=3 

set CATALINA_OPTS=-Xms384m -Xmx384m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m -XX:MaxNewSize=128m -XX:SurvivorRatio=3


---------------------------------------------------------------------------



kol:/ero/bin>cat tomcat_startup.sh
#!/usr/bin/ksh
 
. /ero/bin/ero.env
 
export CATALINA_OPTS="-server -Xms4096M -Xmx4096M -XX:PermSize=64M -XX:MaxPermSize=64M -Xnoclassgc -XX:NewSize=1024M -XX:MaxNewSize=1024M -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=50 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC"
 
# -Xms4096M                             : 최소 heap 크기
# -Xmx4096M                             : 최대 heap 크기
#                                      
# -XX:PermSize=64M                      : 코드영역(class로딩장소) 최소값
# -XX:MaxPermSize=64M                   : ..                      최대값
# -Xnoclassgc                           : ..                      에 대해 GC를 수행하지 않음
#                                      
# -XX:NewSize=1024M                     : new 영역 최소 1G 확보
# -XX:MaxNewSize=1024M                  : ..       최대  ..
#                                      
# -XX:+UseParNewGC                      : 멈춤을 최소로하는 new영역 GC 방법사용
# -XX:ParallelGCThreads=4               : GC를 동시 수행하는  thread갯수
#                                      
# -XX:+UseConcMarkSweepGC               : 멈춤을 최소로하는 old 영역 GC 방법사용
# -XX:CMSInitiatingOccupancyFraction=50 : old영역이 50% 이상 사용되면 GC 수행

2007/10/17 09:17 2007/10/17 09:17