Hazelcast较Ehcache性能慢10倍,求Spring Boot下优化配置
优化单节点Hazelcast缓存性能的配置方案
你遇到的问题很典型:Hazelcast默认是为集群场景设计的,单节点下如果不做针对性配置,会保留很多集群相关的开销,导致性能不如专注本地缓存的Ehcache。结合你的需求(单节点、基础缓存+过期),可以通过以下配置优化性能:
一、完全禁用集群网络模块
你的当前配置只关闭了自动发现,但Hazelcast依然会启动网络相关组件(比如心跳线程、成员管理),这会带来不必要的性能损耗。直接禁用整个网络模块,让Hazelcast运行在纯本地模式:
<hazelcast> <network enabled="false"/> <!-- 完全禁用网络,进入本地模式 --> <map name="some-cache"> <time-to-live-seconds>20</time-to-live-seconds> </map> </hazelcast>
二、优化Map的存储与序列化
默认Java序列化性能很差,是导致缓存读写慢的核心原因之一。同时调整内存存储格式,减少序列化/反序列化开销:
1. 切换到高效序列化方式
推荐使用Hazelcast自带的Compact序列化(比Java序列化快数倍),只需要修改你的SomeDto:
import com.hazelcast.nio.serialization.compact.Compactable; import lombok.AllArgsConstructor; import lombok.Data; @Data @AllArgsConstructor public class SomeDto implements Compactable { // 替换Serializable为Compactable private Long id; private String name; @Override public void writeTo(CompactWriter writer) { writer.writeLong("id", id); writer.writeString("name", name); } public static SomeDto readFrom(CompactReader reader) { return new SomeDto(reader.readLong("id"), reader.readString("name")); } }
2. 调整内存存储格式
单节点场景下,直接存储对象引用(OBJECT格式)可以避免序列化开销,比BINARY格式更快:
<map name="some-cache"> <time-to-live-seconds>20</time-to-live-seconds> <in-memory-format>OBJECT</in-memory-format> <!-- 直接存对象引用 --> </map>
三、关闭不必要的监控与统计
Hazelcast默认开启了缓存统计、事件监听等功能,这些在单节点本地缓存场景下完全不需要,关闭后能减少性能损耗:
<hazelcast> <network enabled="false"/> <map name="some-cache"> <time-to-live-seconds>20</time-to-live-seconds> <in-memory-format>OBJECT</in-memory-format> <statistics-enabled>false</statistics-enabled> <!-- 关闭Map统计 --> <entry-listeners> <entry-listener include-value="false" enabled="false"/> <!-- 禁用监听 --> </entry-listeners> </map> <management-center enabled="false"/> <!-- 禁用管理中心 --> </hazelcast>
四、JVM参数优化
Hazelcast对JVM内存和GC比较敏感,建议调整以下参数避免GC停顿影响性能:
- 设置足够的堆内存:
-Xmx4g -Xms4g(根据你的服务器配置调整,避免频繁GC) - 使用G1垃圾收集器:
-XX:+UseG1GC - 禁用偏向锁(高并发场景下可能有锁升级开销):
-XX:-UseBiasedLocking
测试注意事项
你的测试代码只做了一轮循环,建议增加测试次数(比如10000次)并多次运行取平均值,同时确保预热充分(比如先调用100次再开始计时),避免JIT编译未完成导致的测试偏差。
内容的提问来源于stack exchange,提问作者user1470509
相关产品推荐
相关产品推荐

