大数据集群内核参数调优
tcp mem 相关net.ipv4.tcp_rmem = 40961310726291456 读取缓冲区,单元字节
net.ipv4.tcp_wmem = 409616384 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 -e
cp /etc/sysctl.conf /home/hadoop/sysctl.conf.bak
sed -i '/tcp_tw_recycle/d' sysctl.conf
cat <<EOF >> /etc/sysctl.conf
net.ipv4.tcp_mem = 760707 1014278 1521414
net.ipv4.tcp_wmem = 409616384 4194304
net.ipv4.tcp_rmem = 40961310726291456
vm.min_free_kbytes = 512000
vm.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)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]