Linux篇之OS层内核参数的调优

Linux内核参数调优

Linux 内核参数的调优和分类是一个复杂的主题,这涉及到系统性能、稳定性和安全性等多个方面。
内核参数主要可以分为以下几类:

1. 内核参数的分类

1.1 系统性能参数
这些参数影响系统的整体性能,包括 CPU 调度、内存管理和文件系统性能。

  • vm.swappiness: 决定内核在使用交换空间时的倾向性。值范围从 0 到 100,0 表示只在物理内存用尽时使用交换空间,100表示尽可能多地使用交换空间。
  • vm.dirty_ratio: 设置文件系统在内存中缓存脏数据的最大比例(以百分比表示),超过该比例时将启动数据写入磁盘的过程。
  • fs.file-max: 系统允许的最大文件描述符数量。

1.2 网络参数
这些参数控制网络协议栈的行为,如 TCP/IP 设置、连接限制等。

  • net.ipv4.ip_forward: 控制系统是否允许 IP 数据包转发。设置为 1 表示启用 IP 转发,0 表示禁用。
  • net.core.somaxconn: 设置系统可以接受的最大连接数,控制待处理的 TCP 连接队列的大小。
  • net.ipv4.tcp_keepalive_time: 设置 TCP 连接保持活动的时间间隔。

1.3 安全性参数
这些参数影响系统的安全性,包括访问控制资源限制

  • kernel.randomize_va_space: 控制地址空间布局随机化(ASLR)的程度。值为 0(关闭)、1(启用部分随机化)或 2(启用完全随机化)。
  • fs.suid_dumpable: 控制是否允许以 SUID 权限运行的程序生成 core dump 文件。值为 0(禁用)、1(启用)或 2(仅 root 用户允许)。

1.4 内存管理参数
这些参数用于控制内存分配和使用策略。

  • vm.overcommit_memory: 决定内存超额分配策略。值为 0(启用标准的内存分配策略)、1(总是允许超额分配)或 2(禁止超额分配)。
  • vm.max_map_count: 设置每个进程允许的最大内存映射区域数。

1.5 文件系统参数
这些参数影响文件系统的行为和性能。

  • fs.inotify.max_user_watches: 设置 inotify 监视器的最大数量,适用于监视大量文件的场景。
  • fs.sync: 控制文件系统同步操作的行为。

1.6. 用户进程资源限制参数

一、参数分类如下:
1. 文件描述符限制 (nofile)
用途:限制一个进程可以打开的最大文件描述符数量。
命令查看当前限制:

ulimit -n

优化方法:
提高文件描述符的限制,适用于需要同时处理大量文件或网络连接的应用。
临时调整:

ulimit -n <new_limit>

永久调整:
编辑 /etc/security/limits.conf 文件并添加:

* soft nofile 65536
* hard nofile 65536

2. 进程数限制 (nproc)
用途:限制每个用户可以创建的最大进程数。
命令查看当前限制:

ulimit -u

优化方法:
增加进程数限制,适用于需要启动大量进程的应用(如高并发服务)。
临时调整:

ulimit -u <new_limit>

永久调整:
编辑 /etc/security/limits.conf 文件并添加:

* soft nproc 65536
* hard nproc 65536

3. 虚拟内存限制 (as)
用途:限制进程可以使用的最大虚拟内存量。
命令查看当前限制:

ulimit -v

优化方法:
增加虚拟内存限制,适用于内存密集型应用。
临时调整:

ulimit -v <new_limit>

4. 核心文件大小限制 (core)
用途:限制进程生成的 core dump 文件的最大大小。
命令查看当前限制:

ulimit -c

优化方法:
启用 core dump 文件生成以便调试程序崩溃问题。
临时调整:

ulimit -c unlimited

二、配置文件调整

要永久调整 ulimit 设置,需要修改系统配置文件:

/etc/security/limits.conf

设置软限制和硬限制:

* soft nofile 65536
* hard nofile 65536
* soft nproc 65536
* hard nproc 65536

/etc/pam.d/common-session 和 /etc/pam.d/common-session-noninteractive

确保 PAM 模块加载 limits.conf 配置:

session required pam_limits.so

系统级限制

修改 /etc/sysctl.conf 来调整系统级别的限制,如文件句柄数(如果相关):

fs.file-max = 65536

2. 调优策略

调优内核参数通常需要根据系统的实际工作负载、硬件配置以及业务需求来进行。
以下是一些通用的调优策略:

确定需求:了解系统的工作负载和瓶颈,例如网络流量、文件访问模式、内存使用情况等。

测试和监控:在调整参数之前,使用性能监控工具(如 top、vmstat、iostat、netstat 等)来收集系统性能数据。

调整参数:基于需求和监控数据进行调整。可以通过 /etc/sysctl.conf 文件或 sysctl 命令来临时或永久修改内核参数。
例如:

sysctl -w net.ipv4.ip_forward=1

或编辑 /etc/sysctl.conf 文件并添加:

net.ipv4.ip_forward = 1

应用修改:对于通过 sysctl 命令修改的参数,可以使用以下命令使其生效:

sysctl -p

监控效果:调整参数后,继续监控系统的性能,确保调整带来了预期的改进。

3. 内核参数的用途示例

  • vm.swappiness: 调整此参数可以优化系统在内存压力下的行为,减少或增加交换空间的使用,以提高性能。
  • net.core.somaxconn: 在高负载的网络服务器上,增加此值可以提高系统接受的连接数,从而提升服务能力。
  • kernel.randomize_va_space: 启用地址空间布局随机化(ASLR)可以提高系统的安全性,减少潜在的安全漏洞风险。

调优内核参数是一项涉及系统调试和优化的高级操作,建议在有经验的系统管理员或运维人员的指导下进行,以避免对系统稳定性和性能造成负面影响。

4、优化思路

  • 一般优化的调整的方向都是与磁盘文件IO、网络通信、内存管理、线程数量有关。
  • 中间件系统需要开启大量的线程(跟vm.max_map_count有关)
  • 进行大量的网络通信和磁盘IO(跟ulimit有关)
  • 大量使用内存(vm.swappiness和vm.overcommit_memory有关)
    所以对于OS内核参数的调整,往往是调整与系统运行最相关的部分。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听说唐僧不吃肉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值