更多干货抢先看:大数据干货合集
无论对Spark集群,还是Hadoop集群等大数据相关的集群进行调优,对linux系统层面的调优都是必不可少的,这里主要介绍3种常用的调优:
1. linux文件句柄
linux在整个系统层面和单个进程两个层面对打开的文件句柄进行限制。
配置文件/proc/sys/fs/file-max是对整个系统层面对打开的文件句柄最大数进行控制,单个用户或进程能够打开的文件句柄数受此限制。
通过ulimit -a查看当前用户或进程能够打开的最大文件数:
上述只是默认值,在实际生产环境肯定是不够用的,如果配置过小,有时会报类似can't open so many files的错误。通过ulimit -n可以对该值进行临时修改。
如果想永久生效,需要修改配置文件/etc/security/limits.conf,如soft nofile 10000、hard nofile 10000追加到配置文件中。
2. 单个用户最大进程数
上图中max user processes就是单个用户最大进程数的限制,通过ulimit -u可以临时修改。永久修改需要追加,如soft nproc 10000、hard nproc 10000到/etc/security/limits.conf文件中
3. swap分区
又被称为交换分区,占用的是磁盘空间。操作系统可以将一部分数据存于swap分区中,从而为当前运行的程序腾出足够的内存空间。但因为数据存于磁盘,性能会相对内存低,尤其是读写频繁的情绪,IO消耗会更大。
合理设置swap分区大小,比如设置为0,优先使用物理内存。设置方式echo vm.swappiness=0 >> /etc/sysctl.conf。
针对不同系统、用户需要修改的文件可能有所不同,比如对于普通用户最大打开进程限制配置文件/etc/security/limits.d/20-nproc.conf。
除了上述常见的3种调优,还有控制每个端口监听队列的最大长度等调优方式,这里不再赘述。
关于软限制和硬限制的补充:
上文中,soft是软限制,hard是硬限制。
软限制(soft limit):内核实际执行的限制,任何进程都可以将软限制设置为小于或等于对进程限制的硬限制的值、最大线程数和文件数。
硬限制(hard limit):可以在任何时候任何进程中设置,但硬限制需要由超级用户修改。
更多干货抢先看:大数据干货合集