MongoDB 生产环境笔记

  • 时间:
  • 浏览:11
  • 来源:uu快3输钱_uu快3赢钱诀窍_豹子

cat /proc/sys/net/ipv4/tcp_keepalive_time

LimitAS=infinity

esac

chmod 755 /etc/init.d/disable-transparent-hugepages # 设置具有可执行权限

chkconfig --add disable-transparent-hugepages # 设置开机自启

后边的配置前要重启主机还还可否生效。

Mongodb 官网建议将该值设置为 400 。

-f (file size): unlimited

-t (cpu time): unlimited

-v (virtual memory): unlimited [1]

-l (locked-in-memory size): unlimited

-n (open files): 64000

-m (memory size): unlimited [1] [2]

-u (processes/threads): 64000

当当当让我们 可不前要直接更改用户的默认配置,也可不前要通过配置 systemd 服务,并参数写入 Service。

sysctl -a |grep vm.zone_reclaim_mode

二、上加 swap 分区

因为内存空间就有那末充足的话,当当当让我们 可不前要为系统配置 swap 分区。具体配置见文章 linux系统上加swap(虚拟内存)分区。

LimitFSIZE=infinity

前要配置的点有:

CentOS 6

临时更改

echo "vm.zone_reclaim_mode = 0" >> /etc/sysctl.conf

sysctl -p

2019-04-12T10:11:26.665+04000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.

2019-04-12T10:11:26.665+04000 I CONTROL [initandlisten] ** We suggest setting it to 'never'

2019-04-12T10:11:26.665+04000 I CONTROL [initandlisten]

2019-04-12T10:11:26.665+04000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.

2019-04-12T10:11:26.665+04000 I CONTROL [initandlisten] ** We suggest setting it to 'never'

后边的警告只是我因为当当当让我们 前要设置 /sys/kernel/mm/transparent_hugepage/defrag 和/sys/kernel/mm/transparent_hugepage/enabled 有一有三个小 参数设置为 never ,后边参数的设置只是我代表着 Transparent Huge Pages(THP), 在了解 THP 前,当当当让我们 前要先了解下 Huge Pages(标准页),Huge Pages是从Linux Kernel 2.6后被引入的。目的是使用更大的内存页面(memory page size) 以适应那末大的系统内存,让操作系统可不前要支持现代硬件架构的大页面容量功能。而THP(Transparent Huge Pages) 是从RHEL6 始于引入的有一有三个小 功能,THP 是有一有三个小 抽象层, 可不前要自动创建、管理和使用传统大页的大多数方面。

sysctl -w vm.zone_reclaim_mode=0

查看 Transparent Huge Pages 情況

cat /sys/kernel/mm/transparent_hugepage/enabled

[always] madvise never

cat /sys/kernel/mm/transparent_hugepage/defrag

[always] madvise never

MongoDB 生产环境笔记

一、vm.zone_reclaim_mode 参数

二、上加 swap 分区

三、设置 swappiness 参数

四、内核和文件系统版本

五、禁用 Transparent Huge Pages (THP)

六、ulimit 设置

七、tcp_keepalive_time

八、同步时间

MongoDB 生产环境笔记

在生产环境中,当当当让我们 配置MongoDB前要注意点有好多好多 有,而就有一安装就可不前要使用。当当当让我们 前要配置有些内核和系统参数。因为有有哪些参数是会影响到当当当让我们 MongoDB 的性能的。

因为你的MongoDB 实例所在的服务器还有其它业务和应用,那末修改下面的参数前要注意有无会影响其它应用的性能和运行情況。

cat "vm.swappiness = 1" >> /etc/sysctl.conf

sysctl -p

cat <>/usr/lib/systemd/system/mongodb.service

[Unit]

Description= mongodb service manager

[Service]

查看系统的默认值:

sysctl -w vm.swappiness=1

官方文档链接:https://docs.mongodb.com/manual/administration/production-notes/

/etc/init.d/disable-transparent-hugepages start

配置 tuned 和 ktune

tuned和ktune是Red Hat和CentOS上可用的动态内核调优工具,可不前要禁用 THP 。

完全的有关 Huge Pages 和Transparent Huge Pages的介绍见 :文章

三、设置 swappiness 参数

在 Linux 系统中,可不前要通过查看 /proc/sys/vm/swappiness 内容的值来挑选系统对 SWAP 分区的使用原则。当swappiness 内容的值为 0 时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用 SWAP 分区。当swappiness 内容的值为 400 时,表示积极地使用 SWAP 分区,但会 把内存中的数据及时地置换到 SWAP 分区。

默认值为 0,表示前要在物理内存使用完毕后才会使用 SWAP 分区,

echo "net.ipv4.tcp_keepalive_time = 400" >> /etc/sysctl.conf

sysctl -p

八、同步时间

因为当当当让我们 部署的是副本集群,当当当让我们 前要配置脚本,让这几台节点的的时间同步。

生效配置:

always madvise [never]

六、ulimit 设置

通常系统默认给用户的最大系统守护进程数和最大可不前要打开的文件数是比较低的,好多好多 有在启动 MongoDB 的以前当当当让我们 会看一遍以下警告。

LimitMEMLOCK=infinity

五、禁用 Transparent Huge Pages (THP)

在启动的以前当当当让我们 可不前要看一遍之类的日志:

vm.zone_reclaim_mode

上加swap分区

设置 swappiness 参数

内核和文件系统版本

禁用 Transparent Huge Pages (THP)

ulimit 设置

tcp_keepalive_time

同步时间

一、vm.zone_reclaim_mode 参数

设置内核参数 vm.zone_reclaim_mode ,该参数是设置当有一有三个小 内存区域的内存耗尽的以前,是从组织组织结构回收,还是去下有一有三个小 内存区域寻找,0为去下有一有三个小 区域寻找,非0表示当前区域回收。

When RHEL 7 / CentOS 7 run in a virtual environment, the tuned tool automatically invokes a performance profile derived from performance throughput, which automatically sets the readahead settings to 4MB. This can negatively impact performance.

THP hides much of the complexity in using huge pages from system administrators and developers. As the goal of THP is improving performance, its developers (both from the community and Red Hat) have tested and optimized THP across a wide range of systems, configurations, applications, and workloads. This allows the default settings of THP to improve the performance of most system configurations. However, THP is not recommended for database workloads.

生效配置

在官方文档中最后一行写到: THP is not recommended for database workloads. 也只是我 THP 不适用于在数据库上。因为数据库是不连续的内存访问模式,当当当让我们 前要禁用THP以确保使用MongoDB获得最佳性能。

sysctl net.ipv4.tcp_keepalive_time

MongoDB 前要使用 glibc 库,最好版本大约是 2.13 上。

case $1 in

start)

[vm]

transparent_hugepages=never

EOF

tuned-adm profile no-thp

测试修改有无生效

LimitNOFILE=64000

因为当当当让我们 运行的主机系统 RHEL / CentOS 的内核版本在 2.6.32-4003 及以上,当当当让我们 可不前要把该值设置为 1。

LimitCPU=infinity

cp -r /etc/tune-profiles/default /etc/tune-profiles/no-thp

echo "set_transparent_hugepages never" >>/etc/tune-profiles/no-thp/ktune.sh

tuned-adm profile no-thp

CentOS 7

LimitNPROC=64000

Type=forking

User=mongodb

Group=mongodb

PIDFile=/opt/mongodb/logs/mongod.pid

ExecStart= /opt/mongodb/bin/mongod -f /opt/mongodb/mongodb.conf

ExecStop= /opt/mongodb/bin/mongod --shutdown --dbpath /opt/mongodb/data

Restart=always

[Install]

WantedBy=multi-user.target

EOF

七、tcp_keepalive_time

该参数用于 TCP 发送 keepalive 探测消息的间隔时间(秒),用于确认 TCP 连接有无有效。

mkdir /etc/tuned/no-thp

cat << EOF >>/etc/tuned/no-thp/tuned.conf

[main]

include=virtual-guest

systemctl -w net.ipv4.tcp_keepalive_time=400

永久更改,

要在 tuned和ktune 中禁用 THP, 前要当当当让我们 将配置文件的THP值设置为 never,但会 tuned 因为 ktune 会更改当当当让我们 设置的值。

sysctl -a |grep vm.swappiness

四、内核和文件系统版本

在 Linux 系统上运行 MongoDB ,当当当让我们 建议使用 Linux内核版本2.6.36因为更高版本,使用 XFS 因为是 EXT4 文件系统,强烈建议使用 XFS 文件系统。因为 EXT4 和 WiredTiger 一块儿使用会有因为经常出现性能问题报告 。

Huge pages can be difficult to manage manually, and often require significant changes to code in order to be used effectively. As such, Red Hat Enterprise Linux 6 also implemented the use of transparent huge pages(THP). THP is an abstraction layer that automates most aspects of creating, managing, and using huge pages.

对于 WiredTiger 储存引擎,在压力比较大的情況下,WiredTiger 会将数据放置在 swap 分区里。

脚本禁用 THP

创建 init.d 脚本 /etc/init.d/disable-transparent-hugepages

作者:理想三旬

    

出处:https://www.cnblogs.com/operationhome/

cat /sys/kernel/mm/transparent_hugepage/enabled

cat /sys/kernel/mm/transparent_hugepage/defrag

WARNING: soft rlimits too low. rlimits set to 4096 processes, 65535 files. Number of processes should be at least 32767.5 : 0.5 times number of files.

官网的推荐配置是:

MongoDB 生产环境笔记

目录