동적 캐시 서비스에 대한 문제점 해결 팁
동적 캐시 서비스는 캐시 가능한 오브젝트로 호출을 인터셉트하면서 Application Server JVM(Java™ Virtual Machine) 내에서 작동합니다.
Servlet이 캐싱되지 않음
권장되는 응답 |
---|
서블릿 캐싱을 사용으로 설정하십시오. 관리 콘솔의 웹 컨테이너 설정 페이지에서 Servlet 캐싱 사용 선택란을 선택하십시오. |
캐시 항목이 디스크에 기록되지 않음
설명 | 권장되는 응답 |
---|---|
캐시가 가득 찼거나 새 항목이 메모리 캐시에 추가되는 경우에는 캐시 항목을 디스크에 기록합니다. 캐시 항목은 또한 디스크로 비우기가 관리 콘솔에서 사용 가능하고 서버가 중지된 경우에 디스크에 쓰여집니다. | 관리 콘솔의 동적 캐시 서비스 설정 페이지에서 디스크 오프로드가 사용 가능으로 설정되었는지 확인하십시오. 디스크에 기록된 캐시 항목이 직렬화 가능하고 PersistToDisk 구성을 false로 설정하지 않는지도 확인하십시오. |
몇몇 Servlet이 복제되거나 디스크에 기록되지 않음
권장되는 응답 |
---|
속성 및 응답이 직렬화 가능한지 확인하십시오.
속성을 저장하지 않으려면 캐시 정책에서 다음 특성을
사용하십시오. <property name="save-attributes">false</property> |
동적 캐시 서비스가 에지(Edge)에서 단편을 캐싱하지 않음
권장되는 응답 |
---|
에지에서 캐싱될 항목의 캐시 정책에서 EdgeCacheable
특성을 true로 설정하십시오. <property name="EdgeCacheable">true</property> |
동적 캐시 무효화가 IBM HTTP Server 플러그인으로 전송되지 않음
설명 | 권장되는 응답 |
---|---|
무효화를 외부 캐시로 전송하려면 DynaCacheEsi.ear 파일이 필요합니다. | 관리 콘솔을 사용하여 DynaCacheEsi.ear 파일을 설치하십시오. |
캐시 항목이 경우에 따라 제거됨
문제점 | 설명 | 권장되는 응답 |
---|---|---|
캐시가 가득 찼고 새 항목이 캐시에 추가됩니다. | 캐시가 가득 찼거나 새 항목이 캐시에 추가되는 경우에는 캐시 항목이 축출됩니다. 가장 최근 사용(LRU) 축출 메커니즘은 새 항목을 위한 공간을 만들기 위해 가장 이전에 사용된 항목을 제거합니다. | 항목을 디스크에 기록할 수 있도록 관리 콘솔의 동적 캐시 서비스 설정 페이지에서 디스크 오프로드를 사용으로 설정하십시오. 또한 캐시에 더 많은 항목을 담을 수 있도록 캐시 크기를 늘릴 수 있습니다. |
디스크에서 제한시간이 0으로 설정된 캐시 항목이 하루가 지난 후에 만기됨
설명 | 권장되는 응답 |
---|---|
디스크 캐시에 있는 항목의 최대 지속 시간은 24시간입니다. 캐시 정책에서 시간 제한 0은 이러한 항목이 축출되지 않는 한 하루 동안 디스크 캐시에 머물도록 구성합니다. | 캐시 정책의 제한시간을 0보다 작은 숫자로 설정하십시오. |
에지에서 캐시 항목을 모니터할 수 없음
설명 | 권장되는 응답 |
---|---|
동적 캐시 모니터를 사용하여 에지 캐시와 같은 외부 캐시, 메모리 캐시 및 디스크 캐시의 컨텐츠를 모니터하십시오. ESI 프로세서의 캐시가 캐시 모니터에 표시되도록 하려면 DynaCacheEsi.ear 애플리케이션이 설치되어야 하고 plugin-cfg.xml 파일에서 esiInvalidationMonitor 특성은 true로 설정되어야 합니다. |
plugin-cfg.xml 파일의 esiInvalidationMonitor 특성을 true로 설정하십시오. 동적 캐시 서비스 활동 모니터링에 대한 자세한 정보는 캐시 정보 표시 주제를 참조하십시오. |
캐시를 내 환경에 맞춰 미세 조정
권장되는 응답 |
---|
애플리케이션에 대한 캐싱
동작을 연구하려면 Tivoli® Performance viewer를
사용하십시오. 또한 다음 조치의 수행도
고려하십시오.
|
수정팩이나 새 릴리스를 설치한 후 디스크 캐시 파일 정리
증상 | 문제점 | 권장되는 응답 |
---|---|---|
디스크 캐시를 사용하도록 서버를 구성한 경우 디스크 캐시 파일이 이전 버전과 호환되지 않으므로 디스크 캐시 파일을 삭제해야 합니다. | 이전 디스크 캐시 파일을 제거하지 않으면 디스크에서
캐시에 액세스할 때 systemerr.log 파일에 ClassCastException 오류가
발생합니다. 참고: 이 주제는 하나 이상의 애플리케이션 서버 로그 파일을
참조합니다. 권장되는 대안은 분배 및 IBM® i 시스템에서 SystemOut.log, SystemErr.log, trace.log 및 activity.log 파일을 사용하는 대신
HPEL(High Performance Extensible Logging) 로그를 사용하고
인프라를 추적하도록 서버를 구성하는 것입니다. 원시 z/OS® 로깅 기능과 연계하여 HPEL을 사용할 수도 있습니다. HPEL을 사용하는 경우
서버 프로파일 바이너리 디렉토리의 LogViewer 명령행 도구를 사용하여
모든 로그에 액세스하고 정보를 추적할 수 있습니다. HPEL 사용에 대한 자세한 정보는
HPEL을 사용한 애플리케이션 문제점 해결 정보를
참조하십시오.
|
디스크 캐시를 삭제하려면 다음 단계를 수행하십시오.
|
캐시 가능한 JavaServer Pages 파일의 모든 <jsp:include> 태그를 켜도록 비우기 속성 설정
캐시 가능한 JavaServer Pages 파일의 모든 <jsp:include> 태그에서 비우기 속성을 true로 설정하는지 확인하십시오.
증상 | 문제점 | 설명 | 권장되는 응답 |
---|---|---|---|
JSP(JavaServer Pages) 파일을 동적 캐시에서 가져오면 페이지의 일부가 표시되지 않습니다. | 비우기 속성이 JSP 파일의 <jsp: include> 태그에서 false로 설정되어 있습니다. | 캐시 가능한 JSP 파일에 다른 JSP 파일이 포함되고 비우기 속성이 <jsp: include> 태그에서 false로 설정된 경우 <jsp: include> 태그 앞의 상위 출력 스트림에 기록한 데이터는 캐시되지 않습니다. | 캐시 가능한 JSP 파일에서 모든 <jsp: include> 태그에서 flush=true를 설정하십시오. |
![[z/OS]](../images/ngzos.gif)
애플리케이션 서버가 대기 상태일 때의 파일 시스템 I/O 활동
증상 | 설명 | 가능한 응답 | 권장되는 응답 |
---|---|---|---|
애플리케이션 서버가 대기 상태인 경우 파일 시스템 I/O 활동이 발생합니다. WebSphere Application Server는 캐시 정책이 정의되지 않은 경우에도 cachespec.xml 파일에 대해 HFS(Hierarchical File System)를 폴링합니다. | 동적 캐시는 캐시 정책 파일의 업데이트를 확인하기 위해 30초마다 파일 시스템을 조회합니다. 캐시 정책 파일 업데이트를 확인하여 동적 캐시는 변경된 모든 캐시 정책을 자동으로 업데이트할 수 있습니다. | 성능상의 이유로 여러 시스템 컴포넌트가 동적 캐시를 사용하므로 동적 캐시는 기본적으로 사용 가능합니다. wsadmin 스크립트를 사용하거나 관리 콘솔을 통해 동적 캐시 서비스를 사용 안함으로 설정할 수 있습니다. 동적 캐시 서비스 사용 설정에 대한 자세한 정보는 동적 캐시 서비스 사용 주제를 참조하십시오. 경고: 동적 캐시를 사용 안함으로 설정하면 동적
캐시 서비스의 분배된 맵핑 기능을 사용하므로 보안 성능이
저하될 수 있습니다.
|
캐시 가능한 JSP 파일에서 모든 <jsp: include> 태그에서 flush=true를 설정하십시오. |
JSTL <c:import> 태그를 사용하여 단편을 포함할 경우 동적 캐시 제한사항
문제점 | 설명 | 권장되는 응답 |
---|---|---|
JSTL(JavaServer Pages Standard Tag Library) <c:import> 태그를 사용하여 캐시 가능한 단편이 포함된 경우, 캐시 히트 시 페이지 컨텐츠의 일부는 사라지고 일부는 두 번 표시될 수 있습니다. | 동적 캐시는 단편 포함 이전 및 이후에 컨텐츠
비우기에 종속되어 포함 이전의 상위 컨텐츠가 유실되지
않으므로 하위 컨텐츠가 상위 단편으로 풀(pull)되지
않게 합니다. 그러나 JSTL <c:import> 태그의 경우, 실제로 하위 단편이 호출되기 전에 상위 작성자를 비우는 flush=true 속성은 지원되지 않습니다. 또한 JST은 응답을 버퍼에 넣으므로 하위 단편이 완료된 후에 하위 작성자가 비워지지 않습니다. 그 후, 하위 응답은 상위 단편으로 풀(pull)됩니다. 제한사항:
동적 캐시는 JSTL
<c:import> 태그가 캐시된 JSP(JavaServer Pages) 파일에
사용되는 경우 여러 개의 포함 명령문을 리턴합니다. |
이러한 문제점을 방지하려면 다음과 같이 <c:import>문을
out.flush 메소드 명령문으로 묶으십시오.
|
서비스 통합 버스 메시지가 반복됨
서비스 통합 버스 메시지가 프로덕션 애플리케이션을 호스팅하는 클러스터 멤버의 로그에서 반복됩니다.
문제점 | 권장되는 응답 |
---|---|
다중 셀 환경에서, 프로덕션 애플리케이션을 호스팅하는
클러스터 멤버의 로그에서 다음 메시지가 반복됩니다.
|
먼저, 원격 셀의 각 서비스 통합 버스 멤버가 시작되었는지
확인하십시오. 다음으로, 원격 셀 또는 코어 그룹에서 서비스
통합 버스 멤버마다 SIB_ENDPOINT_ADDRESS 포트가 올바르게
지정되었는지 확인하십시오. 잘못된 포트가 지정되는 경우
아웃바운드 구성 "--setup=dynacacheOutSIB --delete..."를 삭제하고
올바른 포트를 사용하여 재구성하십시오. 모든 것이 올바르게
작동 중일 때 다음 메시지와 유사한 메시지가 로그에
표시됩니다.
|
플랫폼 메시징 컴포넌트가 사용자 ID를 인증할 수 없음
설명 | 권장되는 응답 |
---|---|
다중 셀 환경에서 서비스 통합 버스 멤버에 다음과 같은 오류가
있습니다.
동적 캐시 서비스가 보안 버스를 사용하지 않기
때문에 이 메시지는 오해 소지가 있을 수 있습니다. |
이 메시지는 다음 문제점 중 하나를 표시할 수 있습니다. 서비스 통합 버스 서버가 존재하지 않는 버스 대상에 대한 요청을 수신 중입니다. 송신하는 셀에서 "--setup=dynacacheOutSIB" 및 "--setup=dynacacheECA"를 실행할 때 올바른 원격 셀 이름이 사용되었는지 확인하십시오. 서비스 통합 버스 멤버를 사용할 수 없습니다. 이 문제점은 종종 인바운드 설정 "--setup=dynacacheInSIB"를 수행할 때 잘못된 클러스터가 지정되어서 발생합니다. "--cluster" 옵션에 서비스 통합 버스 클러스터가 지정되고 다른 클러스터가 지정되지 않도록 확인하십시오. |
메시징 엔진의 고유 ID가 데이터 저장소에 있는 ID와 일치하지 않음
설명 | 권장되는 응답 |
---|---|
다중 셀 환경에서 서비스 통합 버스 멤버에 다음과 같은 오류가
있습니다.
|
서버를 중지하고, 서비스 통합 버스 멤버에 해당되는 WAS_INSTALL_ROOT\profiles\AppSrv01\filestores\com.ibm.ws.sib에서 디렉토리를 삭제한 후 서버를 다시 시작하십시오. |
dynacacheJMSSIB 스크립트가 DynacacheMessageHandler.ear 파일을 찾을 수 없음
설명 | 권장되는 응답 |
---|---|
다중 셀 환경에서, dynacacheJMSSIB 스크립트가
DynacacheMessageHandler.ear 파일을 찾을 수 없어서 다음 메시지가
로그에 표시됩니다.
|
적절한 상대 경로에서 ../../../util/dynacacheJMSSIB.py와 ../../../installableApps/DynacacheMessageHandler.ear을 찾을 수 있도록 WAS_INSTALL_ROOT/profiles/PROFILE_NAME/bin에서 dynacacheJMSSIB 스크립트를 실행하십시오. |