首页 > 其他分享 >大数据集群内核参数调优

大数据集群内核参数调优

时间:2024-09-09 18:13:59浏览次数:8  
标签:overcommit tw 内存 tcp 调优 集群 内核 net ipv4

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 -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 = 4096  16384   4194304
net.ipv4.tcp_rmem = 4096  131072  6291456
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)

标签:overcommit,tw,内存,tcp,调优,集群,内核,net,ipv4
From: https://www.cnblogs.com/hdpdriver/p/18405045

相关文章

  • 编译内核时编译选项, qemu
    编译内核时怎么指定cpu架构为arm内核编译选项 转载mob6454cc63081f2023-12-0715:52:09文章标签编译内核时怎么指定cpu架构为armlinuxconfig文件系统加载文章分类架构后端开发阅读数76我整理的一些关于【IT人转架构设计】的项目学习资料+视频(附讲解~~)和大家一起分享、学......
  • k8s集群部署:安装 kubeadm
    1、确保已经将SELinux设置为permissive模式:这些说明适用于Kubernetes1.31。#SetSELinuxinpermissivemode(effectivelydisablingit)sudosetenforce0sudosed-i's/^SELINUX=enforcing$/SELINUX=permissive/'/etc/selinux/config2、下载并安装相关软件......
  • k8s集群外exporter怎么使用Prometheus监控
    要在Kubernetes集群外部使用Exporter并通过Prometheus监控它,您可以按照以下步骤进行配置:1.部署Exporter首先,确保您已经在Kubernetes集群外部的主机上部署了Exporter(如NodeExporter、BlackboxExporter等)。以下是以NodeExporter为例的安装步骤:#下载并解压Nod......
  • redis集群
    redis集群配置为什么要使用集群redis官方生成可以达到10万/每秒,每秒执行10万条命令,假如业务需要每秒100万的命令执行呢。该怎么处理呢一台服务器内存正常是16~256G,假如你的业务需要500G内存,又该如何解决集群的核心思想是将数据分片(sharding)储存于多个redis实例当中。集群......
  • Redis 集群的实现方案全解析
    在当今大数据时代,Redis作为一款高性能的内存数据库,被广泛应用于各种场景。然而,随着数据量的不断增长和业务需求的日益复杂,单节点的Redis往往无法满足需求,这时就需要使用Redis集群来实现数据的分布式存储和高可用性。今天,我们就来一起探讨一下Redis集群的实现方案有哪些。一......
  • Hadoop集群搭建----Hadoop安装与配置
    (1)上传Hadoop安装包:Hadoop安装包上传到虚拟机/erport/software目录Hadoop版本:hadoop-3.3.1.tar.gz(2)解压安装Hadoop:tar-zxvfhadoop-3.3.1.tar.gz-C/erport/servers/(3)配置Hadoop环境变量:vim/etc/profile生效:source/etc/profile(4)验证Hadoop环境:hadoopversion......
  • Linux系统性能调优详解
    前言在服务器运维和管理中,Linux系统的性能调优是确保服务稳定性和响应速度的关键。通过对系统进行细致的调优,可以显著提升处理能力,优化资源利用率。本文将详细介绍Linux性能调优的多个方面,包括系统监控、磁盘优化、内存管理、网络配置等,并提供实用的技巧和工具。简介Linu......
  • 假设k8s集群规模上千,需要注意的问题有哪些?
    在管理一个规模上千的Kubernetes(k8s)集群时,需要特别关注以下几个问题,以确保集群的性能、可用性和安全性:1.集群架构设计节点数量与规格:合理规划节点数量和硬件配置,确保满足负载需求。分区策略:使用多个命名空间和集群隔离策略,以便于管理和资源分配。2.资源管理资源请......
  • ETCD调优有哪些方法
    调优etcd可以显著提升其性能和可靠性。以下是一些有效的调优方法:1.集群配置选择合适的节点数:建议使用奇数个节点(如3、5、7)来确保高可用性和故障恢复。设置heartbeat-interval和election-timeout:根据网络延迟和负载调整这些参数,以减少选举频率和提高响应速度。2.存储......
  • 全栈性能优化秘籍--Linux 系统性能调优全攻略:多维度优化技巧大揭秘
           ......