首页 > 系统相关 >《Linux从小白到高手》综合应用篇:深入理解Linux常用关键内核参数及其调优

《Linux从小白到高手》综合应用篇:深入理解Linux常用关键内核参数及其调优

时间:2024-10-20 19:48:01浏览次数:7  
标签:sysctl 白到 conf vm etc 调优 参数 设置 Linux

1. 题记

有关Linux关键内核参数的调整,我前面的调优文章其实就有涉及到,只是比较零散,本篇集中深入介绍Linux常用关键内核参数及其调优,Linux调优80%以上都涉及到内核的这些参数的调整。
在这里插入图片描述

2. 文件系统相关参数

  1. fs.file-max
    参数说明::控制系统中打开文件描述符的数量上限。
    默认值:通常为65535。
    优化建议:对于高负载服务器,可以增加此限制,以防止文件句柄耗尽的问题。例如,可以设置为6553560。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件。
  2. fs.nr_open
    参数说明::定义了每个进程可以打开的文件描述符的最大数量。
    优化建议:可以根据具体需求进行调整,尤其是对于需要打开大量文件的应用程序。例如,可以设置为1048576。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件。
  3. 优化建议:
    根据系统的负载和应用需求,适当增加这2个参数的值。对于高并发的服务器应用,可能需要将其设置为一个较大的数值,以避免出现 “Too many open files” 错误。
    可以通过编辑 /etc/sysctl.conf 文件来修改这个参数,例如:fs.file-max = 655360。修改后需要执行 sysctl -p 命令使更改生效。

3. 内存管理参数

  1. 物理内存大小
    查看:通过/proc/meminfo文件查看系统的总内存和可用内存。
    设置:使用sysctl命令设置物理内存大小(实际上,直接设置物理内存大小通常不是由用户进行的,这里主要是为了展示如何使用sysctl命令设置参数)。例如,要将物理内存大小相关的某个参数(注意,并非直接设置物理内存总量)进行调整,可以使用类似sudo sysctl -w vm.some_memory_parameter=value的命令(这里的vm.some_memory_parameter和value需要替换为实际的参数名和值)。
  2. 虚拟内存大小(swappiness)
    查看:通过/proc/sys/vm/swappiness文件查看系统的交换分区比例。
    优化建议:降低vm.swappiness值可以减少系统对交换分区的使用,提升性能。对于需要高性能的应用服务器,可以设置为10或更低。
    例如:sudo sysctl -w vm.swappiness=10(或修改/etc/sysctl.conf文件并重启系统以永久生效)。
  3. 内存缓存(cache)大小
    调整:虽然不能直接设置内存缓存的具体大小,但可以通过调整相关参数来影响缓存的行为。例如,vm.vfs_cache_pressure参数可以控制内核回收inode和dentry缓存的倾向。
    优化建议:对于需要频繁访问文件系统的应用,可以适当降低vm.vfs_cache_pressure的值以减少缓存回收。

4. 进程管理参数

  1. 最大进程数
    查看:通过/proc/sys/kernel/pid_max文件查看系统的进程最大数量。
    设置:使用sysctl命令设置最大进程数。
    优化建议:对于需要启动大量进程的服务器,可以增加此值。
    例:sudo sysctl -w kernel.pid_max=100000(或修改/etc/sysctl.conf文件并重启系统以永久生效)。
  2. 文件描述符限制
    查看:通过/proc/sys/fs/file-max文件查看系统的文件描述符最大数量。
    设置:使用sysctl命令或ulimit命令设置文件描述符限制。
    优化建议:增加文件描述符限制有助于服务器在高并发连接情况下保持稳定。
    例:sudo sysctl -w fs.file-max=1000000(或修改/etc/sysctl.conf文件并重启系统以永久生效),或使用ulimit -n 65536临时设置当前会话的文件描述符限制。
  3. kernel.pid_max
    参数说明:控制系统中可以同时存在的进程数量的上限。
    默认值:32768。
    优化建议:对于需要启动大量进程的系统中,可以增加此值。例如,可以设置为4194303。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件。
  4. kernel.threads-max
    参数说明:定义了系统中进程数量(包括线程)的最大值。
    优化建议:对于多线程应用程序,适当增加此值以支持更多的线程。例如,可以设置为2097152。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件。

5. 内存管理参数

  1. vm.swappiness
    参数说明:
    这个参数控制内核将内存页换出到交换分区的倾向程度。取值范围从 0 到 100,值越低表示内核越倾向于保留内存中的页,而不是将其换出到交换分区。
    优化建议:
    对于具有足够物理内存的服务器,通常可以将这个参数设置为一个较低的值,如 vm.swappiness = 10。这样可以减少对交换分区的使用,提高系统性能。
  2. vm.overcommit_memory
    参数说明:
    控制内存分配的策略。有三个取值:0(默认)表示内核在分配内存时进行谨慎的检查,确保不会过度分配导致系统内存不足;1 表示内核允许过度分配内存;2 表示内核严格按照系统的交换空间大小来限制内存分配。
    优化建议:
    对于某些需要大量内存分配的应用,可以考虑将这个参数设置为 1,以允许内核过度分配内存。但这也可能导致系统在内存不足时出现不稳定的情况,需要谨慎使用。在 /etc/sysctl.conf 中添加:vm.overcommit_memory = 1。
  3. vm.max_map_count
    参数说明:控制单个进程可以拥有的内存映射区域的最大数量。
    默认值:65536。
    优化建议:增加此值可以允许更多的内存映射,适用于需要大量内存映射的应用。例如,可以设置为262144。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件。
  4. vm.swappiness
    参数说明:控制系统使用交换空间的倾向。值越高,系统越倾向于使用交换空间。
    默认值:60。
    优化建议:对于需要高性能的应用服务器,可以设置为10或更低,以减少交换的频率,提升系统性能。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件。
  5. vm.dirty_ratio和vm.dirty_background_ratio
    参数说明:这两个参数控制内核回写脏(已修改但尚未写入磁盘)页的阈值。
    优化建议:适当调整这两个参数可以优化磁盘I/O性能。例如,可以将vm.dirty_ratio设置为15,将vm.dirty_background_ratio设置为5。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件。

6. 网络相关参数

  1. net.ipv4.tcp_max_tw_buckets
    参数说明:控制系统中TIME_WAIT套接字的最大数量。
    优化建议:增加该值可以减少TIME_WAIT套接字的数量,适用于高并发的服务器。例如,可以设置为5000。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件。
  2. net.ipv4.tcp_tw_reuse和net.ipv4.tcp_tw_recycle
    参数说明:这两个参数控制TCP TIME-WAIT快速重用。
    优化建议:开启这些参数可以允许快速重用TIME_WAIT状态的连接,提高连接重用率。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件,将值设置为1。
  3. net.ipv4.tcp_fin_timeout和net.ipv4.tcp_keepalive_time
    参数说明:分别控制TCP连接的关闭时限和空闲超时时间。
    优化建议:适当减少这些时间可以加快资源的回收。例如,可以将tcp_fin_timeout设置为10,将tcp_keepalive_time设置为150。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件。
  4. net.ipv4.ip_local_port_range
    参数说明:定义UDP和TCP连接的本地端口的取值范围。
    优化建议:扩大端口范围以支持更多的并发连接。例如,可以设置为“1024 65000”。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件。
  5. tcp_tw_reuse 和 tcp_tw_recycle
    参数说明:
    tcp_tw_reuse 允许将 TIME_WAIT 状态的套接字重新用于新的连接。
    tcp_tw_recycle 快速回收 TIME_WAIT 状态的连接。
    优化建议:
    在高并发的服务器环境中,可以考虑启用这两个参数以提高 TCP 连接的复用率,减少 TIME_WAIT 状态的连接数量。但在某些网络环境下,启用 tcp_tw_recycle 可能会导致连接问题,因此需要谨慎使用。
    在 /etc/sysctl.conf 中添加:net.ipv4.tcp_tw_reuse = 1 和 net.ipv4.tcp_tw_recycle = 1。
  6. tcp_max_syn_backlog
    参数说明:
    定义了 TCP 连接请求队列的最大长度。当服务器收到大量的连接请求时,这些请求会在队列中等待被处理。
    优化建议:
    如果服务器面临大量的并发连接请求,可以适当增加这个参数的值。例如,对于高并发的 Web 服务器,可以将其设置为一个较大的数值,如 tcp_max_syn_backlog = 8192。

7. 磁盘 I/O 参数

  1. vm.dirty_background_ratio 和 vm.dirty_ratio
    参数说明:
    vm.dirty_background_ratio 定义了系统内存中可以被内核的后台进程异步写入磁盘的脏页比例。
    vm.dirty_ratio 定义了系统内存中可以被进程主动写入磁盘的脏页比例。
    优化建议:
    根据系统的磁盘写入性能和内存大小,调整这两个参数的值。如果系统的磁盘写入速度较快,可以适当增加这两个参数的值,以减少磁盘写入的频率,提高系统性能。例如,vm.dirty_background_ratio = 5 和 vm.dirty_ratio = 10。
  2. elevator
    参数说明:
    这个参数指定了磁盘 I/O 调度算法。常见的调度算法有 CFQ(完全公平队列)、Deadline(截止时间调度)和 NOOP(简单调度)。
    优化建议:
    不同的调度算法适用于不同的工作负载。例如,对于数据库服务器等对 I/O 响应时间要求较高的应用,可以考虑使用 Deadline 调度算法。可以通过在 /etc/grub.conf 文件中添加 elevator=deadline 来更改调度算法。

8. 其他参数

  1. kernel.msgmnb、kernel.msgmax和kernel.msgmni
    参数说明:分别控制消息队列的最大长度、单个消息的最大长度和系统中同时运行的消息队列的个数。
    优化建议:根据具体需求调整这些参数,以优化消息队列的性能。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件。
  2. kernel.shmmax和kernel.shmall
    参数说明:分别控制单个共享内存段的最大值和系统上可以使用的共享内存的总量。
    优化建议:在需要大量共享内存的应用中,如数据库服务器,适当增加这些值。
    设置方法:使用sysctl命令或修改/etc/sysctl.conf文件。

注:Linux内核参数有很多,以上介绍的是常用而且关键的。
本篇完结。
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,家人们的点赞和关注是我笔耕不辍的动力。

标签:sysctl,白到,conf,vm,etc,调优,参数,设置,Linux
From: https://blog.csdn.net/qq_45732829/article/details/143085748

相关文章

  • 19.JVM调优常量池详解
    一、GC日志详解1.常用参数对于java应用我们可以通过一些配置把程序运行过程中的gc日志全部打印出来,然后分析gc日志得到关键性指标,分析GC原因,调优JVM参数。打印GC日志方法,在JVM参数里增加参数,%t代表时间-Xloggc:./gc-%t.log-XX:+PrintGCDetails-XX:+PrintGCDateStamps-X......
  • Linux常用命令大全一
    一、切换目录cd/home进入'/home'目录' cd..返回上一级目录 cd../..返回上两级目录 cd进入个人的主目录 cd-返回上次所在的目录 二、显示当前目录pwd显示工作路径三、查看文件 ls查看目录中的文件 ls-F查看目录中的文件 ls-l显示文件和目......
  • Linux学习笔记(复习版day008)
    1.僵尸进程僵尸进程(ZombieProcess)是指那些已经终止(即完成执行)的进程,但其父进程尚未读取其退出状态信息的进程。简单来说,僵尸进程的生命周期已经结束,但它的进程描述符仍然存在于系统中,以便父进程能够获取其退出状态。处理:1.top命令查询是否有僵尸进程,此处1zombie表示有一个......
  • Linux宝塔面板安装Windows环境搭建企业
    宝塔面板是一款非常流行的服务器管理软件,支持多种操作系统,包括Linux。以下是基于CentOS系统的宝塔面板安装步骤:1.检查系统环境确保您的服务器操作系统为CentOS7.x或更高版本。确保服务器有公网IP地址。2.关闭防火墙(可选)  3.安装宝塔面板打开终端或SSH连接到您......
  • RockyLinux安装redis
    本文介绍RockyLinux使用dnf在线安装redis并修改密码设置远程登陆。本博客使用RetHat系的新版本系统,如使用Debian系的系统如Ubuntu,只需使用apt安装,其余部分类似。1、使用如下命令安装redissudodnfinstallredis-server2、安装完成后可以使用systemctl工具对redis服务进行控......
  • RockyLinux安装MySQL
    本文介绍RockyLinux使用dnf在线安装MySQL并修改密码设置远程登陆。本博客使用RetHat系的新版本系统,如使用Debian系的系统如Ubuntu,只需使用apt安装,其余部分类似。1、使用如下命令安装MySQLsudodnfinstallmysql-server2、安装完成后可以使用systemctl工具对MySQL服务进行控......
  • Linux DMA Engine framework(1)_概述
    1.前言前面文章介绍“LinuxMMCframework”的时候,涉及到了MMC数据传输,进而不可避免地遭遇了DMA(DirectMemoryAccess)。因而,择日不如撞日,就开几篇文章介绍Linux的DMAEngineframework吧。本文是DMAEngineframework分析文章的第一篇,主要介绍DMAcontroller的概念、术语(从硬......
  • Linux源码阅读: Linux内核启动的基本流程
    目录从硬件上电到BIOS从BIOS到BootloaderBootLoader加载流程mainReference进程管理从硬件上电到BIOS我们首先需要说的是实模式,实模式让所有软件访问到的地址都是最真实的物理地址。同时,软件可以不受限制的操作IO和内存。与之相对的是保护模式:进程访问到的全部都是虚......
  • 昇思MindSpore进阶教程--AOE调优工具
    大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。技术上主攻前端开发、鸿蒙开发和AI算法研究。努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧概述AOE(AscendOptimizationEngine)是一款自动调优工具,作用是充分利用有限的硬件资源,以满足算子和......
  • [linux] linux 上手使用
    环境:ubuntu软件配置zsh终端界面#安装zshgitsudoapt-getinstallzshgit#切换到用户目录cd~/#下载主题配置文件gitclonehttps://github.com/ohmyzsh/ohmyzsh.git~/.oh-my-zsh#拷贝主题配置文件cp~/.oh-my-zsh/templates/zshrc.zsh-template~/.zshrc#开......