Apache Ignite生产环境推荐配置及需遵循的最佳实践相关问询
Apache Ignite 生产环境推荐配置与最佳实践
一、核心生产配置推荐
- 内存配置
- JVM堆内存(
Xmx/Xms)建议设置为不超过32GB,避免超过JVM压缩指针阈值导致内存利用率下降,堆外内存根据数据存储量分配,同时预留至少30%的系统空闲内存给操作系统页缓存 - 配置内存策略时建议开启内存溢出保护,使用
IgniteConfiguration.setMemoryConfiguration(new MemoryConfiguration().setDefaultMemoryPolicySize(<目标容量>))定义默认内存池大小,避免节点异常OOM
- JVM堆内存(
- 网络配置
- 生产环境禁用组播发现模式,改用
TcpDiscoveryVmIpFinder静态配置所有集群节点IP,避免网络波动导致节点失联 - 网络超时参数建议调整为适配生产网络:
TcpDiscoverySpi.setSocketTimeout(30000)、TcpCommunicationSpi.setSocketTimeout(20000),高延迟跨机房部署可适当放大 - 建议单独划分万兆内网给Ignite集群使用,避免和业务流量抢占带宽
- 生产环境禁用组播发现模式,改用
- 持久化配置
- 开启原生持久化时必须使用SSD作为存储介质,机械硬盘无法满足持久化随机写入的性能要求
- 配置
DataStorageConfiguration.setWalMode(WALMode.LOG_ONLY),同时将WAL日志目录和数据存储目录放在不同物理磁盘上,可提升30%以上写入性能 - 业务低峰期定期执行
ignite.tx().consistentCut()生成一致性快照,减少故障恢复时的WAL重放时长
- 高可用配置
- 数据副本数建议设置为至少2,核心业务场景设置为3,避免单节点故障导致数据丢失
- 分区分配策略开启
RendezvousAffinityFunction.setExcludeNeighbors(true),避免同一机架的多个节点同时故障导致数据不可用 - 开启基线自动调整时,建议设置
BaselineTopologyConfiguration.setBaselineAutoAdjustTimeout(300000),避免临时节点波动导致基线频繁变更
二、部署与使用最佳实践
- 部署规范
- 所有集群节点的Ignite大版本、JDK版本、操作系统内核版本必须保持一致,避免版本兼容问题导致节点崩溃或数据异常
- 永久禁用操作系统SWAP分区,执行
swapoff -a并修改fstab配置,SWAP会导致Ignite内存操作性能骤降 - 调整操作系统文件句柄数限制至少为65535,修改
/etc/security/limits.conf中的nofile参数即可
- 开发使用规范
- 避免在事务中执行大批次数据操作,单事务处理数据量建议不超过1000条,防止事务超时或锁冲突加剧
- 全量查询必须开启分页,禁止执行无分页的
ScanQuery或者SELECT *全表查询,避免单次拉取大量数据导致节点OOM - 索引必须提前规划,生产环境禁止动态新增索引,动态建索引会锁表导致业务写入阻塞,大表建索引必须在业务低峰期操作
- 运维规范
- 禁止直接用
kill -9终止Ignite进程,优先使用ignite.sh stop优雅关闭节点,避免持久化数据损坏 - 滚动重启节点时每次只能操作一个节点,等待该节点完全加入集群、数据同步完成后再操作下一个节点,避免数据一致性问题
- 定期监控节点内存使用率、WAL日志大小、分区一致性状态,建议每7天做一次全量数据一致性校验,发现坏块及时修复
- 禁止直接用
注意:测试环境的配置不要直接复制到生产使用,测试环境通常关闭了很多安全和高可用特性,直接上线会有极高的故障风险。
内容的提问来源于stack exchange,提问作者csharpdev
相关产品推荐
相关产品推荐

