Couchbase Server是一个开源的分布式NoSQL文档数据库。它使用缓存管理来提供快速的千伏存储,以应对亚毫秒级的数据操作;专门设计的索引器可以支持快速查询;它还包括一个查询引擎,可以执行类似于SQL的查询。
Couchbas在国内比较小,所以中国材料很少。为了让国内开发者在自己的环境中更好的利用Couchbase,翻译者make麦角专门翻译了couch base-环境配置最佳实践。原作者Alex Ma,Justin Machiel,Asif Kazi是CouchBase的高级开发工程师。
以下概述了部署Couchbase基础架构配置的最佳实践
为了获得Couchbase集群的最佳性能,需要确保集群大小的正确分配,不仅要满足当前的工作负载,还要考虑维护、业务增长趋势和峰值负载。一般来说,建议为集群预留一定的净上空空间,以适应集群中的容量异常毛刺和硬件故障。
系统、硬件
裸机安装总能获得最佳性能。虚拟化会在操作系统、磁盘I/O、网络性能、CPU等各个方面增加开销,降低整体资源效率。
始终使用本地磁盘存储(节点之间没有共享架构)。使用SAN不仅会导致单点故障,还会导致资源竞争。
如果您必须使用虚拟化体系结构,您仍然可以使用专用本地存储而不是逻辑虚拟化磁盘来提高性能。
系统级生产中只使用64位操作系统。
Linux部署,其内核版本应该大于2.6.32-504.12.2,以避免已知的内核缺陷。
在此查看所有支持的平台列表。
内存至少10%的系统内存被保留给内核进程和页面缓存。剩余的内存应该分配给存储桶和索引配额。
在基本输入输出系统中禁止非统一内存访问(NUMA)。
磁盘、卷设计如果一切顺利,固态硬盘优于机械磁盘和网络块设备(iSCSI或EBS)。请注意,NFS不支持它。
从性能上看,在同等容量(RAID 0或RAID 10而不是RAID 5)的前提下,多个并行设备优于单个硬盘。例如,四个256GB固态硬盘比一个1TB固态硬盘快,因为有更多的并行I/O通道。
为了提高性能,应为每个索引和数据配置单独的磁盘卷,以隔离输入/输出。应该为更快的磁盘建立索引。
CPU至少4个内核
每10,000个操作/秒的吞吐量,一个存储桶对应+1个内核
每个视图文档或GSI索引对应于+1个核心
每个XDCR流对应于+1个核心
调整索引节点上的IRQ关联性,以减少IRQ竞争。Linux上有一个脚本可以自动做到这一点。
网络Couchbase只使用一个网络接口。如果有多个接口可用,则需要接口绑定。
在同一个VLAN部署Couchbase节点。
消除集群节点之间的路由器跳数
消除客户端和集群之间的路由器跳数
Couchbase生产环境中的数据、索引和查询服务应该部署在不同的服务器上。至少,数据和索引应该隔离在不同的卷上,以防止资源竞争。
配置数据的存储桶越少越好,建议的上限是每个集群5个存储桶。
将所有可用的群集配额内存分配给存储桶和索引。如有必要,可以通过减少存储桶配额分配来容纳更多存储桶。
在Couchbase的指导下使用桶上的值驱逐。
确保在所有铲斗上禁用冲洗。
启用内置报警功能,并将其配置为发送至监控。
启用自动故障转移,并将超时设置为120秒。一旦确定了网络的稳定性,就可以再次降低该值。
如果发现IO竞争。非高峰时段的压缩。
确保在部署视图后,生产环境中的开发设计文档被删除。
删除生产环境中的默认存储桶。
虚拟化环境的考虑查看http://support . couch base . com/entries/26790124-虚拟化-注意事项
以下内容重点介绍了部署Couchbase之前系统的参数调整
这些参数影响Couchbase能否以最佳性能运行。事实上,在部署其他数据库产品之前,不难发现需要调整类似的参数。本文提供的参数设置仅供基本参考,具体大小要结合实际情况考虑。
网络和内存
在/etc/sysctl.conf文件中修改或添加以下配置:
提高keepalive的检测频率,更快地发现和超时死连接。
net . IP v4 . TCP _ keepalive _ intvl = 30
表示启用了重用。等待时间套接字允许被重新用于新的传输控制协议连接。默认值为0,表示关闭。
这种配置对于所有Couchbase协议都是安全的。
net.ipv4.tcp_tw_reuse = 1
指示内核在交换空之前最大限度地利用物理内存。
如果内核版本大于3.0,则将该值设置为1
vm.swappiness = 0
将脏数据的最大内存使用限制在200MB,之后系统启动pdflush线程。
默认值为系统内存的20%,一旦启动pdflush,系统就会崩溃。
vm.dirty_bytes = 209715200
此内核参数保存pdflush开始写回的最小脏内存数,即100MB
VM . dirty _ background _ bytes = 104857600
提高将脏数据刷新到磁盘的速度,只刷新脏时间超过一定限制的页面,
下次pdflush唤醒后会刷回磁盘,
Dirty_expire_centisecs用于控制到期时间
vm.dirty_expire_centisecs = 300
VM . dirty _ write back _ centisecs = 100
增加系统中可以同时打开的文件数量
fs.file-max = 500000
禁用NUMA内存区域回收算法以减少读取延迟。
VM . zone _ recovery _ mode = 0
保存文件后,执行sysctl -p命令使设置生效。
文件系统
XFS是最适合Couchbase仅附加文件结构的文件系统。我们建议将所有Couchbase卷格式化为XFS。如果没有,就用EXT4。
如果磁盘控制器上有电池备份单元(BBU),建议禁用屏障以提高吞吐量。
Couchbase不依赖文件访问时间,所以可以打开noatime选项来减少磁盘IO。编辑/etc/fstab文件,并使用以下选项修改Couchbase数据挂载点(如果有):
rw,noatime
用户限制
添加Couchbase中可用的文件描述符,以确保可以创建核心文件,并将以下内容添加到/etc/security/limits.conf:
couchbase soft nofile 131072
couchbase硬盘nofile 131072
couchbase硬核无限
透明大页面(THP)
执行以下命令禁用THP:
sudo echo never >。/sys/kernel/mm/transparent _ huge page/enabled
sudo echo never >。/sys/kernel/mm/transparent _ hugepage/defrag
将这些命令添加到/etc/rc.local,以便在系统重新启动时保持设置不变。
输入输出调度
默认的红帽Linux IO调度器(CFQ)不适合数据库随机读写访问模式。截止日期调度更合适,提供更好的延迟保证。
执行以下命令,将输入输出调度修改为截止日期模式:
sudo echo截止日期>。/sys/block/<。阻止设备>。/queue/scheduler
增加输入输出调度的对齐深度可以通过增加顺序写入来减少IOPS。
将输入输出调度对列深度增加到1024:
sudo echo 1024 >。/sys/block/<。阻止设备>。/queue/nr_requests
将这些命令添加到/etc/rc.local,以便在系统重新启动时保持设置不变。
Couchbase成功上线后,需要监控其运行状态,准确定位性能瓶颈,及时优化。
下面列出了需要重点关注的Couchbase和操作系统级别的监控指标
Couchbase网络控制台本身为集群、节点状态和容量提供监控警报。下图。
图1通用铲斗分析界面
图2通用桶分析界面
您还可以使用Couchbase提供的cbstats工具来获取更细粒度的监控信息,并执行二次处理来丰富监控场景。
Beam.smp流程负责监控和管理底层服务流程,如XDCR复制、集群操作、视图等。
memcached进程负责将项目缓存到内存中,并将它们保存到磁盘上。
接下来,我们来看看Couchbase中哪些参数需要注意。以及当达到监控阈值时我们应该如何应对。
有关更详细的指标,请参考以下链接:
https://developer . couch base . com/documentation/server/4.6/CLI/cbstats-intro . html
我们可以使用cbstats命令获取上表中描述的各种索引项,例如:
这
此外,我们还可以通过/pool/default/bucket/bucket _ name/stats Suri获得bucket的抽样统计:
卷曲–X GET-u & lt;用户名>。:& ltpasswd>。http://& lt;ip>。:8091/pool/default/bucket/& lt。bucket_name>。/stats
此外,可以指定-d zoom={interval}参数来指定采样时间,可选参数包括分钟、小时、天等。
卷曲–X GET-u & lt;用户名>。:& ltpasswd>。-d zoom =分钟http://& lt;ip>。:8091/pool/default/bucket/& lt。bucket_name>。/stats
威尔(男子名)
详细使用参考:
https://developer . couch base . com/documentation/server/current/rest-API/rest-bucket-stats . html
1.《couchbase NoSQL文档型数据库Couchbase的生产部署最佳实践》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《couchbase NoSQL文档型数据库Couchbase的生产部署最佳实践》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1595606.html