56
OracleAS Web Cache OracleAS Web Cache 관관 관 관관 관관 관 관관 (9.0.4) (9.0.4)

OracleAS Web Cache 관리 및 설정 (9.0.4)

  • Upload
    iram

  • View
    72

  • Download
    10

Embed Size (px)

DESCRIPTION

OracleAS Web Cache 관리 및 설정 (9.0.4). 목차. 설정 및 관리 웹 캐시 관리 관리자 암호 설정 및 리슨 포트 설정 Origin 서버 등록 사이트 정의 등록 사이트 - 서버 매핑 설정 컨텐트 캐시 컨텐트 부분 캐시 (ESI 및 JESI) 액세스 로그 및 이벤트 로그 성능 이슈. 목차. 설정 및 관리 웹 캐시 관리 관리자 암호 설정 및 리슨 포트 설정 Origin 서버 등록 사이트 정의 등록 사이트 - 서버 매핑 설정 컨텐트 캐시 캐시 룰 작성 및 설정 - PowerPoint PPT Presentation

Citation preview

Page 1: OracleAS Web Cache  관리 및 설정 (9.0.4)

OracleAS Web Cache OracleAS Web Cache 관리 및 설정관리 및 설정(9.0.4)(9.0.4)

Page 2: OracleAS Web Cache  관리 및 설정 (9.0.4)

2222

목차

설정 및 관리– 웹 캐시 관리– 관리자 암호 설정 및 리슨 포트 설정– Origin 서버 등록– 사이트 정의 등록– 사이트 - 서버 매핑 설정

컨텐트 캐시 컨텐트 부분 캐시 (ESI 및 JESI) 액세스 로그 및 이벤트 로그 성능 이슈

Page 3: OracleAS Web Cache  관리 및 설정 (9.0.4)

3333

목차

설정 및 관리– 웹 캐시 관리– 관리자 암호 설정 및 리슨 포트 설정– Origin 서버 등록– 사이트 정의 등록– 사이트 - 서버 매핑 설정

컨텐트 캐시– 캐시 룰 작성 및 설정– 무효화 정책 설정– 만기 정책 설정

컨텐트 부분 캐시 (ESI 및 JESI) 액세스 로그 및 이벤트 로그 성능 이슈

Page 4: OracleAS Web Cache  관리 및 설정 (9.0.4)

4444

웹 캐시 관리 ( 홈페이지 )

간단한 모니터링은 홈페이지에서 가능하나 다양한 설정 변경은 웹 캐시 관리 페이지에서 수행한다 . http://localhost:1810

클릭 시 IE 에서는 제대로 동작하지 않으므로 http://host:4000/으로 접근하면 된다 .

Page 5: OracleAS Web Cache  관리 및 설정 (9.0.4)

5555

웹 캐시 관리 ( 관리 페이지 )

http://localhost:4000/webcacheadmin

Page 6: OracleAS Web Cache  관리 및 설정 (9.0.4)

6666

웹 캐시 관리 (opmnctl 을 이용한 관리 )

opmnctl 을 이용해서 웹 캐시 프로세스들을 시작 , 정지 그리고 재시작 할 수 있다 . 일반적으로 UNIX/Linux 환경에서는 두개의 프로세스 ( 관리 프로세스 + 캐시 프로세스 ) 를 관리하게

되나 Windows 환경에서는 하나의 프로세스안의 두개의 쓰레드 형태로 운영된다 .

Stand-alone 웹 캐시 설치시에는 webcachectl 을 이용하여 웹 캐시를 시작 , 정지할 수 있다 .

이 외에 Oracle Enterprise Management 를 이용하여 웹 캐시를 시작 , 정지할 수 있다 .

$ opmnctl startproc ias-component=WebCache

$ opmnctl stopproc ias-component=WebCache

$ opmnctl restartproc ias-component=WebCache

$ webcachectl start

Page 7: OracleAS Web Cache  관리 및 설정 (9.0.4)

7777

보안 설정 변경

①②

Page 8: OracleAS Web Cache  관리 및 설정 (9.0.4)

8888

리스닝 포트 설정

Page 9: OracleAS Web Cache  관리 및 설정 (9.0.4)

9999

1024 이하 포트에서 웹 캐시 실행

Unix 환경에서는 처음 설치 후 웹 캐시의 실행파일 (webcachectl) 이 1024 이하의 포트에서 바로 수행되지 못한다 . 이를 해결하기 위해 webcachectl 에 1024 이하 포트를 이용할 수 있도록 권한을 준다 .

위의 과정을 수행하다 웹 캐시가 “ libnnz9.so 열기 실패” 에러를 발생하고 시작이 안 되는 경우가 있다 . 이때에는 다음의 작업을 수행해준다 . (for Solaris)

$ opmnctl stopproc ias-component=WebCache$ cd $ORACLE_HOME/webcache/bin$ su -$ webcache_setuser.sh setroot oracle_user

$ opmnctl stopproc ias-component=WebCache$ cd $ORACLE_HOME/webcache/lib/$ make –f ins_calypso.mk install$ cd $ORACLE_HOME/webcache/bin$ su -$ webcache_setuser.sh setroot oracle_user

Page 10: OracleAS Web Cache  관리 및 설정 (9.0.4)

10101010

Origin 서버 등록

① ②

Page 11: OracleAS Web Cache  관리 및 설정 (9.0.4)

11111111

사이트 정의

브라우저 웹 캐시

호스트 1 호스트 2

호스트 3

호스트 5호스트 4

애플리케이션 웹 서버www. 1st. comp.com:80

애플리케이션 웹 서버www. *. comp.com:80

애플리케이션 웹 서버www. 2nd. comp.com:80

Page 12: OracleAS Web Cache  관리 및 설정 (9.0.4)

12121212

사이트 정의 설정

Page 13: OracleAS Web Cache  관리 및 설정 (9.0.4)

13131313

사이트 서버 매핑 설정

Page 14: OracleAS Web Cache  관리 및 설정 (9.0.4)

14141414

목차

설정 및 관리 컨텐트 캐시

– 캐시 룰 개요– 캐시 룰 작성 및 설정– 만기 정책 설정– 무효화 정책 설정– 캐시 컨텐트 관리

컨텐트 부분 캐시 (ESI 및 JESI) 액세스 로그 및 이벤트 로그 성능 이슈

Page 15: OracleAS Web Cache  관리 및 설정 (9.0.4)

15151515

캐시 룰 개요

캐시 룰은 특정 컨텐트 를 캐시 할 것인지 안 할 것인지를 명시하고 어떤 컨텐트를 캐시 할 지 결정하는 규칙이다 .

– 정적 문서– 다중 버전 URL– 개인화된 페이지– 세션 트랙킹을 지원하는 페이지– HTTP 에러 메시지– 정규식에 규합되는 URL– 하나의 문서나 서브 트리를 포함하는 URL 트리

캐시는 우선 순위 룰에 기반한다 .( 우선 순위 값이 작을 수록 먼저 처리된다 )

캐시 룰에 의해 캐시된 컨텐트는 만기 정책과 무효화 정책에 의해서 캐시 내용이 갱신될 수 있도록 한다 .

Page 16: OracleAS Web Cache  관리 및 설정 (9.0.4)

16161616

미리 정의된 캐시 룰

Page 17: OracleAS Web Cache  관리 및 설정 (9.0.4)

17171717

캐시 룰 작성 - 일반

Page 18: OracleAS Web Cache  관리 및 설정 (9.0.4)

18181818

캐시 룰 작성 - 캐시 가능성 규칙

Page 19: OracleAS Web Cache  관리 및 설정 (9.0.4)

19191919

만기 정책 설정

특정 컨텐트가 정해진 시간에 업데이트가 될 경우 , 즉 컨텐트의 캐시 타임 아웃 시간이 예상되는 경우에는 만기 정책을 이용할 수 있다 .

Page 20: OracleAS Web Cache  관리 및 설정 (9.0.4)

20202020

무효화 정책

캐시 일관성을 위한 무효– OracleAS Web Cache 는 고객의 편의를 위해 Java 및 PL/SQL APIs 와 함께 출하되어 ,

개발자가 무효 로직을 자신의 애플리케이션에 직접 포함시킬 수 있게 되었습니다 .– JSP 개발자를 위하여 무효 프로세스를 좀 더 단순화하기 위해 , Oracle JSP 는 사용자 정의 태그

라이브러리와 함께 출하되며 , 이것은 사용이 간편한 <jesi:invalidate> 태그를 통해 JSP 에 대한 자동 무효를 지원합니다 .

Trigger / Programmatic

Programmatic

관리자

Manual or Scripted데이타베이스인터넷 사용자 OracleASWeb Cache인터넷

Page 21: OracleAS Web Cache  관리 및 설정 (9.0.4)

21212121

무효화 정책 설정 – 기본 캐시 컨텐트 무효화

Page 22: OracleAS Web Cache  관리 및 설정 (9.0.4)

22222222

무효화 정책 설정 – 고급 캐시 컨텐트 무효화

Page 23: OracleAS Web Cache  관리 및 설정 (9.0.4)

23232323

무효화 정책 설정 – 트리거를 이용한 무효화

1. PL/SQL 등록– $ORACLE_HOME/webcache/toolkit 의 wxvutil.sql, wxvappl.sql 를 등록한다 .– wxvutil.sql : 무효화 HTTP request 만들어 를 보내는 PL/SQL 로직– wxvappl.sql : wxutil.sql 의 wrapper

2. 테이블을 만든다 .

3. 트리거를 만든다 . ( 무효화 URL 과 Invalidator 의 Port, 암호 설정을 체크한다 .)

4. 테이블의 데이터를 조작한다 .

CREATE TABLE EMPL (cust_id INTEGER, cust_name CHAR (50), cust_phone CHAR (50));

CREATE OR REPLACE TRIGGER UTL_INVALID_TRIG AFTER DELETE OR INSERT OR UPDATE on empl BEGIN wxvutil.invalidate_reset; wxvutil.invalidate_uri('http://www.host.com/cache.htm', 0, null); wxvutil.invalidate_exec('webcache-machine', 4001, 'invalidator-password'); END;/

Page 24: OracleAS Web Cache  관리 및 설정 (9.0.4)

24242424

캐시 컨텐트 관리 - 자주 요청되는 페이지들

①②

Page 25: OracleAS Web Cache  관리 및 설정 (9.0.4)

25252525

목차

설정 및 관리 컨텐트 캐시 컨텐트 부분 캐시 (ESI 및 JESI)

– 컨텐트 부분 캐시란 ?– ESI 소개 – ESI 기본 구조 및 개발 과정– ESI 주요 특징– JESI 소개– JESI 모델 소개 (Template/Fragment, Control/Include 모델 )– JESI 태그 설명

액세스 로그 및 이벤트 로그 성능 이슈

Page 26: OracleAS Web Cache  관리 및 설정 (9.0.4)

26262626

컨텐트 부분 캐시

부분 페이지 캐시과 개인화 된 페이지 어셈블리 (ESI)– 전체 페이지 캐시는 페이지가 각 사용자를 위해 고도로 사용자 정의되었을 경우에는 비효율적입니다 .– 오라클은 페이지에 대한 부분 캐시 정책과 다양한 만기 정책을 위해서 ESI (Edge Side Includes) 라고 불리우는

부분 - 페이지 캐시 언어를 만들어 내었습니다 .• 오라클과 Akamai 에 의해 고안된 ESI 는 W3C Note 로 발표된 XML 스타일 스펙입니다 .• 웹 개발자들은 네트워크 에지에서의 동적 어셈블리를 위해서 컨텐트 단편이라고 불리는 페이지 요소를

식별하는데 있어서 ESI 마크업을 사용할 수 있습니다 .– 처음으로 혁신적인 ESI 사양을 지원하는 애플리케이션 서버로서 , Oracle Application Server 는 회사 네트워크

에지 (Edge) 및 인터넷 에지 부분에서 부분 - 페이지 캐시 , 개인화 및 동적 컨텐트 어셈블리를 수행하는 능력을 통해 이 분야의 산업을 이끌고 있습니다 .

– ESI 를 이용하게 되면 웹사이트의 컨텐트 생성 메커니즘은 어셈블 및 전달 메커니즘으로부터 분리됩니다 . 즉 OracleAS Web Cache 는 캐시가 가능하지 않거나 만기된 부분들만 웹 서버로부터 가져와서 자신이 캐시하고 있는 부분들과 조합하여 사용자에게 전달하게 됩니다 . 따라서 ESI 모델은 전체 페이지를 읽거나 계산할 필요성을 감소시키고 , 웹 사이트 컨텐트 생성 인프라의 로드를 감소시키게 됩니다 .

– ESI 를 통해 얻을 수 있는 혜택• e-Business 는 고도로 개인화 된 웹 기반 애플리케이션을 개발할 수 있으며 , 이 애플리케이션은 성능 향상을 위해 회사의 주 데이타 센터와 원거리 사무실 에지에서 조합 될 수 있고 , 또는 공공 인터넷 경계선에서 조합 될 수 있습니다 .

• 에지 서버에서 컨텐트 집합 및 어셈블리를 함으로써 , 신속하고 확장 가능하며 내구성을 지닌 애플리케이션 제공에 드는 인프라 비용을 극적으로 감소시킬 수가 있습니다 .

– JESI (ESI for JAVA) – JSR 128• Java 개발자들의 신속한 ESI 수용을 돕기 위해 발표된 스펙입니다 .• JESI 는 ESI 코드 자동 생성을 위해 개발자들이 사용할 수 있는 스펙 및 사용자 정의 JSP 태그

라이브러리로서 , ESI 를 사용하여 JSP 의 프로그래밍을 촉진시키고 있습니다 .• OracleJSP(OracleAS Containers for J2EE 의 일부 ) 와 Oracle JDeveloper 는 모두 ESI 및 JESI 사용을

지원하며 , 둘 다 JESI 태그 라이브러리와 함께 출하됩니다 .

3.7 Caching

Page 27: OracleAS Web Cache  관리 및 설정 (9.0.4)

27272727

ESI 소개

ESI 는 에지 서버에서의 동적 컨텐트 어셈블리를 위해서 컨텐트 조각이라고 불리는 컨텐트의 요소를 식별하는 마크업 언어이다 .

ESI 를 통해 동적 컨텐트에 대해 부분 캐시 정책과 다양한 만기 정책 적용할 수 있다 .

사용자브라우저

Internet

Edge Server

Edge Server

Edge Server

Edge Server

Edge ServerEdge Server

컨텐트 생성컨텐트 어셈블리 / 전달

ESI 조각

millions of requests millions of requests 1000s of requests 1000s of requests

Inexpensive Infrastructure Less Infrastructure Required

Page 28: OracleAS Web Cache  관리 및 설정 (9.0.4)

28282828

ESI 기본 구조 및 개발 과정

ESI 의 기본 구조는 하나의 컨텐트 (Template) 를 여러 조각 (Fragment)으로 분리하여 그것을 다시 조합하는 구조를 가집니다 .

부분 페이지 캐시를 위한 개발과정

– 전체 페이지를 Templates 와 Fragments 로 구성합니다 .

– 각 Templates 와 Fragments 에 대해 캐시 정책을 세웁니다 .

– Web Cache 는 Templates 와 Fragments 로부터 전체 페이지를 통합합니다 .

Web Cache 는 자체가 ESI 프로세서를 내장하므로 에지 네트웍 (Edge Network) 에 Akamai 와 같은 ESI 전용 프로세서를 둘 필요가 없습니다 .

Page 29: OracleAS Web Cache  관리 및 설정 (9.0.4)

29292929

ESI 주요 특징

포함 지원– ESI 프로세서는 동적 컨텐트 조각들을 어셈블한다 . – 각각의 조각들은 캐시 제어에 관련된 정보를 가진다 .– <esi:include>, <esi:inline>

변수 지원– HTTP request 속성값들을 변수로 볼 수 있다 . – 예 ) $(HTTP_HOST), $(QUERY_STRING(name))– <esi:vars>

조건 처리– <esi:choose>,<esi:when>,<esi:otherwise>

에러 처리– <esi:try>,<esi:attempt>,<esi:except>

일관성 유지– <esi:invalidate>

Page 30: OracleAS Web Cache  관리 및 설정 (9.0.4)

30303030

JESI 소개

JESI 는 JSP 에서 ESI 를 쉽게 표현하기 위해 제공되는 태그 라이브러리이다 . JESI 가 제공하는 것들

– JSP 프로그래밍의 편리한 기능을 그대로 이용한다 .– 편리한 구문과 태그 속성을 지원한다 .– 애플리케이션 레벨의 속성 파일 사용을 지원한다 .– 예 ) 무효화 시 사용되는 사용자 이름 , 패스워드 , URL 등 미리 지정

개발 모델 :– Control / Include 모델 : 새 페이지 구성 시 이용– Template / Fragment 모델 : 기존 페이지 재구성 시 이용

Page 31: OracleAS Web Cache  관리 및 설정 (9.0.4)

31313131

Control/Include 모델

<%@ taglib uri="/WEB-INF/JESItaglib.tld" prefix=“JESI" %><html><body>

<JESI:include page="stocks.jsp" /><p><hr><JESI:include page="/weather.jsp" /><p><hr><JESI:include page="../sales.jsp" />

</body></html>

Control / Include 예제

Page 32: OracleAS Web Cache  관리 및 설정 (9.0.4)

32323232

Template/Fragment 모델

<%@ taglib uri="/WEB-INF/JESItaglib.tld" prefix="JESI" %><JESI:template expiration="3600"> ...HTML block #1... <JESI:fragment expiration="60"> ...JSP code block #1... <JESI:include page="stocks.jsp" /> </JESI:fragment> ...HTML block #2... <JESI:fragment> ...JSP code block #2... <JESI:include page="/weather.jsp" /> </JESI:fragment> ...HTML block #3...</JESI:template>

Template / Fragment 예제

Page 33: OracleAS Web Cache  관리 및 설정 (9.0.4)

33333333

<JESI:control>

Control/Include 모델에서 JSP 페이지들의 캐시 정책을 설정해준다 . JESI:control 태그는 필수사항이 아니다 . 없을 시에는 웹 캐시의 기본 캐시 정책을 따른다 . 피해야 할 것들 :

– 한 페이지 내에서 여러 JESI:control 태그 사용– 같은 페이지에서 JESI:template 와 같이 사용

여러 컨텐트 조각을 포함하는 페이지의 JESI:control 태그는 그 페이지에 포함되는 페이지에는 영향을 주지 않는다 .

<JESI:control [expiration = “value”] [maxRemovalDelay = “value” [cache = “yes | no | no-remote”][Control = “uninterpreted_string”] />

Page 34: OracleAS Web Cache  관리 및 설정 (9.0.4)

34343434

<JESI:include>

JESI:include 는 jsp:include 태그와 비슷하게 다른 페이지의 결과를 동적으로 추가하는 태그이다 .

각각의 포함된 페이지는 별개의 캐시 가능한 오브젝트이다 . JESI:param 태그를 포함할 수 있다 .

– jsp:include 와는 달리 자신을 포함하는 페이지와 별개의 request, response 를 사용한다 .

<JESI:include page = “uri_string” [alt = “alt_uri_string”] [ignoreError = “true | false

”] [copyparam = “true | false”] [flush = “true | false”] />

Page 35: OracleAS Web Cache  관리 및 설정 (9.0.4)

35353535

<JESI:template>

이미 존재하는 JSP 페이지 내에 ESI 템플릿을 정의하기 위해 쓰인다 . 시작 태그는 페이지 내에서 어떤 JESI 태그보다 우선해야 하며 다른 HTML 이 buffer flush

되기 전에 쓰여져야 한다 . 끝 태그는 가장 마지막에 써준다 . JESI:template 의 속성은 선택 사항이다 . 속성 표시를 하지 않을 경우 웹 캐시의 기본 캐시

정책을 따른다 . 한 페이지 내에서 여러 JESI:template 는 사용하면 안된다 . JESI:template 는 안에 포함된 JESI:fragment 에 영향을 주지 않는다 .

<JESI:template [expiration = “value”] [maxRemovalDelay = “value” [cache = “yes | no | no-remote”] >

...page content,JESI:fragment tags, JESI:include tags...

</JESI:template>

Page 36: OracleAS Web Cache  관리 및 설정 (9.0.4)

36363636

<JESI:fragment>

JESI:template 내에 하나 이상의 JESI:fragment 를 정의할 수 있다 . JSP 코드를 여러 개의 조각으로 나뉠 때 사용된다 . JESI:fragment 는 각각의 캐시 정책을 갖는다 . 특정 조각이 요청될 때 , ESI 프로세서는 그것을 포함하는 페이지 전체를 요청하지 않고 그

조각만을 애플리케이션 서버에 요청한다 .

<JESI:fragment [expiration = “value”] [maxRemovalDelay = “value” [cache = “yes | no | no-remote”] >

…JSP code fragment…</JESI:fragment>

Page 37: OracleAS Web Cache  관리 및 설정 (9.0.4)

37373737

<JESI:codeblock>

JESI:template 내 JESI:fragment 밖에서 정의되어 선택적으로 사용되는 태그이다 . 페이지 내의 코드 블록을 조건적으로 수행하기 위해서 사용된다 .

– Template 가 요청될 때만 수행– Any Fragments 가 요청될 때만 수행– 항상 수행

<JESI:codeblock execute = “template” | “fragment” | “always” >

…Request dependent JSP content…</JESI:codeblock>

Page 38: OracleAS Web Cache  관리 및 설정 (9.0.4)

38383838

<JESI:personalize>

쿠키 정보를 통해서 페이지를 개인화 하기 위한 태그이다 . Example:

– <JESI:personalize name="username" value="guest" />

=>

– <esi:vars>$(HTTP_COOKIE{username})</esi:vars>

<JESI:personalize name = “name_string”value = “default_value_string

/>

Page 39: OracleAS Web Cache  관리 및 설정 (9.0.4)

39393939

<JESI:invalidate>

캐시된 객체들을 무효화 하고자 하기 위해 사용하는 태그 JESI:object - 무효화할 객체를 명시해준다 . JESI:cookie, JESI:header - 특정 쿠기값과 헤더값에 따라 다중버전으로 캐시된 객체를

무효화한다 .

<JESI:invalidate [url = “url_string” username = “username_string” password = “password_string”] config = “configfilename_string”] output = “browser”] > <JESI:object …> <JESI:cookie …/> <JESI:header …/> </JESI:object></JESI:invalidate>

Page 40: OracleAS Web Cache  관리 및 설정 (9.0.4)

40404040

<JESI:invalidate> subtags

<JESI:object [uri=“uri_or_uriprefix_string”][prefix = “yes” | “no”]

[maxRemovalDelay = “value”] /><JESI:cookie …/><JESI:header …/>

</JESI:object>

<JESI:cookie name = “name_string”value = “value_string />

<JESI:header name = “name_string”value = “value_string />

• 필수 사항

• 선택 사항

Page 41: OracleAS Web Cache  관리 및 설정 (9.0.4)

41414141

<JESI:invalidate>

...<JESI:invalidate url="http://dioh-kr.kr.oracle.com:4001" username=“invalidator" password=“welcome"> <JESI:object uri=“main.jsp"> <JESI:cookie name="user_type" value="customer"/> </JESI:object></JESI:invalidate>...

Page Invalidation

Page 42: OracleAS Web Cache  관리 및 설정 (9.0.4)

42424242

Sample Application

<JESI:invalidate url="http://dioh-kr.kr.oracle.com:4001" username="invalidator" password="welcome" output="broswer">

<JESI:object uri="main.jsp" maxRemovalDelay="1" /></JESI:invalidate>

<JESI:template expiration=“10"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <title>untitled</title> </head> <body> <% out.println("sessionid="+session.getId()+"<br>"); %> <JESI:fragment expiration="60"> <% out.println(new java.util.Date()); String name = (String)request.getParameter("name"); out.println("<br>hi~"+name); %> </JESI:fragment> </body></html></JESI:template>

main.jsp

invalidate.jsp

fragment

template

Page 43: OracleAS Web Cache  관리 및 설정 (9.0.4)

43434343

목차

설정 및 관리 컨텐트 캐시 컨텐트 부분 캐시 (ESI 및 JESI) 액세스 로그 및 이벤트 로그

– 엑세스 로그 관리– 이벤트 로그 관리

성능 이슈

Page 44: OracleAS Web Cache  관리 및 설정 (9.0.4)

44444444

액세스 로그 관리 (1)

Page 45: OracleAS Web Cache  관리 및 설정 (9.0.4)

45454545

액세스 로그 관리 (2)

Page 46: OracleAS Web Cache  관리 및 설정 (9.0.4)

46464646

이벤트 로그 관리

Page 47: OracleAS Web Cache  관리 및 설정 (9.0.4)

47474747

목차

설정 및 관리 컨텐트 캐시 컨텐트 부분 캐시 (ESI 및 JESI) 액세스 로그 및 이벤트 로그 성능 이슈

– CPU 및 메모리– 네트웍 커넥션– 유닉스 환경에서의 커넥션 설정– 네트웍 관련 파라미터 설정– 캐시 히트율– 기타 이슈

Page 48: OracleAS Web Cache  관리 및 설정 (9.0.4)

48484848

CPU 및 메모리

CPU– 웹 캐시의 성능 향상은 CPU 의 개수보다는 CPU 의 속도에 큰 영향을 받는다 .

– 웹 캐시의 캐시 서버는 Request 받는 부분과 Request 처리하는 부분으로 나뉘기 때문에 2개의 CPU구성이 최적이다 .

– 결론적으로 OracleAS Web Cache 를 가장 효율적으로 배치하는 방법은 빠른 두개의 CPU 에 많은 메모리를 가지는서버에 배치하는 것이다 .

– 다시 말해 , CPU 의 4 개인 장비에 Web Cache 두개를 올리는 것보다 CPU 2 개인 장비 2 대에 각각 Web Cache 를 설치하는게 훨씬 유리하다 .

메모리 – 정확한 공식 계산은 환경에 따라 크게 다르나 기본적으로 모든 컨텐트를 메모리에서 캐시하기

때문에 많은 메모리 자원이 활용된다 .

Page 49: OracleAS Web Cache  관리 및 설정 (9.0.4)

49494949

네트웍 커넥션

네트웍 동시 커넥션 개수와 응답 시간은 반비례 관계에 있다 . 네트웍 커넥션은 다음과 같은 요인들을 고려하여 설정하여야 한다 .

1. 최대 클라이언트 수2. 요청 문서의 평균 사이즈 및 평균 요청 수3. 네트웍 대역폭4. 캐시 실패율5. 클러스터 멤버 용량 ( 다른 캐시 클러스터멤버로부터 들어오는 커넥션 수 설정 )

netstat -a 로 얼마나 많은 커넥션이 만들어졌는 지 체크 , ttcp 로 얼마나 빠르게 문서가 처리되는지 체크한다 .

Maximum Incomming Connections 은 임의로 높게 설정하면 안된다 . 보통 많은 UNIX 시스템에서는 5000 을 사용하지만 잘못 설정할 경우 성능에 영향을 미친다 .

Page 50: OracleAS Web Cache  관리 및 설정 (9.0.4)

50505050

Unix 환경에서의 커넥션 설정

Max_File_Desc : 설정하고자 하는 File Descriptor 의 최대값으로서 이 값에 따라서 커넥션 개수를 설정할 수 있다 .

– Current_ Max_Conn : (Properties>Resource Limits) 에서 설정되는 Maximum Incomming Connections 개수이다 . 클러스터 환경에서는 (Properties>Clustering) 에 있는 클러스터 멤버의 용량도 여기에 포함된다 . * 클러스터 환경에서 클러스터끼리 통신하는데 캐시 컨텐트를 공유하기 위해 사용되는 커넥션 수

– Total_WS_Capacity : 설정된 모든 WS 의 용량 (Origin Servers, Site, and LB >Origin Servers)에서 설정된 값 . 클러스터 환경에서는 Total_WS_Capacity = Sum_Web_Server_Capacity / n(n: 클러스터 멤버수 ) * 클러스터 환경에서 정의된 Origin Server 설정은 같기 때문에 결국 Origin Server 의 캐시 용량은 캐시 클러스터 멤버끼리 공유하는 값이므로 n 으로 나눠준다 .

– Outgoing_Cluster_Conn : 캐시 클러스터에 있는 캐시 멤버들로 나가는 커넥션의 총 개수 (캐시클러스터 환경이 아니면 0) Outgoing_Cluster_Conn = Sum_Cluster_Capacity /(n-1) (n:클러스터멤버수 )

– 100 : Oracle Web Cache 가 내부적으로 사용하기 위한 예약된 값

Max_File_Desc = Current_ Max_Conn + Total_WS_Capacity + Outgoing_Cluster_Conn + 100

Page 51: OracleAS Web Cache  관리 및 설정 (9.0.4)

51515151

네트웍 관련 파라미터 설정

응답 속도가 느리다면 OracleAS Web Cache 와 Web Server 의 설정 변경을 통해서 응답 속도를 향상 시킬 수 있다 .

Web Cache– Keep-Alive Timeout: Web Cache 가 브라우저에게 응답을 보낸 후에 커넥션이 열려 있는 시간을

정의한다 . HTTP Client 가 Web Cache 에 여러개의 요청을 보내을 보낼 경우 Keep-Alive 가 필요할 수 있다 . 기본값으로는 5s 이다 . 만약 브라우저와 Web Cache 사이의 네트웍 상황이 좋지 않다면 더 늘릴 수 있다 . 하지만 이로 인해 Network Incomming Connection 의 제약에 걸려 많은 요청을 처리못하게 될 수도 있으므로 가능한한 기본값으로 설정하는 것이 좋다 . (Properties > Network Timeouts) 에서 설정한다 .

– Origin Server Timeout: 애플리케이션 웹 서버가 Web Cache 에 응답을 하는데 걸리는 시간이다 .애플리케이션 서버로부터 응답시간이 가장 낮은 문서의 응답시간을 기준으로 설정한다 . (Properties > Network Timeouts)

Orign Server(OHS)– KeepAlive: 하나의 클라이언트가 같은 커넥션을 통해서 여러개의 요청을 보낼 수 있다 .– KeepAliveTimeout: 같은 클라이언트로 부터의 다음 요청까지 커넥션이 열려 있는 시간– MaxkeepAliveRequests: 하나의 커넥션에 요청 가능한 최대 요청 수– MaxClients: 웹서버에 동시에 연결할 수 있는 최대 클라이언트 수– 만약에 KeepAlive 가 설정되어 있다면 가능한한 MaxClients 를 최대값으로 설정할 필요가 있다 .

클라이언트의 요청이 보통 응답시간이 짧다면 MaxClients 의 수를 줄이는 것이 좋다 .MaxClients 는 보통 Web Cache 에서 설정한 Origin Server 용량보다는 작아야 한다 .

Page 52: OracleAS Web Cache  관리 및 설정 (9.0.4)

52525252

캐시 히트율

캐시 히트율을 높이기 위해 쿠키와 URL 파라미터를 사용한다 .– Web Cache 는 같은 URL 에 대해서 쿠키나 헤더에 의해서 다양한 버전의 문서를 캐싱한다 .

기본적으로 URL 파라미터에 의해 캐싱을 하지만 불필요한 URL 파라미터에 의해 같은 문서가 여러개 캐시될 수도 있다 .

– 이런 점들을 해결하기 위해 불필요한 URL 파라미터는 줄일 필요가 있다 .– 특정 컨텐트에 개인화된 스트링 몇개를 제외하고 나머지가 같을 경우는 여러 버전으로 중복

캐시를 하지말고 다른 방법을 찾아햐 한다 .– 예를 들어 , 쿠키와 자바스크립트를 이용한다거나 ESI Personalize tag 를 이용한다거나 하면

된다 . 캐시된 문서로 리다이렉션을 사용한다 .

– 메인 페이지와 같은 문서에서는 주로 세션을 만들어주기 때문에 첫 페이지를 캐시하지 못하는 경우가 많다 .

– 이럴 경우 세션 만들어주는 빈 페이지를 만들어 세션을 성립시켜주고 실제 페이지로 리다이렉트를 시켜줄 수 있다 .

– 또한 자바스크립트를 통해 실제 페이지에 세션 쿠키를 설정해줄 수 있다 .

가능하다면 부분 페이지 캐시를 이용한다 .

ESI Variables 를 통해서 간단한 개인화된 부분을 보안해줄 수 있다 .

Page 53: OracleAS Web Cache  관리 및 설정 (9.0.4)

53535353

기타 이슈

Maximum Incomming Connections 체크

Maximum Cache Size 체크

캐시 클러스터 환경에서 클러스터 멤버의 용량이 적당한지 체크(너무 적으면 캐시 멤버로부터 컨텐트를 받지 못할 수도 있다 .)

네트웍 대역폭 확인

CPU 사용에 관련한 성능 체크 (2CPU 에 Dedicated 서버로 배치 )

Page 54: OracleAS Web Cache  관리 및 설정 (9.0.4)

웹 캐시 기타 이슈 및 웹 캐시 기타 이슈 및 Trouble ShootingTrouble Shooting

별첨별첨

Page 55: OracleAS Web Cache  관리 및 설정 (9.0.4)

55555555

웹 캐시 클러스터 구성

Web Cache 1 Web Cache 2

Application Servers

캐시 컨텐트 공유

SecurityAuto-restartApplication Web serversProxy serversSite definitionsSite to srver mappingsCaching rulesError pagesSession management

공유 설정

Process identityNetwork timeoutsResource limitsEnd-User Performance Moni

torEvent logsAccess logsOperationsListener portsOrign server wallet

개별 설정

L4

Page 56: OracleAS Web Cache  관리 및 설정 (9.0.4)

56565656

Trouble Shooting ( 웹 캐시의 Origin 서버 Up/Down 탐지 문제 ) 실제 Origin Server 가 살아있어도 Down 으로 표시되는 경우가 종종 발생한다 . 그렇다고 강제로 Origin

Server 의 상태를 올릴 수는 없다 .

<< 해결 방법해결 방법 >>

Origin Server 에 등록된 ping url 이 제대로 되어 있는지 체크한다 . 별 문제가 없다면 텔넷을 이용하여 해당 ping url 에 직접 요청을 해본다 .

– 500 Internal Server Error 가 떨어지는 경우에는 ping url 을 다른 것으로 바꿔주기 바란다 . (종종 브라우저에서는 제대로 보이나 telnet 으로 보는 경우에는 잘 안나오는 경우가 발생한다 .)

웹 캐시의 버전이 낮은 경우에 Origin 서버의 Ping URL 체크 시에 GET / HTTP/1.0 하고 난 다음에 \n\n 을 붙여서 보내게 되는 경우가 있는데 만일 OC4J 가 직접 Origin 서버로 등록된 경우에 OC4J 는 \r\n\r\n 을 받아야 된다고 인식을 하고 있어 문제가 되는 경우가 종종 있다 .

– OHS 의 경우에는 \n\n 으로 와도 그걸 처리해준다 .– 이 경우에는 웹 캐시가 잘못 요청을 하는 경우인데 이것은 9.0.3.1 이전 버전의 버그로 등록되어 있다 . 이와 같은 경우에는 버그 패치 및 업그레이드가 필요하다 .

– 사이트 마인더를 쓰는 사이트에서는 사이트 마인더가 ping url 을 잡고 웹캐시의 응답에 대한 요청을 잘못 해주는 경우도 있다 . 이럴 때에도 제대로 Origin Server 의 up/down 을 파악하기가 쉽지 않다 . <== 해결과제

$ telnet <host_name> <port>Trying 127.0.0.1...Connected to dioh-kr.kr.oracle.com.Escape character is '^]'.GET ping_url HTTP/1.0