目录

配置优化system

1 OverView

2 System && Hardware

2.1 swap 分区关闭

#临时调整
sysctl vm.swappiness=10
#永久调整
/etc/sysctl.conf
vm.swappiness=0
#生效
sudo sysctl -p

2.2 内存分配策略

0:内核检查是否有足够的内存供进程使用,如果够,允许申请,否则申请失败,并把错误返回给进程。

1:内核允许分配所以的内存,不论现在处于何种状态。

2:内核允许分配超过所以物理内存和交换空间总和的内存,(通过vm.overcommit_ratio的值来设置超过的比率,50表示超过物理内存50%)。

【TIPS:建议设置为2,并且调整vm.overcommit_ratio】

2.3 net.core.somaxconn参数

net.core.somaxconn是Linux的一个内核参数,表示套接字(socket)坚挺的backlog上限。backlog是套接字的监听队列,当一个请求尚未被处理或者建立时,会进入backlog。套接字服务器可以一次处理backlog中的所有请求,处理后的请求不在位于监听队列中。(当服务器处理请求较慢时,以至于监听队列会被填满,新来的请求会被拒绝)。

在core-default.xml文件中,参数ipc.server.listen.queue.size控制了服务器套接字监听队列的长度(即backlog的长度),默认值为128。Linux的参数net.core.somaxconn的默认值同样也是128。当服务器繁忙时这个值太小了,需要增大backlog。两个参数同时增大
【TIPS:建议设置为32768】

2.4 打开文件描述符的上限

vim /etc/security/limits.d/20-nproc.conf
*          soft    nproc     4096
*          soft    nproc     unlimited

vim /etc/security/limits.conf
*     soft   nofile    100000
*     hard   nofile    100000
*     soft   nproc     100000
*     hard   nproc     100000
*     soft   core      100000
*     hard   core      100000

2.5 选择合适的文件系统格式

Hadoop主要运行在Linux上,常见的文件系统有:ext3、ext4、xfs等。当文件系统被格式化之后,还需要进行一项优化操作:禁用文件的访问时间。

2.6 关闭THP(Transport Huge Pages)

Huge Pages就是大小我2MB~1GB的内存页,THP是一个使管理HugePages自动化的抽象层,在运行Hadoop时,THP会引起CPU占用率偏高。
#查看状态 括号中的是 always 表示开启了,never 则表示没开启
[root@middle ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
[root@middle ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never

# 在 rc.local 中增加如下内容
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

2.7 系统预留空间

#保留百分之5空间
tune2fs  -m 5 /dev/diskname