hackergodness
作者hackergodness·2017-06-27 14:41
数据库开发工程师·爱奇艺

Couchbase生产部署最佳实践(二)——参数调优

字数 1775阅读 3174评论 0赞 0

本文作为《Couchbase生产部署最佳实践》的第二部分,重点描述部署Couchbase前需要对系统进行的参数调优,这些参数影响着Couchbase能否以最优性能运行。其实不难发现,在部署其它数据库产品前也需要对类似参数进行调整。本文提供的参数设置仅作为基本参考,具体大小应结合实际情况考虑。
点击《Couchbase生产部署最佳实践》查看第一部分内容。

网络和内存

修改或添加/etc/sysctl.conf文件中以下配置:

增加keepalive的探测频率,更快发现和超时僵死连接。
net.ipv4.tcp_keepalive_intvl = 30

表示开启重用。允许将TIME-WAIT sockets重用于新的TCP连接,默认为0,表示关闭。
该配置对所有Couchbase协议来说是安全的。
net.ipv4.tcp_tw_reuse = 1

指导内核先最大限度使用物理内存,然后才是swap空间。
如果内核版本大于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_writeback_centisecs = 100

增加系统中可以同时打开的文件数目
fs.file-max = 500000

禁用NUMA内存区域回收算法,以便减少读延时。
vm.zone_reclaim_mode = 0

保存好文件后,执行sysctl -p命令使设置生效。

文件系统

XFS是最适合Couchbase append-only这种文件结构的文件系统。我们推荐将所有Couchbase的卷都格式化成XFS。如果不行,就使用EXT4。

如果磁盘控制器上有电池备份单元(BBU),推荐禁用barriers以提高吞吐量。

Couchbase不依赖于文件访问时间,因此可以开启noatime选项来减少磁盘的IO。编辑/etc/fstab文件,使用以下选项对Couchbase数据挂载点(如果有)进行修改:
rw,noatime

User Limits

增加Couchbase可用的文件描述符,确保核心文件可以创建,将以下内容添加到/etc/security/limits.conf中:
couchbase soft nofile 131072
couchbase hard nofile 131072
couchbase hard core unlimited

Transparent Huge Pages (THP)
执行以下命令禁用THP:
sudo echo never > /sys/kernel/mm/transparent_hugepage/enabled
sudo echo never > /sys/kernel/mm/transparent_hugepage/defrag
将这些命令添加到/etc/rc.local里,使系统重启时持久化设置。

IO调度

默认的Red Hat Linux IO scheduler(CFQ)不太适合数据库随机读写访问模式。相比而言deadline调度更为合适,并且提供了更好的延迟保证。
执行以下命令将IO调度修改成deadline模式:
sudo echo deadline > /sys/block/<block device>/queue/scheduler
增加IO调度的对列深度后就可以通过提高顺序写入来减少IOPS。
将IO调度对列深度增加到1024:
sudo echo 1024 > /sys/block/<block device>/queue/nr_requests
将这些命令添加到/etc/rc.local里,使系统重启时持久化设置。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

X社区推广