1 / 56

OracleAS Web Cache 관리 및 설정 (9.0.4)

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

iram
Download Presentation

OracleAS Web Cache 관리 및 설정 (9.0.4)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 목차 • 설정 및 관리 • 웹 캐시 관리 • 관리자 암호 설정 및 리슨 포트 설정 • Origin 서버 등록 • 사이트 정의 등록 • 사이트-서버 매핑 설정 • 컨텐트 캐시 • 캐시 룰 작성 및 설정 • 무효화 정책 설정 • 만기 정책 설정 • 컨텐트 부분 캐시(ESI 및 JESI) • 액세스 로그 및 이벤트 로그 • 성능 이슈

  4. 클릭 시 IE에서는 제대로 동작하지 않으므로 http://host:4000/으로 접근하면 된다. 웹 캐시 관리 (홈페이지) • 간단한 모니터링은 홈페이지에서 가능하나 다양한 설정 변경은 웹 캐시 관리 페이지에서 수행한다. • http://localhost:1810

  5. 웹 캐시 관리 (관리 페이지) • http://localhost:4000/webcacheadmin

  6. 웹 캐시 관리 (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

  7. 보안 설정 변경 ③ ② ①

  8. 리스닝 포트 설정

  9. 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

  10. Origin 서버 등록 ① ②

  11. 사이트 정의 애플리케이션 웹 서버 www. 1st. comp.com:80 애플리케이션 웹 서버 www. 2nd. comp.com:80 호스트 1 호스트 2 브라우저 웹 캐시 애플리케이션 웹 서버 www. *. comp.com:80 호스트 3 호스트 4 호스트 5

  12. 사이트 정의 설정 ① ②

  13. 사이트 서버 매핑 설정 ① ②

  14. 목차 • 설정 및 관리 • 컨텐트 캐시 • 캐시 룰 개요 • 캐시 룰 작성 및 설정 • 만기 정책 설정 • 무효화 정책 설정 • 캐시 컨텐트 관리 • 컨텐트 부분 캐시(ESI 및 JESI) • 액세스 로그 및 이벤트 로그 • 성능 이슈

  15. 캐시 룰 개요 • 캐시 룰은 특정 컨텐트 를 캐시 할 것인지 안 할 것인지를 명시하고 어떤 컨텐트를 캐시 할 지 결정하는 규칙이다. • 정적 문서 • 다중 버전 URL • 개인화된 페이지 • 세션 트랙킹을 지원하는 페이지 • HTTP 에러 메시지 • 정규식에 규합되는 URL • 하나의 문서나 서브 트리를 포함하는 URL 트리 • 캐시는 우선 순위 룰에 기반한다.(우선 순위 값이 작을 수록 먼저 처리된다) • 캐시 룰에 의해 캐시된 컨텐트는 만기 정책과 무효화 정책에 의해서 캐시 내용이 갱신될 수 있도록 한다.

  16. 미리 정의된 캐시 룰

  17. 캐시 룰 작성 - 일반 ① ②

  18. 캐시 룰 작성 - 캐시 가능성 규칙 ② ①

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

  20. 무효화 정책 • 캐시 일관성을 위한 무효 • OracleAS Web Cache는 고객의 편의를 위해 Java 및 PL/SQL APIs와 함께 출하되어, 개발자가 무효 로직을 자신의 애플리케이션에 직접 포함시킬 수 있게 되었습니다. • JSP 개발자를 위하여 무효 프로세스를 좀 더 단순화하기 위해, Oracle JSP는 사용자 정의 태그 라이브러리와 함께 출하되며, 이것은 사용이 간편한 <jesi:invalidate> 태그를 통해 JSP에 대한 자동 무효를 지원합니다. Trigger / Programmatic Programmatic 인터넷 사용자 데이타베이스 OracleAS Web Cache 인터넷 Manual or Scripted 관리자

  21. 무효화 정책 설정 –기본 캐시 컨텐트 무효화 ① ② ③

  22. 무효화 정책 설정 –고급 캐시 컨텐트 무효화 ① ② ③

  23. 무효화 정책 설정 –트리거를 이용한 무효화 • PL/SQL 등록 • $ORACLE_HOME/webcache/toolkit의 wxvutil.sql, wxvappl.sql를 등록한다. • wxvutil.sql : 무효화 HTTP request 만들어 를 보내는 PL/SQL 로직 • wxvappl.sql : wxutil.sql의 wrapper • 테이블을 만든다. • 트리거를 만든다. (무효화 URL과 Invalidator의 Port, 암호 설정을 체크한다.) • 테이블의 데이터를 조작한다. 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; /

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

  25. 목차 • 설정 및 관리 • 컨텐트 캐시 • 컨텐트 부분 캐시(ESI 및 JESI) • 컨텐트 부분 캐시란? • ESI 소개 • ESI 기본 구조 및 개발 과정 • ESI 주요 특징 • JESI 소개 • JESI 모델 소개(Template/Fragment, Control/Include 모델) • JESI 태그 설명 • 액세스 로그 및 이벤트 로그 • 성능 이슈

  26. 3.7 Caching 컨텐트 부분 캐시 • 부분 페이지 캐시과 개인화 된 페이지 어셈블리(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 태그 라이브러리와 함께 출하됩니다.

  27. Edge Server Edge Server Edge Server Edge Server Edge Server Edge Server Internet ESI 소개 컨텐트 어셈블리 / 전달 컨텐트 생성 • ESI는 에지 서버에서의 동적 컨텐트 어셈블리를 위해서 컨텐트 조각이라고 불리는 컨텐트의 요소를 식별하는 마크업 언어이다. • ESI를 통해 동적 컨텐트에 대해 부분 캐시 정책과 다양한 만기 정책 적용할 수 있다. 사용자 브라우저 ESI 조각 millions of requests millions of requests 1000s of requests 1000s of requests Inexpensive Infrastructure Less Infrastructure Required

  28. ESI 기본 구조 및 개발 과정 • ESI의 기본 구조는 하나의 컨텐트(Template)를 여러 조각(Fragment)으로 분리하여 그것을 다시 조합하는 구조를 가집니다. • 부분 페이지 캐시를 위한 개발과정 • 전체 페이지를 Templates와 Fragments 로 구성합니다. • 각 Templates와 Fragments에 대해 캐시 정책을 세웁니다. • Web Cache는 Templates와 Fragments로부터 전체 페이지를 통합합니다. Web Cache는 자체가 ESI 프로세서를 내장하므로 에지 네트웍 (Edge Network)에 Akamai와 같은 ESI 전용 프로세서를 둘 필요가 없습니다.

  29. 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>

  30. JESI 소개 • JESI는JSP에서 ESI를 쉽게 표현하기 위해 제공되는 태그 라이브러리이다. • JESI가 제공하는 것들 • JSP 프로그래밍의 편리한 기능을 그대로 이용한다. • 편리한 구문과 태그 속성을 지원한다. • 애플리케이션 레벨의 속성 파일 사용을 지원한다. • 예)무효화 시 사용되는 사용자 이름,패스워드, URL등 미리 지정 • 개발 모델: • Control / Include 모델 : 새 페이지 구성 시 이용 • Template / Fragment 모델 : 기존 페이지 재구성 시 이용

  31. Control/Include 모델 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>

  32. Template/Fragment 모델 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>

  33. <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”] />

  34. <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”] />

  35. <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>

  36. <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>

  37. <JESI:codeblock> • JESI:template내 JESI:fragment 밖에서 정의되어 선택적으로 사용되는 태그이다. • 페이지 내의 코드 블록을 조건적으로 수행하기 위해서 사용된다. • Template가 요청될 때만 수행 • Any Fragments가 요청될 때만 수행 • 항상 수행 <JESI:codeblock execute = “template” | “fragment” | “always” > …Request dependent JSP content… </JESI:codeblock>

  38. <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 />

  39. <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>

  40. <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 />

  41. <JESI:invalidate> Page Invalidation ... <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> ...

  42. Sample Application main.jsp <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> fragment template invalidate.jsp <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>

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

  44. 액세스 로그 관리(1) ② ① ③

  45. 액세스 로그 관리(2) ③ ④ ⑤

  46. 이벤트 로그 관리 ② ① ③

  47. 목차 • 설정 및 관리 • 컨텐트 캐시 • 컨텐트 부분 캐시(ESI 및 JESI) • 액세스 로그 및 이벤트 로그 • 성능 이슈 • CPU 및 메모리 • 네트웍 커넥션 • 유닉스 환경에서의 커넥션 설정 • 네트웍 관련 파라미터 설정 • 캐시 히트율 • 기타 이슈

  48. CPU 및 메모리 • CPU • 웹 캐시의 성능 향상은 CPU의 개수보다는 CPU의 속도에 큰 영향을 받는다. • 웹 캐시의 캐시 서버는 Request 받는 부분과 Request 처리하는 부분으로 나뉘기 때문에 2개의 CPU구성이 최적이다. • 결론적으로 OracleAS Web Cache를 가장 효율적으로 배치하는 방법은 빠른 두개의 CPU에 많은 메모리를 가지는서버에 배치하는 것이다. • 다시 말해, CPU의 4개인 장비에 Web Cache 두개를 올리는 것보다 CPU 2개인 장비 2대에 각각 Web Cache를 설치하는게 훨씬 유리하다. • 메모리 • 정확한 공식 계산은 환경에 따라 크게 다르나 기본적으로 모든 컨텐트를 메모리에서 캐시하기 때문에 많은 메모리 자원이 활용된다.

  49. 네트웍 커넥션 • 네트웍 동시 커넥션 개수와 응답 시간은 반비례 관계에 있다. • 네트웍 커넥션은 다음과 같은 요인들을 고려하여 설정하여야 한다. • 최대 클라이언트 수 • 요청 문서의 평균 사이즈 및 평균 요청 수 • 네트웍 대역폭 • 캐시 실패율 • 클러스터 멤버 용량(다른 캐시 클러스터멤버로부터 들어오는 커넥션 수 설정) • netstat -a 로 얼마나 많은 커넥션이 만들어졌는 지 체크, ttcp로 얼마나 빠르게 문서가 처리되는지 체크한다. • Maximum Incomming Connections은 임의로 높게 설정하면 안된다. 보통 많은 UNIX 시스템에서는5000을 사용하지만 잘못 설정할 경우 성능에 영향을 미친다.

  50. 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

More Related