动态高速缓存服务的故障诊断技巧

动态高速缓存服务在应用程序服务器 Java™ 虚拟机 (JVM) 中工作,并拦截对可高速缓存对象进行的调用。

不高速缓存 Servlet

建议响应

启用 Servlet 高速缓存。在管理控制台的“Web 容器设置”页面上,选中启用 Servlet 高速缓存复选框。

高速缓存条目不写到磁盘

说明 建议响应
当高速缓存已满并且有新条目添加到内存高速缓存时,高速缓存条目写至磁盘。当在管理控制台中启用了“清仓至磁盘”而服务器已停止时,仍将高速缓存条目写至磁盘。

请验证是否在管理控制台的“动态高速缓存服务设置”页面上启用了“磁盘减负”。此外,还要验证写入磁盘的高速缓存条目是否可序列化,并且不要将 PersistToDisk 配置设置为 false

一些 Servlet 没有复制或写到磁盘

建议响应
确保属性和响应是可序列化的。如果您不想存储属性,那么使用高速缓存策略中的以下属性:
<property name="save-attributes">false</property>

动态高速缓存服务不高速缓存 Edge 上的片段

建议响应
在那些要在 Edge 上高速缓存的条目的高速缓存策略中将 EdgeCacheable 属性设置为 true
<property name="EdgeCacheable">true</property>

未将动态高速缓存无效发送到 IBM HTTP Server 插件

说明 建议响应
需要 DynaCacheEsi.ear 文件来将失效发送到外部高速缓存。

使用管理控制台安装 DynaCacheEsi.ear 文件。

经常逐出高速缓存条目

问题 说明 建议响应
高速缓存已满并且将新条目添加到高速缓存。 当高速缓存已满并且新条目被添加到高速缓存时,高速缓存条目被逐出。最近最少使用 (LRU) 逐出机制会移除最近最少使用的条目来为新的条目留出空间。

在管理控制台的“动态高速缓存服务设置”页面上启用“磁盘减负”,以便将条目写入磁盘。您还可以增加高速缓存大小以使高速缓存中能够容纳更多条目。

磁盘中超时设置为 0 的高速缓存条目会在一天后到期

说明 建议响应
磁盘高速缓存中条目的最大生存期为 24 小时。高速缓存策略中的 0 超时配置这些条目以在磁盘高速缓存中驻留一整天,除非它们先前已经被逐出。 将高速缓存策略的超时设置为小于 0 的数字。

无法监视 Edge 上的高速缓存条目

说明 建议响应

使用“动态高速缓存监视器”来监视内存高速缓存、磁盘高速缓存和外部高速缓存(如边缘高速缓存)的内容。对于要在高速缓存监视器中可以见到的 ESI 处理器的高速缓存,必须安装DynaCacheEsi.ear 应用程序并且 esiInvalidationMonitor 属性必须在 plugin-cfg.xml 文件中设置为 true

plugin-cfg.xml 文件中将 esiInvalidationMonitor 属性设置为 true。请参阅“显示高速缓存信息”一文,以获取关于监视动态高速缓存服务活动的更多信息。

为环境微调高速缓存

建议响应
使用 Tivoli® Performance 查看器来研究应用程序的高速缓存行为。还要考虑执行以下操作:
  • 增加重新生成的成本较高的高速缓存条目的优先级。
  • 修改条目的超时,以便只要有效使它们驻留在内存中。
  • 启用磁盘减负来存储 LRU 逐出的条目。
  • 增加高速缓存大小。

在安装修订包或新的发行版后清除磁盘高速缓存文件

症状 问题 建议响应
如果服务器配置为使用磁盘高速缓存,那么您必须删除磁盘高速缓存文件,这是因为磁盘高速缓存文件与先前的版本不兼容。 当您从磁盘访问高速缓存时,如果移除旧的磁盘高速缓存文件失败,那么会在 systemerr.log 文件中导致出现 ClassCastException 错误。
注: 本主题引用了一个或多个应用程序服务器日志文件。作为另一种建议采用的方法,您可以在分布式系统和 IBM® i 系统上配置服务器以使用高性能可扩展日志记录 (HPEL) 记录和跟踪基础结构,而不使用 SystemOut.logSystemErr.logtrace.logactivity.log 文件。您还可以将 HPEL 与本机 z/OS® 日志记录设施结合使用。如果要使用 HPEL,那么可从服务器概要文件 bin 目录使用 LogViewer 命令行工具来访问所有日志和跟踪信息。有关使用 HPEL 的更多信息,请参阅有关使用 HPEL 对应用程序进行故障诊断的信息。
要删除磁盘高速缓存,执行以下步骤:
  1. 注意磁盘减负位置。如果您不知道磁盘高速缓存卸载位置,请执行以下步骤:
    1. 在管理控制台导航树中,单击服务器 > 应用程序服务器 > server_name > 容器服务 > 动态高速缓存服务
    2. 在“磁盘减负”字段中指定位置。如果未指定位置,那么将使用缺省目录 profile_root/temp/your_node/server_name/_dynacache
  2. 确保停止服务器并在卸载位置下删除所有文件。
  3. 如果您使用 WebSphere® Application Server Network Deployment 产品,那么删除每个服务器的磁盘高速缓存文件。

在可高速缓存的 JavaServer Pages 文件中的每个 <jsp:include> 标记上将 flush 属性设置为 true

请确保在可高速缓存的 JSP 文件中的每个 <jsp:include> 标记上将 flush 属性设置为 true。

症状 问题 描述 建议响应
当您获得来自动态高速缓存的 Java Server Pages (JSP) 文件时,无法显示页面的某一部分。 在 JSP 文件中的 <jsp: include> 标记上将 flush 属性设置为 false。 当可高速缓存的 JSP 文件包括另一个 JSP 文件时,如果 <jsp: include> 标记上将 flush 属性设置为 false,那么不会高速缓存 <jsp: include> 标记前写到父输出流的任何数据。 在可高速缓存的 JSP 文件中在每个 <jsp: include> 标记上设置 flush=true
[z/OS]

当应用程序服务器空闲时的文件系统 I/O 活动

症状 说明 可能的响应 建议响应
当应用程序服务器空闲时,会遇到文件系统 I/O 活动。即使没有定义高速缓存策略,WebSphere Application Server 也轮询分层文件系统 (HFS) 的 cachespec.xml 文件。 动态高速缓存每 30 秒查询文件系统一次,以检查对高速缓存策略文件的更新。通过检查高速缓存策略文件更新,动态高速缓存可以自动更改任何已改变的高速缓存策略。

缺省情况下,会启用动态高速缓存,因为由于性能原因,几个系统组件依赖于它。可以通过使用 wsadmin 脚本编制或通过管理控制台来禁用动态高速缓存服务。请参阅“使用动态高速缓存服务”主题,以获取关于启用动态高速缓存服务的更多信息。

警告:
通过禁用动态高速缓存,您可能会遇到安全性能降低的问题,这是因为它使用了动态高速缓存服务的分布式映射功能。
在可高速缓存的 JSP 文件中在每个 <jsp: include> 标记上设置 flush=true

当使用 JSTL <c:import> 标记来包括片段时的动态高速缓存局限性

问题 描述 建议响应
在使用 JavaServer Pages 标准标记库 (JSTL) <c:import> 标记包括了可高速缓存的片段时,部分页面内容会消失,而部分页面内容却对一次高速缓存命中显示两次。 动态高速缓存依赖于在包括片段前后清空内容,这样可以使父内容在包括之前不会丢失,还可以防止将子内容拉入父片段中。

但是,在使用 JSTL <c:import> 标记的情况下,不支持在实际调用子片段之前清空父写程序的 flush=true 属性。另外,JSTL 会对响应进行缓存,以便在子片段执行完之后子写程序不会立即被清空。随后,子响应被拉入父响应中。

限制:
当在高速缓存的 JavaServer Pages Dynamic (JSP) 文件中使用 JSTL <c:import> 标记时,动态高速缓存将返回多个 include 语句。
为了避免此问题,请将 out.flush 方法语句置于 <c:import> 语句前后,如下所示:
<% out.flush(); %>
<c:import url="DNCParent2.jsp" />
<% out.flush(); %> 

服务集成总线消息重复

在托管生产应用程序的集群成员的日志中,服务集成总线消息重复。

问题 建议响应
在多单元环境中,在托管生产应用程序的集群成员的日志中,下列消息重复:
[time_stamp] CWSIT0007W: It is not possible to contact
 the bootstrap server at 
 9.9.9.9:7299:BootstrapBasicMessaging because of exception: 
 com.ibm.websphere.sib.exception.SIResourceException: 
 CWSIC1001E: 
A client attempted to connect with a remote messaging
 engine (9.9.9.9:7299 - BootstrapBasicMessaging) but
 the connection cannot be completed. Ensure the
 messaging engine is started: exception com.ibm.ws.sib
 .jfapchannel.JFapConnectFailedException: CWSIJ0063E: A 
 network connection to host name 9.9.9.9, port 7299
 cannot be established...
[time_stamp] 00000023 SystemOut O RemoteInvalidator
 unable to connect to ...
首先,确保远程单元中的每个服务集成总线成员都已启动。然后,确保为远程单元或核心组中的每个服务集成总线成员正确指定了 SIB_ENDPOINT_ADDRESS 端口。如果指定的端口不正确,请删除出站配置“--setup=dynacacheOutSIB --delete...”,并使用正确的端口重新配置。所有配置都正确运行时,日志中将显示类似如下的消息:
[time_stamp] 0000000a RemoteInvalid I   
DYNA1075I: The "RemoteJMSInvalidator" external 
cache group is connected. The configured JNDI name
of the queue connection factory is 
"DynacacheDestination-cell2" and the JNDI name of 
the targeted destination is 
"jms/DynacacheOutBoundConnectionFactory-cell1".

平台消息传递组件无法认证用户标识

说明 建议响应
在多单元环境中,服务集成总线成员发生以下错误:
[time_stamp] 00000022 SibMessage   E  [:] CWSII0050E: 
The Platform Messaging Component can not authenticate 
the user ID.
此消息可能会造成误导,这是因为动态高速缓存服务不使用安全总线。
此消息可能表示发生下列其中一个问题:

服务集成总线服务器正在接收获取不存在的总线目标的请求。请确保在发送单元中执行“--setup=dynacacheOutSIB”和“--setup=dynacacheECA”时使用了正确的远程单元名。

没有可用的服务集成总线成员。发生此问题的原因通常是,在执行入站设置“--setup=dynacacheInSIB”时指定了不正确的集群。请确保为“--cluster”选项指定了服务集成总线集群,而不是指定了其他某个集群。

消息传递引擎的唯一标识与在数据存储器中发现的标识不匹配

说明 建议响应
在多单元环境中,服务集成总线成员发生以下错误:
[DynacacheBus-edgeaphid10Cell01-cg2:edgeaphid10Node01.
 cg2SIBServer-DynacacheBus-edgeaphid10Cell01-cg2] 
CWSIS1535E: The messaging engine's unique id does not
 match that found in the data store. 
 ME_UUID=D520787E8CA7F18A, ME_UUID(DB)=980C0B42B3A904F3
[time_stamp] 0000002f SibMessage    I   
[DynacacheBus-edgeaphid10Cell01-cg2:edgeaphid10Node01.
 cg2SIBServer-DynacacheBus-edgeaphid10Cell01-cg2] 
CWSIS1546I: The messaging engine, 
 ME_UUID=D520787E8CA7F18A, INC_UUID=7228ea45e216f3ef,
 has lost an existing lock or failed to gain an initial
 lock on the data store.
[time_stamp] 0000002f SibMessage    I   
[DynacacheBus-edgeaphid10Cell01-cg2:edgeaphid10Node01.
 cg2SIBServer-DynacacheBus-edgeaphid10Cell01-cg2] 
CWSIS1519E: Messaging engine edgeaphid10Node01.
 cg2SIBServer-DynacacheBus-edgeaphid10Cell01-cg2 
 cannot obtain the lock on its data store, which ensures 
 it has exclusive access to the data.
[time_stamp] 0000002d SibMessage    E   
[DynacacheBus-edgeaphid10Cell01-cg2:edgeaphid10Node01.
 cg2SIBServer-DynacacheBus-edgeaphid10Cell01-cg2] 
CWSIS0002E: The messaging engine encountered an exception
 while starting. Exception: com.ibm.ws.sib.msgstore.
 PersistenceException: 
 CWSIS1501E: The data source has produced an unexpected
 exception: com.ibm.ws.sib.msgstore.persistence.
 DatasourceWrapperStateException: New connections cannot
 be provided because the persistence layer has been
 stopped	at com.ibm.ws.sib.msgstore.persistence.impl.
 PersistentMessageStoreImpl.start
 (PersistentMessageStoreImpl.java:188)
	at com.ibm.ws.sib.msgstore.impl.MessageStoreImpl.
   start(MessageStoreImpl.java:1175)
	at com.ibm.ws.sib.admin.impl.JsMessagingEngineImpl.
	 start(JsMessagingEngineImpl.java:491)

停止服务器,删除 WAS_INSTALL_ROOT\profiles\AppSrv01\filestores\com.ibm.ws.sib 中与该服务集成总线成员相对应的目录,然后重新启动服务器。

dynacacheJMSSIB 脚本找不到 DynacacheMessageHandler.ear 文件

说明 建议响应
在多单元环境中,dynacacheJMSSIB 脚本找不到 DynacacheMessageHandler.ear 文件,并且日志中出现以下消息:
WASX7017E: Exception received while running file 
"../../../util/dynacacheJMSSIB.py"; exception 
information: 
com.ibm.ws.scripting.ScriptingException: WASX7115E: 
Cannot read input file "/opt/WAS/6.1/cf270928.19
 /profiles/AppSrv01/logs/DynacacheMessageHandler.ear"
WAS_INSTALL_ROOT/profiles/PROFILE_NAME/bin 运行 dynacacheJMSSIB 脚本,以便该脚本能够在相应的相对路径中找到 ../../../util/dynacacheJMSSIB.py 和 ../../../installableApps/DynacacheMessageHandler.ear。

指示主题类型的图标 参考主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rdyn_trb
文件名:rdyn_trb.html