如何运用MongoDB性能调优技巧在Linux环境下大幅提高数据库运行效率?
- 内容介绍
- 文章标签
- 相关推荐
使用分片这方面,MongoDB支持分片。可yi将数据分布在多个服务器上,以提高查询性Neng。
在Linux程序上配置和调整MongoDB性能涉及几个方面,
基本配置步骤
1. **安装MongoDB**:- 使用包管理器安装MongoDB。例如在Ubuntu程序中使用apt-get install mongodb-server或在CentOS程序中使用yum install mongodb-server.
MongoDB性能调优技巧
在Linux环境下MongoDB性能调优需要根据实际情况调整一下。
内存管理调整
1. 调整WiredTiger缓存大小: WiredTiger是MongoDB的默认存储引擎,其缓存大小直接影响性能。建议将storage.wiredTiger.engineConfig.cacheSizeGB设置为服务器物理内存的50%-70%。
2. 调整文件程序: 选择XFS文件程序,并创建时指定合适的块大小。挂载时添加noatime选项:mount -o noatime /dev/sdb1 /var/lib/mongodb
磁盘预读 readahead:
MongoDB 多为随机访问,建议将预读调小,降低无效预读带来的抖动:sudo blockdev --setra 32 /dev/xvdb NUMA 架构:在 NUMA 主机上建议禁用或启用numactl --interleave=all运行mongod,避免跨 NUMA 访问Neng
VFS :
-O dirindex -O journaldev=none -O syncdata=always -O bgunmounts=0 -O aionchannels=16 -O aioliobg=1 -O aiomaxnr=65536 –aioblocksize 32768
mount –o nobarrier,noflush,nosuid,noexec,-o acl,noatime /dev/vdb1 /mnt/data/
fsck.ext4 –f –l /mnt/data/
tune2fs –o uninit_bg,/mnt/data/ filesystem
reboot
umount /mnt/data/ mount –o nobarrier,noflush,nosuid,noexec,-o acl,noatime /dev/vdb1 /mnt/data/ elevator deadline –wbarrier=nobarrier tune2fs-ccodeblocksize=32768,mtimeoptimize=-nolock,mtimeordering=nobuffer,mtimepreempt=nobuffer / tune2fs-ccodeblocksize=32768,mtimeoptimize=-nolock,mtimeordering=nobuffer。mtimepreempt=nobuffer / journalctl --since=yesterday|grep mongod|grep warning|grep pagefault|/bin/bash|grep 'unmapped' journalctl --since=yesterday|grep mongod|grep warning|grep pagefault|/bin/bash|grep 'unmapped' journalctl --since=yesterday|grep mongod | grep "sync" | grep "error" journalctl --since=yesterday| grep mongod | grep "sync" | grep "error" journalctl --since=yesterday | grep mongod | grep "wait" | grep “-15" journalctl --since=yesterday | grep mongod | grep "wait" | grep "-15" df-h/proc/meminfo|/bin/bash|- MemAvailable : df-h/proc/meminfo|/bin/bash|- MemAvailable : free-m|/bin/bash|- MemTotal: 1642928 KiB free-m|/bin/bash|- MemTotal: 1642928 KiB top -bn 1 |/bin/bash |- Swap Total: 0 kB top -bn 1 |/bin/bash |- Swap Total : . kB free-m |/ bin/bash |- Buffers/cache: . . . . free-m |/ bin/bash |- Buffers/cache: . . . . df-h/sys/class/net/|/bin/bash|- rxbytes : rxerrors : txbytes txerrors : df-h/sys/class/net/|/bin/bash|- rxbytes : rxerrors : txbytes txerrors : netstat-tlp|/ bin/bash |- LocalAddress RemoteAddress Recv-Q Send-Q Listen PID/Program name netstat-tlp|/ bin/bash |- LocalAddress RemoteAddress Recv-Q Send-Q Listen PID/Program name ss-netstat-aon-/etc/init.d/mongod stop;/usr/local/bin/mongod>/var/log/mongodb/log>/usr/local/bin/mongin.conf>/usr/local/bin/runmongd.sh;/etc/init.d/mongd start;| tail-f1000-| awk '/127.0.0.1:|127.0.0.*:/ { print $NF}';tail-f10000,不过,| awk '/127.0.0.*:/ { print $NF}' ss-netstat-aon-/etc/init.d/mongod stop; /usr/local/bin/mongod>/var/log/mongodb/log>/usr/local/bin/mongin.conf>/usr/local/bin/runmongd.sh;/etc/init.d/mongd start;说起来,| tail-f10000-| awk '/127.0.0.:/ { print $NF}';tail-f10000,| awk '/127.0.0.:/ { print $NF}' mongotop-n/-d,/data/db;-c,/data/db,–sort,-bytes;–reverse,-true;–seconds,-5,老实说,m mongotop-n/-d,/data/db;-c,/data/db,–sort,-bytes;–reverse,-true;–seconds,-5,m netstat-tlp|/ bin/shawk ‘/mongotop:/ {print$6}’;说起来,netstat-tlp|/ bin/shawk ‘/mongotop:/ {print$7}’;mangodb.sh,老实说,/etc/init.d/startall.sh;,netstat-tlp|/ bin/shawk ‘/mongotop:/ {print$6}’;netstat-tlp|/ bin/shawk ‘/mongotop:/ {print$7}’;mangodb.sh,/etc/init.d/startall.sh;,sysctl net.ipv4.tcpnometricssave sysctl net.ipv4.tcpnometricssave df-h/var/lib/| shawk‘^/||||||/{print$4}’ sysctl net.ipv4.tcpnometrics_save df-h/var/lib/| shawk‘^/||||||/{print$4}’
iostat-d-x-N-c10-“sda” iostat-d-x-N-c10-“sda”
。使用分片这方面,MongoDB支持分片。可yi将数据分布在多个服务器上,以提高查询性Neng。
在Linux程序上配置和调整MongoDB性能涉及几个方面,
基本配置步骤
1. **安装MongoDB**:- 使用包管理器安装MongoDB。例如在Ubuntu程序中使用apt-get install mongodb-server或在CentOS程序中使用yum install mongodb-server.
MongoDB性能调优技巧
在Linux环境下MongoDB性能调优需要根据实际情况调整一下。
内存管理调整
1. 调整WiredTiger缓存大小: WiredTiger是MongoDB的默认存储引擎,其缓存大小直接影响性能。建议将storage.wiredTiger.engineConfig.cacheSizeGB设置为服务器物理内存的50%-70%。
2. 调整文件程序: 选择XFS文件程序,并创建时指定合适的块大小。挂载时添加noatime选项:mount -o noatime /dev/sdb1 /var/lib/mongodb
磁盘预读 readahead:
MongoDB 多为随机访问,建议将预读调小,降低无效预读带来的抖动:sudo blockdev --setra 32 /dev/xvdb NUMA 架构:在 NUMA 主机上建议禁用或启用numactl --interleave=all运行mongod,避免跨 NUMA 访问Neng
VFS :
-O dirindex -O journaldev=none -O syncdata=always -O bgunmounts=0 -O aionchannels=16 -O aioliobg=1 -O aiomaxnr=65536 –aioblocksize 32768
mount –o nobarrier,noflush,nosuid,noexec,-o acl,noatime /dev/vdb1 /mnt/data/
fsck.ext4 –f –l /mnt/data/
tune2fs –o uninit_bg,/mnt/data/ filesystem
reboot
umount /mnt/data/ mount –o nobarrier,noflush,nosuid,noexec,-o acl,noatime /dev/vdb1 /mnt/data/ elevator deadline –wbarrier=nobarrier tune2fs-ccodeblocksize=32768,mtimeoptimize=-nolock,mtimeordering=nobuffer,mtimepreempt=nobuffer / tune2fs-ccodeblocksize=32768,mtimeoptimize=-nolock,mtimeordering=nobuffer。mtimepreempt=nobuffer / journalctl --since=yesterday|grep mongod|grep warning|grep pagefault|/bin/bash|grep 'unmapped' journalctl --since=yesterday|grep mongod|grep warning|grep pagefault|/bin/bash|grep 'unmapped' journalctl --since=yesterday|grep mongod | grep "sync" | grep "error" journalctl --since=yesterday| grep mongod | grep "sync" | grep "error" journalctl --since=yesterday | grep mongod | grep "wait" | grep “-15" journalctl --since=yesterday | grep mongod | grep "wait" | grep "-15" df-h/proc/meminfo|/bin/bash|- MemAvailable : df-h/proc/meminfo|/bin/bash|- MemAvailable : free-m|/bin/bash|- MemTotal: 1642928 KiB free-m|/bin/bash|- MemTotal: 1642928 KiB top -bn 1 |/bin/bash |- Swap Total: 0 kB top -bn 1 |/bin/bash |- Swap Total : . kB free-m |/ bin/bash |- Buffers/cache: . . . . free-m |/ bin/bash |- Buffers/cache: . . . . df-h/sys/class/net/|/bin/bash|- rxbytes : rxerrors : txbytes txerrors : df-h/sys/class/net/|/bin/bash|- rxbytes : rxerrors : txbytes txerrors : netstat-tlp|/ bin/bash |- LocalAddress RemoteAddress Recv-Q Send-Q Listen PID/Program name netstat-tlp|/ bin/bash |- LocalAddress RemoteAddress Recv-Q Send-Q Listen PID/Program name ss-netstat-aon-/etc/init.d/mongod stop;/usr/local/bin/mongod>/var/log/mongodb/log>/usr/local/bin/mongin.conf>/usr/local/bin/runmongd.sh;/etc/init.d/mongd start;| tail-f1000-| awk '/127.0.0.1:|127.0.0.*:/ { print $NF}';tail-f10000,不过,| awk '/127.0.0.*:/ { print $NF}' ss-netstat-aon-/etc/init.d/mongod stop; /usr/local/bin/mongod>/var/log/mongodb/log>/usr/local/bin/mongin.conf>/usr/local/bin/runmongd.sh;/etc/init.d/mongd start;说起来,| tail-f10000-| awk '/127.0.0.:/ { print $NF}';tail-f10000,| awk '/127.0.0.:/ { print $NF}' mongotop-n/-d,/data/db;-c,/data/db,–sort,-bytes;–reverse,-true;–seconds,-5,老实说,m mongotop-n/-d,/data/db;-c,/data/db,–sort,-bytes;–reverse,-true;–seconds,-5,m netstat-tlp|/ bin/shawk ‘/mongotop:/ {print$6}’;说起来,netstat-tlp|/ bin/shawk ‘/mongotop:/ {print$7}’;mangodb.sh,老实说,/etc/init.d/startall.sh;,netstat-tlp|/ bin/shawk ‘/mongotop:/ {print$6}’;netstat-tlp|/ bin/shawk ‘/mongotop:/ {print$7}’;mangodb.sh,/etc/init.d/startall.sh;,sysctl net.ipv4.tcpnometricssave sysctl net.ipv4.tcpnometricssave df-h/var/lib/| shawk‘^/||||||/{print$4}’ sysctl net.ipv4.tcpnometrics_save df-h/var/lib/| shawk‘^/||||||/{print$4}’
iostat-d-x-N-c10-“sda” iostat-d-x-N-c10-“sda”
。
