大数据集群内核参数调优

news/2025/1/15 19:12:06/文章来源:https://www.cnblogs.com/hdpdriver/p/18405045

tcp mem 相关

net.ipv4.tcp_rmem = 4096 131072 6291456 读取缓冲区,单位字节
net.ipv4.tcp_wmem = 4096 16384 4194304 发送缓冲区,单位字节
net.ipv4.tcp_mem = 760707 1014278 1521414 内存大小,单位是 linux 内存页的数目 ,占用内存大小还得乘以每个页的大小,一般是 4 kb. 可以在节点上执行命令 getconf PAGESIZE 来获得. 正在使用的页数可以直接查看 cat /proc/net/sockstat

vm.min_free_kbytes = 512000 这个参数建议机器内存的1% ~ 3%

系统调用相关

零拷贝关闭
mapreduce.shuffle.transferTo.allowed=false
os.cache关闭
mapreduce.shuffle.manage.os.cache=false
关闭tuned
systemctl stop tuned

虚拟内存相关

vm.overcommit_memory nn=1 dn=0

0 – Heuristic overcommit handling. 这是缺省值,它允许overcommit,但过于明目张胆的overcommit会被拒绝,比如malloc一次性申请的内存大小就超过了系统总内存。Heuristic的意思是“试探式的”,内核利用某种算法(对该算法的详细解释请看文末)猜测你的内存申请是否合理,它认为不合理就会拒绝overcommit。
1 – Always overcommit. 允许overcommit,对内存申请来者不拒。
2 – Don’t overcommit. 禁止overcommit。

vm.min_free_kbytes nn 默认 =90112 dn=1048576 预留给 linux 虚拟内存 的最小值, dn 节点同时也是 nm 计算节点,所以预留更多空间给系统调用

vm.swappiness=1 nn 未指定默认=30或60 dn=1 控制物理内存和虚拟内存交换行为,值越低,内存交换发生就越少.对于 hadoop 生态,不建议使用默认值,因为频繁的内存交换会引起 jvm 长时间 GC 停顿,影响关键服务,比如 NN 的稳定性.建议设置成 1

tcp 其他

net.ipv4.tcp_timestamps = 1 net.ipv4.tcp_tw_reuse = 1

tcp_tw_recycle 和 tcp_tw_reuse 都是同样的作用,用于快速回收处于 time_wait 的 tcp 连接.time_wait状态是主动发起fin一方才会转入的状态,例如: datanode 主动关闭了 dfs client 的连接.

如果 tcp_timestamps 开启的话,会缓存每个连接的最新时间戳,对于 time_wait 的端口,如果后续请求时间戳小于缓存的时间戳,即视为无效,相应的包被丢弃。所以如果是在NAT(Network Address Translation)网络下,就可能出现数据包丢弃的现象,会导致大量的TCP连接建立错误。

net.ipv4.tcp_tw_reuse要比net.ipv4.tcp_tw_recycle安全,从协议的角度看,复用是安全的。复用条件:

  • net.ipv4.tcp_timestamps选项必须打开(客户端也必须打开) ;
  • 重用TIME_WAIT的条件是收到最后一个包后超过1秒;

所以不建议使用 tcp_tw_recycle,这个参数在 Linux 4.12 后被废弃了.建议使用 tcp_tw_reuse ,并且tcp_tw_reuse 要结合 tcp_timestamps 使用

参考连接: Coping with the TCP TIME-WAIT state on busy Linux servers (bernat.ch) :

tcp_max_tw_buckets=18000
设置太小了,会导致节点间不能相互通信. 集群高峰期 tcp 连接数很大,应该设置成一个较大的值. 可以设置成 tcp_max_tw_buckets=18000
参考,Changing tcp_fin_timeout and tcp_max_tw_buckets - Red Hat Customer Portal:

If you set too large value to tcp_max_tw_buckets, the system may become out of port, file-descripter and memory. If you set too small value, the system may not communicate another host.

net.core.somaxconn

对应三次握手结束,还没有 accept 队列时的 establish 状态。accept 队列较多则说明服务端 accept 效率不高,或短时间内突发了大量新建连接。该值过小会导致服务器收到 syn 不回包,是由于 somaxconn 表满而删除新建的 syn 连接引起。若为高并发业务,则可尝试增大该值,但有可能增大延迟。

批量脚本

#!/bin/bash
set -ecp /etc/sysctl.conf /home/hadoop/sysctl.conf.bak
sed -i '/tcp_tw_recycle/d' sysctl.conf
cat <<EOF >> /etc/sysctl.confnet.ipv4.tcp_mem = 760707 1014278 1521414
net.ipv4.tcp_wmem = 4096  16384   4194304
net.ipv4.tcp_rmem = 4096  131072  6291456
vm.min_free_kbytes = 512000vm.swappiness=1
net.core.somaxconn=32768
net.ipv4.tcp_max_tw_buckets=18000
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tw_reuse = 1 
net.ipv4.tcp_max_orphans = 16384
EOF
sysctl -p

系统参数配置一般在目录 /proc/sys 下,例如 /proc/sys/net/ipv4/tcp_mem


云服务器 云服务器网络访问丢包-故障处理-文档中心-腾讯云 (tencent.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/794590.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手写数字识别总结

项目介绍:每张图片都是28*28的像素1,使用全连接层 图像拆分成一维像素阵列作为输入值,输入到神经网络中。打包多个图像输入称为一个batch2,输出数据需要做归一化,使数据概率在0-1之间3,一个batch_size设置为15,共训练两次 通过调节a和b,使训练值与真实值的误差减小,形…

h5新特性

新增语义化标签header:整个页面或部分区域的头部footer:整个页面,或者部分区域的底部nav:导航article:文章、帖子、杂志、博客、评论等section:页面中的某段文字或者文章中的某段文字aside:侧边栏main:文档的主要内容,(WHATWG没有语义,IE不支持)hgroup:包裹连续的标题,如文章…

Python存储与读写二进制文件

本文介绍了一种在Python中将Numpy数组转存为一个紧凑的二进制格式的文件,及其使用内存映射的形式进行读取的方案。一个二进制的数据流,不仅可以更加方便页形式的内存映射,相比于传统的Numpy单精度浮点数数组还有一个可哈希的特性。总体来说是一个对于高性能计算十分友好的存…

IIS标识介绍

原文链接:https://blog.csdn.net/weixin_30607659/article/details/95294969 应用程序池的标识是运行应用程序池的工作进程所使用的服务帐户名称。默认情况下,应用程序池以 Network Service 用户帐户运行,该帐户拥有低级别的用户权限。您可以将应用程序池配置为以 Windows S…

SQL SERVER -- JSON处理

-- JSON 字符串转 行记录 Declare @JsonStr Nvarchar(Max)=[{"State":0,"Name":"语文","ReMark":"了解国学信息","RepDtl":[{"ID":1,"Age":11},{"ID":2,"Age":12},{&quo…

添加字体(以课堂“谁能许我扶桑花期字体“为例)

1.进入https://font.chinaz.com/此网址,在搜索栏搜索“谁能许我扶桑花期字体”,点击下载 2.下载后为font1618.rar压缩文件,将文件放于桌面并进行解压 3.解压后的文件夹中包括三个文件,如图将【谁能许我扶桑花期】.ttf文件进行复制 4.打开“我的电脑(计算机)”,在地址栏输入…

2-4Java重写与重载

Java 重写与重载 重写(Override) 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异…

django 路由相关

路由系统 1 常见操作 通俗的语言来表示:URL -> 函数对应关系2 路由源码分析 2.1 路由定义的本质from django.urls import path, re_path from apps.www import viewsfrom django.urls import URLPattern from django.urls.resolvers import RoutePatternurlpatterns = […

django环境相关

1.项目相关新项目开发时,可能遇到使用其他的版本。 虚拟环境老项目打开项目 虚拟环境1.1 关于新项目 1.系统解释器+命令行【学习】 C:/python38- python.exe- Scripts- pip.exe- pip3.8.exe- django-admin.exe- Lib- re.py- site-pakages- djangoC:/python39- python.exe- Scr…

高等数学 1.2数列的极限

目录数列极限的定义数列的概念数列极限的定义收敛数列的性质 数列极限的定义 数列的概念 如果按照某一法则,对每个 \(n \in \mathbb{N}_+\) ,对应着一个确定的实数 \(x_n\) ,这些实数 \(x_n\) 按照下标 \(n\) 从大到小排列得到的一个序列 \[x_1, x_2, x_3, \cdots, x_n, \cd…

gti前端代码提交

git bash中前端切换分支提交遇到的不懂的地方第一次gti前端提交 根据提示一步步看 首先 git check dev此时可能会报错: error: Your local changes to the following files would be overwritten by checkout: .env.development package.json Please commit your changes or s…

Ubuntu使用dd命令实现硬盘级复制

以前的Ubuntu系统用的机械硬盘,因为读写次数太多,已经出现问题了,速度很慢,开机提示坏道,于是买了一个固态硬盘,准备重装系统,但是重装系统,各种驱动、环境都要重装,太麻烦了,于是准备把以前的硬盘完整的复制到新硬盘,这样就不用重装各种驱动、环境了. 把新硬盘接上…