磁盘高速缓存基础结构增强
动态高速缓存服务可以使用几种性能增强功能:
动态高速缓存服务支持将对象持久保存到磁盘(由文件系统位置指定),以便应用程序服务器不重新生成从内存高速缓存中逐出的对象。 使用“最近最少使用”(LRU) 逐出算法从内存中逐出对象时,这些对象将被写入磁盘中。 正常关闭服务器时,内存高速缓存中的对象也可能被清空到磁盘中。 需要卸载到磁盘的 Java™ 对象应该可序列化。
- 一种内部磁盘高速缓存格式,可更快地进行删除并支持用于限制磁盘高速缓存大小的新选项
- 磁盘高速缓存垃圾回收器,当达到配置的高阈值时,它会将对象逐出到高速缓存外
- 四种新的性能方式,用于调整磁盘高速缓存性能:
- 高性能/内存使用情况方式 - 将所有元数据保存在系统内存中并提供最高性能
- 平衡的性能/内存使用情况方式 - 通过将一些元数据保存在系统内存中,提供性能和内存使用情况的最佳平衡
- 定制性能/内存使用情况方式 - 允许显式配置内存使用情况并定制性能要求
- 低性能/内存使用情况方式 - 对于系统内存非常有限的用户,将大多数元数据存储在磁盘上
限制磁盘高速缓存。 动态高速缓存服务通过指定磁盘高速缓存的大小(以千兆字节计)和持久保存到磁盘上的最大条目数,提供了几种限制使用磁盘高速缓存的机制。 达到任一限制时就认为磁盘高速缓存已满,并构成从磁盘中逐出对象的基础。 如果由于以下任一情况而导致高速缓存子系统无法将更多数据卸载到磁盘,那么将会禁用磁盘减负功能以防止出现数据完整性问题:不满足磁盘空间条件、 磁盘上的空间不足或由于磁盘可能损坏而导致在将数据写入磁盘时发生异常。 将记录该事件并删除磁盘高速缓存子系统。 这将防止在重新启动时处理高速缓存中的损坏数据。 如果已打开用于持久保存高速缓存数据的选项,那么在关闭服务器时,诸如依赖性和模板信息之类的一些信息将清空到磁盘上。 如果在关闭服务器过程中出现磁盘已满情况,那么会从高速缓存中移除任何部分持久和不持久的依赖性或模板数据。 保持完整性操作的副作用是会使依赖性或模板数据关联的已高速缓存对象失效。
磁盘高速缓存大小(以 GB 计)。 “磁盘高速缓存大小(以 GB 计)”选项主要与写入到磁盘的对象数据(包括已高速缓存的对象、该对象的标识和诸如到期时间之类的元数据)、模板信息和依赖性信息相关。 高速缓存子系统将根据需要为对象数据、模板和依赖项分配单独的存储器和卷(每个存储器和卷可以增大到 1 GB)。 当磁盘上的总卷数超过指定的高速缓存大小时,将废弃后续写入磁盘的任何数据,直到磁盘高速缓存垃圾回收器让更多空间可用为止。 为了保持数据完整性,也会使与废弃的对象相关的任何信息失效。 垃圾回收阈值(在本文档中进行描述)和磁盘高速缓存已满状态与可用于对象数据的空间关联。 在极少数的情况下,将信息清空到磁盘时,还可以需要将关键系统数据写入磁盘,这可能导致需要的文件系统总空间大小超出指定的最大限制多达 5%。 建议可用于磁盘高速缓存的实际文件系统空间至少比指定的磁盘高速缓存大小(以 GB 计)多出 25% 的空间。 还要求每个高速缓存实例都有唯一的磁盘减负位置,并建议每个减负位置位于专门的磁盘分区上。 高速缓存文件系统使用逻辑文件管理器来管理已高速缓存对象的存储器分配,因此,文件系统大小或高速缓存目录中的文件大小可能不是高速缓存子系统的可用空间的准确数字。 同时,由于限制已调整,高速缓存子系统在接近指定的最大限制(以分配的文件系统空间度量)之前可能会遇到高速缓存已满状态。 PMI 计数器可更好地说明高速缓存的已满情况。
profile_home/config/cells/cell_name/nodes/node_name
/servers/server_name/extensionregistry.properties