1. Linux系统
关闭交换分区,防止内存置换降低性能。
将/etc/fstab 文件中包含swap的行注释掉
sed -i '/swap/s/^/#/' /etc/fstab
swapoff -a
单用户可以打开的最大文件数量,可以设置为官方推荐的65536或更大些
echo "* - nofile 655360" >> /etc/security/limits.conf
单用户线程数调大
echo "* - nproc 131072" >> /etc/security/limits.conf
单进程可以使用的最大map内存区域数量
echo "vm.max_map_count = 655360" >> /etc/sysctl.conf
参数修改立即生效
sysctl -p
2. 节点分配
节点角色 by 铭毅
master:低配置全部(3台)
data:全部高配置
ingest:高配cpu,中配置RAM,低配磁盘
coordinating:请求节点(负责查询性能,agg等操作)
读写分离:写:ingest节点 读:coordinating节点
kibana:部署在coord节点上
分配原则
3. JVM内存
-Xms和-Xmx设置为相同的值xmx和xms不要超过系统内存的50%,
设置xmx和xms不要超过指针压缩技术的值,可以通过日志文件中的compressed ordinary object pointers [true]来判断
垃圾回收器:G1
-XX:+UseG1GC
-XX:MaxGCPauseMillis=50//控制预期的最高GC时长,默认值为200ms
4. 存储与分片
文档检索类内存/磁盘配比sdd
1:10(16)
日志分析类内存/磁盘配比sata
1:50(48~96)
单节点存储数据建议在2TB以内,不要超过5TB
单节点索引分片数建议不要超过3个
分片大小推荐<50GB:
搜索10~20GB
日志30~50GB
磁盘总大小:源数据*3.4
建议分片数量低于每GB堆内存配置20到25个分片。 因此,具有30GB堆内存的节点应该具有最多600-750个分片。
shards <= sum(nodes.max_heap) * 20 (by刘晓国)