动态高速缓存服务的故障诊断技巧
动态高速缓存服务在应用程序服务器 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 查看器来研究应用程序的高速缓存行为。还要考虑执行以下操作:
|
在安装修订包或新的发行版后清除磁盘高速缓存文件
症状 | 问题 | 建议响应 |
---|---|---|
如果服务器配置为使用磁盘高速缓存,那么您必须删除磁盘高速缓存文件,这是因为磁盘高速缓存文件与先前的版本不兼容。 | 当您从磁盘访问高速缓存时,如果移除旧的磁盘高速缓存文件失败,那么会在 systemerr.log 文件中导致出现 ClassCastException 错误。 注: 本主题引用了一个或多个应用程序服务器日志文件。作为另一种建议采用的方法,您可以在分布式系统和 IBM® i 系统上配置服务器以使用高性能可扩展日志记录 (HPEL) 记录和跟踪基础结构,而不使用 SystemOut.log、SystemErr.log、trace.log 和 activity.log 文件。您还可以将 HPEL 与本机 z/OS® 日志记录设施结合使用。如果要使用 HPEL,那么可从服务器概要文件
bin 目录使用 LogViewer 命令行工具来访问所有日志和跟踪信息。有关使用
HPEL 的更多信息,请参阅有关使用 HPEL 对应用程序进行故障诊断的信息。
|
要删除磁盘高速缓存,执行以下步骤:
|
在可高速缓存的 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]](../images/ngzos.gif)
当应用程序服务器空闲时的文件系统 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> 语句前后,如下所示:
|
服务集成总线消息重复
在托管生产应用程序的集群成员的日志中,服务集成总线消息重复。
问题 | 建议响应 |
---|---|
在多单元环境中,在托管生产应用程序的集群成员的日志中,下列消息重复:
|
首先,确保远程单元中的每个服务集成总线成员都已启动。然后,确保为远程单元或核心组中的每个服务集成总线成员正确指定了
SIB_ENDPOINT_ADDRESS 端口。如果指定的端口不正确,请删除出站配置“--setup=dynacacheOutSIB --delete...”,并使用正确的端口重新配置。所有配置都正确运行时,日志中将显示类似如下的消息:
|
平台消息传递组件无法认证用户标识
说明 | 建议响应 |
---|---|
在多单元环境中,服务集成总线成员发生以下错误:
此消息可能会造成误导,这是因为动态高速缓存服务不使用安全总线。 |
此消息可能表示发生下列其中一个问题: 服务集成总线服务器正在接收获取不存在的总线目标的请求。请确保在发送单元中执行“--setup=dynacacheOutSIB”和“--setup=dynacacheECA”时使用了正确的远程单元名。 没有可用的服务集成总线成员。发生此问题的原因通常是,在执行入站设置“--setup=dynacacheInSIB”时指定了不正确的集群。请确保为“--cluster”选项指定了服务集成总线集群,而不是指定了其他某个集群。 |
消息传递引擎的唯一标识与在数据存储器中发现的标识不匹配
说明 | 建议响应 |
---|---|
在多单元环境中,服务集成总线成员发生以下错误:
|
停止服务器,删除 WAS_INSTALL_ROOT\profiles\AppSrv01\filestores\com.ibm.ws.sib 中与该服务集成总线成员相对应的目录,然后重新启动服务器。 |
dynacacheJMSSIB 脚本找不到 DynacacheMessageHandler.ear 文件
说明 | 建议响应 |
---|---|
在多单元环境中,dynacacheJMSSIB 脚本找不到
DynacacheMessageHandler.ear 文件,并且日志中出现以下消息:
|
从 WAS_INSTALL_ROOT/profiles/PROFILE_NAME/bin 运行 dynacacheJMSSIB 脚本,以便该脚本能够在相应的相对路径中找到 ../../../util/dynacacheJMSSIB.py 和 ../../../installableApps/DynacacheMessageHandler.ear。 |