一、在cdh+cm部署时,已经做了部分系统优化

  • ssh双向免密

  • 配置时间同步服务(本次没用ntpd,用的是chrony)

  • 禁用透明大页、碎片整理:THP (Transparent Huge Pages)

  • 禁用内存交换swap(常用0或1)

二、hadoop集群推荐内核参数:

参数名称 默认值 说明
文件系统参数
fs.file-max 6815744 系统最大文件描述符数量(所有进程可打开文件总数上限)
fs.aio-max-nr 1048576 异步I/O请求的最大并发数(影响高并发场景性能)
网络核心参数
net.core.rmem_default 262144 TCP接收缓冲区默认大小(256KB)
net.core.wmem_default 262144 TCP发送缓冲区默认大小(256KB)
net.core.rmem_max 16777216 TCP接收缓冲区最大允许值(16MB)
net.core.wmem_max 16777216 TCP发送缓冲区最大允许值(16MB)
TCP协议栈参数
net.ipv4.tcp_rmem 4096 262144 16777216 接收窗口尺寸:• 最小值4KB• 默认值256KB• 最大值16MB
net.ipv4.tcp_wmem 4096 262144 16777216 发送窗口尺寸:• 最小值4KB• 默认值256KB• 最大值16MB

查看当前内核配置:

sysctl -e fs.file-max fs.aio-max-nr \
 net.core.rmem_default net.core.wmem_default \
 net.core.rmem_max net.core.wmem_max \
 net.ipv4.tcp_rmem net.ipv4.tcp_wmem 2>/dev/nulll

对比发现除了文件描述符数量外,其他内核参数都偏低,估所有机器都需要调整。

三、用户级文件数限制:

增加10倍,修改为655360

可以通过编辑 /etc/security/limits.conf 文件来执行此操作,如下所示:

Soft nofile 655360
Hard nofile 655360

四、socket监听队列上限

此内核参数对应的具体文件路径为/proc/sys/net/core/somaxconn,它用来设置socket监听(listen)的
backlog上限。
什么是backlog呢?就是Socket的监听队列,当一个请求(Request)未被处理或建立时,便会进入
backlog。而socket server可以一次性处理backlog中的所有请求,处理后的请求不再位于监听队列中。
如果server处理请求较慢,以至于监听队列被填满时,那么新来的请求会被拒绝,所以必须增大这个值,
此参数默认值为128。

执行以下命令

echo 4096 >/proc/sys/net/core/somaxconn

五、动态刷新内核设置:

sysctl -p

六、内核参数优化设置分类

📊 sysctl参数汇总