프록시 클라이언트, Proxy Server, 원래 서버 및 네트워크를 포함하여 다양한 요소가 Proxy Server 환경의 성능에 영향을 줍니다. 이 부록에서는 Proxy Server 성능을 향상시킬 수 있는 조정 작업에 대해 설명합니다.
이 부록은 고급 관리자 전용입니다. 서버를 조정하는 경우 변경하기 전에 항상 구성 파일을 백업해야 합니다.
이 부록은 다음 내용으로 구성되어 있습니다.
이 절에서는 Proxy Server 성능 분석 시 고려해야 할 일반적인 사항에 대해 설명합니다.
이 절은 다음 내용으로 구성되어 있습니다.
액세스 로깅을 비활성화하면 Proxy Server의 성능을 향상시킬 수 있습니다. 그러나 Proxy Server에 액세스하는 사용자와 요청 중인 페이지를 직접 확인할 수 없게 됩니다.
obj.conf 파일의 다음 지시문을 주석 처리하여 Proxy Server 액세스 로깅을 비활성화할 수 있습니다.
Init fn=“flex-init” access=“$accesslog” format.access=“%Ses->client.ip% - %Req->vars.auth-user% [%SYSDATE%] \\”%Req->reqpb.clf-request%\\“ %Req->srvhdrs.clf-status% %Req->srvhdrs.content-length%”...AddLog fn=“flex-log” name=“access”
기본적으로 Proxy Server는 사용자 및 그룹 인증 결과를 ACL 사용자 캐시에 캐시합니다. magnus.conf 파일에서 ACLCacheLifetime 지시문을 사용하여 ACL 사용자 캐시가 유효한 시간을 제어할 수 있습니다. 캐시에 있는 항목이 참조될 때마다 시간이 계산되고 ACLCacheLifetime과 비교됩니다. 항목의 시간이 ACLCacheLifetime과 같거나 크면 해당 항목은 사용되지 않습니다.
ACLCacheLifetime의 기본값은 120초이므로 Proxy Server가 2분 동안 LDAP 서버와 동기화되지 않을 수 있습니다. 값을 0으로 설정하면 캐시가 꺼지고 사용자가 인증할 때마다 Proxy Server가 강제로 LDAP 서버를 쿼리합니다. 이 설정은 액세스 제어를 구현하는 경우 Proxy Server의 성능에 부정적인 영향을 줍니다. ACLCacheLifetime 값을 크게 설정할 경우 이 설정으로 Proxy Server가 LDAP 서버를 강제로 쿼리하기 때문에 LDAP 항목을 변경할 때마다 Proxy Server를 다시 시작해야 합니다. 따라서 LDAP 디렉토리가 자주 변경되지 않는 경우에만 큰 값으로 설정하십시오.
ACLUserCacheSize는 캐시에 보관할 수 있는 최대 항목 수를 구성하는 magnus.conf 매개 변수입니다. 기본값은 200입니다. 새 항목은 목록의 시작 부분에 추가되며 이 목록의 끝에 있는 항목은 캐시가 최대 크기에 도달하면 재활용되어 새로운 항목을 허용합니다.
또한 ACLGroupCacheSize 매개 변수를 사용하여 사용자 항목당 캐시할 수 있는 최대 그룹 구성원 수를 설정할 수 있습니다. 기본값은 4입니다. 그룹의 사용자가 구성원이 아닌 경우 캐시되지 않기 때문에 요청 시마다 여러 LDAP 디렉토리가 액세스됩니다.
서버 소켓에서 전송 버퍼(SndBufSize) 및 수신 버퍼(RcvBufSize)의 크기를 지정할 수 있습니다. 이러한 매개 변수는 magnus.conf 파일에서 구성할 수 있습니다. 권장되는 값은 다양한 UNIX 및 Linux 운영 체제에 따라 다릅니다. 이러한 매개 변수를 제대로 설정하려면 운영 체제 설명서를 참조하십시오.
magnus.conf 파일에서 AcceptTimeout 매개 변수를 사용하여 연결을 종료하기 전에 서버가 클라이언트로부터 데이터가 도착할 때까지 기다리는 시간(초)을 지정할 수 있습니다. 데이터가 지정된 시간까지 도착하지 않으면 연결이 종료됩니다. 이 매개 변수는 기본적으로 30초로 설정됩니다. 대부분의 환경에서 이 설정을 변경할 필요가 없습니다. 이 매개 변수를 기본값보다 작게 설정하여 스레드 수를 늘릴 수 있지만 연결이 느린 사용자의 경우 연결이 끊길 수도 있습니다.
server.xml() 파일의 LOG 태그에서 로그 수준 속성을 높이면 서버가 오류 로그에 더 많은 정보를 생성하고 저장합니다. 그러나 항목을 기록하면 해당 파일이 성능에 영향을 줍니다. 문제를 디버깅하는 동안에만 로깅을 늘리고 문제 해결 모드가 아닌 경우 로깅을 최소화합니다.
SSL을 활성화하면 Proxy Server의 개인 정보와 보안 수준은 강화되지만 패킷의 암호화 및 복호화가 오버헤드의 원인이 되기 때문에 성능에 영향을 줍니다. 하드웨어 가속기 카드에 대한 암호화 및 복호화 처리 로드를 줄이는 것이 좋습니다.
Proxy Server 캐시는 RAM(Random Access Memory)에 저장되지 않습니다. 파일에 대한 액세스는 캐시에서 문서를 추출할 때마다 파일 시스템에서 수행됩니다. Solaris 파일 시스템 캐싱을 사용하여 Proxy Server 캐시를 메모리에 사전 로드하는 것이 좋습니다. 그러면 캐시된 파일에 대한 참조가 파일 시스템이 아닌 메모리에서 추출됩니다.
시간 초과는 서버 성능에 상당한 영향을 줍니다. Proxy Server에 대해 최적의 시간 초과를 설정하면 네트워크 자원을 유지하는 데 도움이 됩니다.
다음과 같이 인스턴스별 SAF(Server Application Function) 두 개와 전역 매개 변수 한 개를 사용하여 Proxy Server 내에서 시간 초과 값을 구성할 수 있습니다.
init-proxy() 함수는 Proxy Server의 내부 설정을 초기화합니다. 이 함수는 Proxy Server가 초기화되는 동안 호출되지만 값이 제대로 초기화되었는지 확인하기 위해 obj.conf 파일에서도 지정해야 합니다.
이 함수의 구문은 다음과 같습니다.
Init fn=init-proxy timeout=seconds timeout-2=seconds
이전 예에서 다음 매개 변수를 init-proxy SAF의 Proxy Server 시간 초과 설정에 직접 적용할 수 있습니다.
시간 초과(프록시 시간 초과)– 프록시 시간 초과 매개 변수는 유휴 연결을 중단하기 전에 기다리는 시간을 서버에 알려 줍니다. 프록시 시간 초과 값을 높이면 중요한 프록시 스레드가 커밋되어 클라이언트가 잠재적으로 오랫동안 중단됩니다. 시간 초과 값을 낮추면 데이터베이스 쿼리 게이트웨이와 같이 결과를 생성하는 데 시간이 오래 걸리는 CGI 스크립트가 중단됩니다.
서버에 가장 적절한 프록시 시간 초과를 결정하기 위해 다음 사항을 고려합니다.
Proxy Server가 많은 수의 데이터베이스 쿼리 또는 CGI 스크립트를 처리합니까?
Proxy Server가 지정된 시간에 프로세스가 여분으로 사용할 수 있는 충분한 수의 요청을 처리합니까?
이러한 질문에 대한 답이 예인 경우 프록시 시간 초과 값을 높게 결정할 수 있습니다. 권장되는 최대 프록시 시간 초과 값은 1시간입니다. 기본값은 300초(5분)입니다.
Server Manager의 Preferences 탭 아래에서 Configure System Preferences 페이지에 액세스하여 프록시 시간 초과 값을 보거나 수정할 수 있습니다. 이 매개 변수는 프록시 시간 초과로 참조됩니다.
timeout-2(중단 이후 시간 초과)– 중단 이후 시간 초과 값은 클라이언트가 트랜잭션을 중단한 후 캐시 기록을 계속하는 시간을 Proxy Server에 알려 줍니다. 즉, Proxy Server가 문서 캐싱을 거의 완료하고 클라이언트가 연결을 종료한 경우 서버는 중단 이후 시간 초과 값에 도달할 때까지 문서를 계속 캐싱할 수 있습니다.
권장되는 최대 중단 이후 시간 초과 값은 5분입니다. 기본값은 15초입니다.
http-client-config 함수는 Proxy Server의 HTTP 클라이언트를 구성합니다.
이 함수의 구문은 다음과 같습니다.
Init fn=http-client-config keep-alive=(true|false) keep-alive-timeout=seconds always-use-keep-alive=(true|false) protocol=HTTP Protocol proxy-agent="Proxy-agent HTTP request header"
설정은 다음과 같습니다.
keep-alive– (선택 사항) HTTP 클라이언트가 지속적인 연결을 사용해야 할지 여부를 나타내는 부울 값입니다. 기본값은 true입니다.
keep-alive-timeout– (선택 사항) 지속적인 연결을 개방 상태로 유지하는 최대 시간(초)입니다. 기본값은 29입니다.
always-use-keep-alive– (선택 사항) HTTP 클라이언트가 모든 유형의 요청에 대해 기존의 지속적인 연결을 다시 사용할 수 있는지 여부를 나타내는 부울 값입니다. 기본값은 false이며 non-GET 요청 또는 본문이 있는 요청에 대해 지속적인 연결을 다시 사용하지 않음을 의미합니다.
protocol– (옵션) HTTP 프로토콜 버전 문자열입니다. 기본적으로 HTTP 클라이언트는 HTTP 요청 내용을 기준으로 HTTP/1.0 또는 HTTP/1.1을 사용합니다. 특정 프로토콜 상호 운용성 문제가 발생하지 않는 한 protocol 매개 변수를 사용하지 마십시오.
proxy-agent– (선택 사항) Proxy-agent HTTP 요청 헤더의 값입니다. 기본값은 Proxy Server 제품 이름과 버전을 포함하는 문자열입니다.
KeepAliveTimeout() 매개 변수는 서버가 HTTP 연결 유지 연결 또는 클라이언트와 Proxy Server 사이의 지속적인 연결을 유지하는 최대 시간(초)을 결정합니다. 기본값은 30초입니다. 유휴 시간이 30초를 넘으면 연결 시간이 초과됩니다. 최대값은 300초(5분)입니다.
magnus.conf 파일에서 시간 초과 설정은 클라이언트와 Proxy Server 간의 연결에 적용됩니다. obj.conf 파일의 http-client-config SAF에서 시간 초과 설정은 Proxy Server와 원래 서버 간의 연결에 적용됩니다.
Proxy Server는 원래 서버에서 문서를 가져오지 않고 로컬 캐시에서 문서를 제공하여 성능을 향상시킵니다. 이 방법의 한가지 단점은 오래된 문서를 제공할 가능성이 있다는 것입니다.
Proxy Server는 검사를 수행하여 문서가 최신 상태인지 여부를 확인한 다음 문서가 오래된 경우 캐시된 버전으로 새로 고칩니다. 문서 확인을 자주 수행하면 Proxy Server의 전체 성능이 저하될 수 있기 때문에 필요한 경우에만 최신 여부 확인을 수행해야 합니다.
최신 여부 확인은 Caching 탭의 Set Cache Specifics 페이지에 구성됩니다. 기본적으로 2시간마다 새 문서를 검사합니다. 이 정보는 max-uncheck 매개 변수를 사용하여 ObjectType 지시문에 구성됩니다.
문서가 최신 상태인지 확인하는 동안 서버의 성능을 향상시키려면 마지막으로 수정된 요소와 관련하여 적절한 문서 수명을 확인하는 방법으로 최신 여부 확인을 사용자 정의합니다.
마지막으로 수정된 요소는 통보된 이전 변경 사항을 기준으로 문서가 변경될 가능성을 판단하는 데 도움을 줍니다.
마지막으로 수정된 요소는 .02에서 1.0 사이의 분수입니다. 문서의 실제 마지막 수정 및 문서에 대해 마지막 최신 여부 확인을 수행한 시간 사이의 간격을 이 요소 값과 곱합니다. 결과 값을 마지막 최신 여부 확인 이후 시간과 비교합니다. 값이 시간 간격보다 작은 경우 문서가 만료되지 않았습니다. 그러나 값이 시간 간격보다 클 경우 문서는 만료되고 원래 서버에서 새 버전을 가져옵니다.
마지막으로 수정된 요소를 사용하여 최근에 변경된 문서가 이전 문서보다 자주 검사되는지 확인할 수 있습니다.
마지막으로 수정된 요소를 0.1에서 0.2 사이로 설정해야 합니다.
DNS는 표준 IP 주소를 호스트 이름과 연결하는 데 사용되는 시스템입니다. 이 시스템은 적절하게 구성되지 않을 경우 중요한 Proxy Server 자원을 독점할 수 있습니다. 성능을 최적화하려면 다음 옵션을 고려하십시오.
DNS 캐싱 사용
DNS 캐싱은 Server Manager의 Preferences 탭 아래에서 Configure DNS Cache 링크를 선택하면 활성화됩니다. DNS 캐싱의 Enabled 라디오 버튼을 선택합니다.
클라이언트 DNS 이름이 아닌 클라이언트 IP 주소만 기록합니다.
클라이언트 DNS 이름 로깅은 Server Manager의 Server Status 탭 아래에서 Set Access Log Preferences 링크를 선택하면 비활성화됩니다. 클라이언트 호스트 이름이 아닌 IP 주소를 기록하려면 IP Addresses 라디오 버튼을 선택합니다.
역방향 DNS를 비활성화합니다.
역방향 DNS는 IP 주소를 호스트 이름으로 변환합니다. 역방향 DNS는 Server Manager의 Preferences 탭 아래에서 Configure System Preferences 링크를 선택하면 비활성화됩니다. 역방향 DNS를 비활성화하려면 No 라디오 버튼을 선택합니다.
클라이언트 호스트 이름에 기반한 액세스 제어 방지
가능한 경우 액세스 제어문의 호스트 이름 대신 클라이언트의 IP 주소를 사용합니다.
magnus.conf 파일의 RqThrottle 매개 변수는 Proxy Server가 처리할 수 있는 최대 동시 트랜잭션 수를 지정합니다. 기본값은 128입니다. 서버를 제어하도록 이 값을 변경하여 수행되는 트랜잭션 대기 시간을 최소화합니다.
동시 요청 수를 계산하기 위해 서버는 활성 요청 수를 계산합니다. 서버는 새 요청이 도착하면 값에 1을 더하고 요청이 완료되면 1을 뺍니다. 새 요청이 도착하면 서버가 최대 요청 수를 이미 처리 중인지 여부를 확인합니다. 제한에 도달하면 새 요청 처리는 활성 요청 수가 최대값 이하로 떨어질 때까지 지연됩니다.
perfdump 또는 proxystats.xml 데이터에 의해 생성된 데이터의 SessionCreationInfo 부분을 보고 동시 요청 수를 모니터링할 수 있습니다. 이 정보를 통해 총 스레드 수(제한)와 비교하여 동시 최고 요청의 최대 수를 결정할 수 있습니다. 다음은 perfdump 출력에서 전달된 정보입니다.
SessionCreationInfo: ------------------------ Active Sessions 1 Keep-Alive Sessions 0 Total Sessions Created 48/128
Active Sessions에서는 현재 요청을 서비스하는 세션(스레드를 처리 중인 요청) 수를 표시합니다. Keep-Alive Sessions는 Active Sessions와 비슷하지만 연결 유지 연결과 관련됩니다. Total Sessions Created에는 생성된 세션 수와 허용된 최대 세션 수 모두를 표시합니다. 이러한 값은 RqThrottle 값의 최소값 및 최대값입니다.
RqThrottleMin은 서버가 시작 시 시작하는 최소 스레드 수입니다. 기본값은 48입니다. 또한 이 매개 변수를 magnus.conf 파일에서 설정할 수 있지만 기본적으로는 나타나지 않습니다.
구성된 스레드의 최대값에 도달하는 것이 반드시 부정적인 것은 아닙니다. 자동으로 RqThrottle 값을 높일 필요는 없습니다. 이러한 제한에 도달했다는 것은 최고 로드에서 서버에 그만큼의 스레드가 필요했음을 나타냅니다. 서버가 적절한 시기에 요청을 수행할 수 있는 한 서버는 적절하게 조정됩니다. 그러나 이 시점에서 연결은 연결 대기열에 대기하게 되고 이로 인해 잠재적으로 오버플로될 수 있습니다. perfdump 출력은 일반적으로 총 세션 생성 값이 거의 RqThrottle 최대값에 도달하는 경우 스레드 제한을 높여야 함을 보여 줍니다.
적절한 RqThrottle 값은 로드에 따라 100에서 500 사이의 범위에 있습니다.
인바운드 연결 풀은 다음을 포함하여 KeepAlive* 설정과 magnus.conf의 관련 설정을 사용하여 조정할 수 있습니다.
이러한 매개 변수에 대한 자세한 내용은 다음 사이트에서 Sun ONE Web Server 6.1 SP6 Performance Tuning, Sizing, and Scaling Guide의 2장을 참조하십시오.
http://docs.sun.com/app/docs/doc/819-6516/
아웃바운드 연결 풀 설정은 이 릴리스의 Proxy Server에서 구성할 수 없습니다.
FTP 목록 너비를 늘리면 긴 파일 이름을 사용할 수 있기 때문에 파일 이름이 잘리는 것을 줄여줍니다. 기본 너비는 80자입니다.
FTP 목록 너비는 Server Manager의 Preferences 탭 아래에서 Tune Proxy 링크를 선택하여 수정할 수 있습니다.
캐시를 적절하게 구성하면 서버 성능을 향상시킬 수 있습니다. 캐시 구성 시 유의해야 할 권장 사항은 다음과 같습니다.
로드를 분산시킵니다.
여러 프록시 캐시 파티션을 사용합니다.
여러 디스크 드라이브를 사용합니다.
여러 디스크 컨트롤러를 사용합니다.
적절한 캐시 설정은 Proxy Server 성능에 중요합니다. 프록시 캐시 구성 시 유의해야 할 가장 중요한 규칙은 로드를 분산시키는 것입니다. 캐시를 파티션당 약 1GB로 설정하고 여러 디스크와 디스크 컨트롤러 전체에 분산시켜야 합니다. 이러한 유형의 정렬은 단일 대용량 캐시보다 신속한 파일 생성 및 검색 기능을 제공합니다.
캐시 일괄 업데이트 기능을 사용하여 지정된 웹 사이트에서 파일을 미리 로드하거나 캐시에 이미 있는 문서에 대한 최신 검사를 수행할 수 있습니다. 이 기능은 일반적으로 Proxy Server의 로드가 가장 낮을 때 시작됩니다. URL의 배치를 생성, 편집 및 삭제할 수 있으며 Cache Batch Updates 페이지에서 일괄 업데이트를 활성화 및 비활성화할 수 있습니다.
요청 시 캐싱과 달리 배치에 업데이트할 파일을 지정하여 적극적으로 내용을 캐시할 수 있습니다. Proxy Server를 사용하여 캐시에서 현재 여러 파일에 대한 최신 검사를 수행하거나 특정 웹 사이트에서 여러 파일을 미리 로드할 수 있습니다.
서버 및 프록시 네트워크가 있는 대형 사이트의 경우 일괄 업데이트를 사용하여 웹의 지정된 영역을 미리 로드할 수 있습니다. 배치 프로세스는 문서의 링크 전체에서 재귀적 하강을 수행하고 내용을 로컬로 캐시합니다. 이 기능은 원격 서버에 부담을 줄 수 있기 때문에 주의해야 합니다. bu.conf 구성 파일의 매개 변수는 프로세스가 무제한적으로 재귀를 수행하는 것을 방지하고 이 프로세스에 대한 일부 제어를 제공합니다.
Proxy Server 액세스 로그를 사용하여 가장 일반적으로 활성화된 사이트를 확인하고 성능을 향상시키기 위해 이러한 사이트에 대한 일괄 업데이트를 수행합니다.
가비지 컬렉션은 Proxy Server 캐시를 검토하고 오래된 파일을 제거하는 프로세스입니다. 가비지 컬렉션은 자원을 집중적으로 사용하는 프로세스입니다. 따라서 성능을 향상시키기 위해 일부 가비지 컬렉션 설정을 조정해야 합니다.
다음 매개 변수는 가비지 컬렉션 프로세스를 미세 조정하기 위한 기능을 제공합니다. Server Manager의 Caching 탭 아래에서 Tune GC를 선택하여 찾을 수 있는 Tune Garbage Collection 양식에서 이러한 매개 변수를 보거나 수정할 수 있습니다. 매개 변수는 다음과 같습니다.
gc hi margin percent
gc lo margin percent
gc extra margin percent
gc leave fs full percent
gc hi margin percent 변수는 최대값에 도달하면 가비지 컬렉션을 트리거하는 최대 캐시 크기의 백분율을 제어합니다.
이 값은 gc lo margin percent 값보다 커야합니다.
gc hi margin percent의 유효한 범위는 10에서 100% 사이입니다. 기본값은 80%로, 캐시 사용률이 80%일 때 가비지 컬렉션이 트리거됩니다.
gc lo margin percent 변수는 가비지 컬렉터가 목표로 하는 최대 캐시 크기의 백분율을 제어합니다.
이 값은 gc hi margin percent 값보다 작아야 합니다.
gc lo margin percent의 유효한 범위는 5에서 100% 사이입니다. 기본값은 70%이며 가비지 컬렉션 후 캐시 사용률 70%를 목표로 합니다.
파티션 크기가 최대 허용 크기(gc hi margin percent)에 도달하는 것 이외의 이유로 가비지 컬렉션이 트리거되는 경우 가비지 컬렉터는 gc extra margin percent 변수에 의해 설정된 백분율을 사용하여 제거할 캐시 부분을 결정합니다.
gc extra margin percent의 유효한 범위는 0에서 100% 사이입니다. 기본값은 30%이며 기존 캐시 파일의 30%를 제거합니다.
gc leave fs full percent 값은 가비지 컬렉션이 발생하지 않는 캐시 파티션 크기의 백분율을 결정합니다. 이 값은 일부 다른 응용 프로그램이 디스크 공간을 독점하는 경우 가비지 컬렉터가 캐시의 모든 파일을 제거하지 않도록 합니다.
gc leave fs full percent의 유효한 범위는 0(전체 제거 허용)에서 100%(제거하지 않음) 사이입니다. 기본값은 60%이며 캐시 크기를 현재 크기의 60%로 축소할 수 있습니다.
Solaris 커널의 다양한 매개 변수를 사용하여 Proxy Server 성능을 미세 조정할 수 있습니다. 다음 표에 이러한 매개 변수 몇 개가 나열되어 있습니다.
표 19–1 Solaris 성능 조정 매개 변수
매개 변수 |
범위 |
기본값 |
조정값 |
설명 |
---|---|---|---|---|
/etc/system |
1024 |
8192 |
열린 파일 설명자 제한 프로세스입니다. 해당하는 경우 관련 소켓, 파일 및 파이프에 대한 예상 로드를 고려해야 합니다. |
|
/etc/system |
64 |
8192 | ||
/etc/system |
2 |
0 |
스트림 드라이버 대기열 크기를 제어합니다. 이 매개 변수를 0으로 설정하면 성능 실행이 버퍼 공간 부족으로 인한 영향을 받지 않습니다. 클라이언트에서도 이 매개 변수를 설정합니다. |
|
ndd/dev/tcp |
240000 |
60000 |
클라이언트에서도 이 매개 변수를 설정합니다. |
|
ndd/dev/tcp |
128 |
1024 | ||
ndd/dev/tcp |
1024 |
4096 | ||
ndd/dev/tcp |
480000 |
60000 | ||
tcp_keepalive_interval |
ndd/dev/tcp |
7200000 |
900000 |
트래픽이 많은 웹 사이트의 경우 이 값을 줄입니다. |
ndd/dev/tcp |
3000 |
3000 |
재전송률이 30-40%보다 큰 경우 이 값을 늘립니다. |
|
ndd/dev/tcp |
240000 |
10000 | ||
ndd/dev/tcp |
200 |
3000 | ||
ndd/dev/tcp |
32768 |
1024 |
클라이언트에서도 이 매개 변수를 설정합니다. |
|
ndd/dev/tcp |
1 |
2 |
데이터 양이 적은 경우 약간 빠르게 전송됩니다. |
|
ndd/dev/tcp |
8129 |
32768 |
이 매개 변수를 사용하여 전송 버퍼를 늘립니다. |
|
ndd/dev/tcp |
8129 |
32768 |
이 매개 변수를 사용하여 수신 버퍼를 늘립니다. |
이러한 매개 변수에 대한 자세한 내용은 다음 사이트에서 Sun ONE Web Server 6.1 SP6 Performance Tuning, Sizing, and Scaling Guide의 5장을 참조하십시오.
http://docs.sun.com/app/docs/doc/819-6516/