因分布式缓存内存泄漏,无缓存搭建WSO2 Identity Server集群问询
解决WSO2 Identity Server 5.1.0分布式缓存内存泄漏问题(类似IDENTITY-5050)
我之前也碰到过WSO2 IS 5.1.0启用分布式缓存后出现的内存泄漏问题,和IDENTITY-5050的症状高度相似。针对多实例高可用集群的场景,我参考官方集群指南,采用了禁用缓存、依赖数据库支撑扩容的替代方案,亲测有效,分享下具体操作:
核心思路
这个版本的分布式缓存同步机制存在缺陷,会导致内存占用持续攀升直至溢出。直接关闭相关缓存后,所有集群节点将直接从数据库读取数据,虽然会增加数据库的负载,但能彻底解决内存泄漏问题,同时天然保证了节点间的数据一致性。
具体配置步骤
修改<IS_HOME>/repository/conf/identity/identity.xml文件,找到<CacheConfig>节点,禁用以下关键缓存模块:
<CacheConfig> <!-- 禁用应用管理缓存 --> <CacheManager name="IdentityApplicationManagementCache" enable="false"/> <!-- 禁用角色管理缓存 --> <CacheManager name="IdentityRoleManagementCache" enable="false"/> <!-- 禁用用户管理缓存 --> <CacheManager name="IdentityUserManagementCache" enable="false"/> <!-- 禁用权限管理缓存 --> <CacheManager name="IdentityEntitlementCache" enable="false"/> <!-- 可根据业务场景补充禁用其他缓存 --> </CacheConfig>
后续注意事项
- 禁用缓存后,务必确保数据库性能足够支撑集群的读写请求,建议配合数据库读写分离、核心表索引优化等措施
- 先在测试环境验证核心流程(登录、授权、用户角色管理等)的响应时间,确认无异常后再推广到生产环境
- 如果后续升级到更高版本的WSO2 IS,可以重新评估分布式缓存的可用性,新版本通常会修复这类内存泄漏类的底层问题
内容的提问来源于stack exchange,提问作者JohannesB
相关产品推荐
相关产品推荐

