Linux 【关于内核参数详解和优化】

Linux内核参数是操作系统中用于调整和优化系统性能和行为的关键设置。

Linux内核参数可以通过以下几种方式进行查看和修改:

  1. /proc/sys目录:大多数内核参数都可以在/proc/sys目录下找到,使用sysctl命令查看和设置这些参数。
  2. sysctl.conf文件:此文件通常位于/etc目录中,可以在系统启动时自动应用内核参数。
  3. 命令行:在系统启动时通过引导加载程序(如GRUB)传递参数(以 GRUB_CMDLINE_LINUX_DEFAULT 开头的那一行)。

1.文件系统参数:

1.1 fs.file-max

描述:控制系统中打开文件描述符的数量上限。

默认值:通常为65535。

优化建议:对于高负载服务器,可以增加此限制,以防止文件句柄耗尽的问题。

设置方法:

sysctl -w fs.file-max=6553560
echo "fs.file-max=6553560" >> /etc/sysctl.conf

1.2 fs.nr_open

描述:定义了每个进程可以打开的文件描述符的最大数量。

优化建议:可以根据具体需求进行调整,尤其是对于需要打开大量文件的应用程序。

设置方法:

sysctl -w fs.nr_open=1048576
echo "fs.nr_open=1048576" >> /etc/sysctl.conf

2.内存管理参数

2.1 vm.max_map_count

描述:控制单个进程可以拥有的内存映射区域的最大数量。

默认值:65536。

优化建议:增加此值可以允许更多的内存映射,适用于需要大量内存映射的应用。

设置方法:


sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" >> /etc/sysctl.conf

2.2 vm.swappiness

描述:控制系统使用交换空间的倾向。值越高,系统越倾向于使用交换空间。

默认值:60。

优化建议:对于需要高性能的应用服务器,可以设置为10或更低,以减少交换的频率。

设置方法:

sysctl -w vm.swappiness=10
echo "vm.swappiness=10" >> /etc/sysctl.conf

2.3 vm.dirty_ratio 和 vm.dirty_background_ratio

描述:这两个参数控制内核回写脏( 已修改但尚未写入磁盘 )页的阈值。

优化建议:适当调整这两个参数可以优化磁盘I/O性能。

设置方法:

sysctl -w vm.dirty_ratio=15
sysctl -w vm.dirty_background_ratio=5
echo "vm.dirty_ratio=15" >> /etc/sysctl.conf
echo "vm.dirty_background_ratio=5" >> /etc/sysctl.conf

vm.dirty_ratio作用:调整系统在什么时候开始和停止将脏(已修改但尚未写入磁盘)页面刷新回磁盘。

vm.dirty_background_ratio 表示系统内存的一定比例被脏页所占用时,系统允许后台写入操作继续进行。后台写入操作是指在正常系统负载下,不会因为脏页过多而影响系统响应性能的写入操作。

当脏页占用的内存达到 vm.dirty_ratio 所设定的百分比时,系统会触发后台写入操作,将脏页写入磁盘。

3.进程和线程参数

3.1 kernel.pid_max

描述:控制系统中可以同时存在的进程数量的上限。

默认值:32768。

优化建议:对于需要启动大量进程的系统中,可以增加此值。

设置方法:


sysctl -w kernel.pid_max=4194303
echo "kernel.pid_max=4194303" >> /etc/sysctl.conf

3.2 kernel.threads-max

描述:定义了系统中进程数量(包括线程)的最大值。

优化建议:对于多线程应用程序,适当增加此值以支持更多的线程。

设置方法:


sysctl -w kernel.threads-max=2097152
echo "kernel.threads-max=2097152" >> /etc/sysctl.conf

4.网络参数

4.1 net.ipv4.tcp_max_tw_buckets

描述:控制系统中TIME_WAIT套接字的最大数量。

优化建议:增加该值可以减少TIME_WAIT套接字的数量,适用于高并发的服务器。

设置方法:

sysctl -w net.ipv4.tcp_max_tw_buckets=5000
echo "net.ipv4.tcp_max_tw_buckets=5000" >> /etc/sysctl.conf

4.2 net.ipv4.tcp_tw_reuse 和 net.ipv4.tcp_tw_recycle

描述:这两个参数控制TCP TIME-WAIT快速重用。

优化建议:开启这些参数可以允许快速重用TIME_WAIT状态的连接。

设置方法:


sysctl -w net.ipv4.tcp_tw_reuse=1
sysctl -w net.ipv4.tcp_tw_recycle=1
echo "net.ipv4.tcp_tw_reuse=1" >> /etc/sysctl.conf
echo "net.ipv4.tcp_tw_recycle=1" >> /etc/sysctl.conf

4.3 net.ipv4.tcp_fin_timeout 和 net.ipv4.tcp_keepalive_time

描述:分别控制TCP连接的关闭时限和空闲超时时间。

优化建议:适当减少这些时间可以加快资源的回收。

设置方法:


sysctl -w net.ipv4.tcp_fin_timeout=10
sysctl -w net.ipv4.tcp_keepalive_time=150
echo "net.ipv4.tcp_fin_timeout=10" >> /etc/sysctl.conf
echo "net.ipv4.tcp_keepalive_time=150" >> /etc/sysctl.conf

4.4 net.ipv4.ip_local_port_range

描述:定义UDP和TCP连接的本地端口的取值范围。

优化建议:扩大端口范围以支持更多的并发连接。

设置方法:


sysctl -w net.ipv4.ip_local_port_range="1024 65000"
echo "net.ipv4.ip_local_port_range=1024 65000" >> /etc/sysctl.conf

5.消息队列参数

5.1 kernel.msgmnb.kernel.msgmax 和 kernel.msgmni

描述:分别控制消息队列的最大长度.单个消息的最大长度和系统中同时运行的消息队列的个数。

优化建议:根据具体需求调整这些参数,以优化消息队列的性能。

设置方法:

sysctl -w kernel.msgmnb=65536
sysctl -w kernel.msgmax=65536
sysctl -w kernel.msgmni=2048
echo "kernel.msgmnb=65536" >> /etc/sysctl.conf
echo "kernel.msgmax=65536" >> /etc/sysctl.conf
echo "kernel.msgmni=2048" >> /etc/sysctl.conf

6.共享内存参数

6.1 kernel.shmmax 和 kernel.shmall

描述:分别控制单个共享内存段的最大值和系统上可以使用的共享内存的总量

优化建议:在需要大量共享内存的应用中,如数据库服务器,适当增加这些值。

设置方法:

sysctl -w kernel.shmmax=1800000000000
sysctl -w kernel.shmall=1800000000000
echo "kernel.shmmax=1800000000000" >> /etc/sysctl.conf
echo "kernel.shmall=1800000000000" >> /etc/sysctl.conf

7.TCP缓冲区参数

7.1 net.ipv4.tcp_rmem 和 net.ipv4.tcp_wmem

描述:定义TCP接收和发送缓冲区的大小。

优化建议:根据网络带宽和延迟调整这些参数,以优化网络性能。

设置方法:

sysctl -w net.ipv4.tcp_rmem="10240 87380 12582912"
sysctl -w net.ipv4.tcp_wmem="10240 87380 12582912"
echo "net.ipv4.tcp_rmem=10240 87380 12582912" >> /etc/sysctl.conf
echo "net.ipv4.tcp_wmem=10240 87380 12582912" >> /etc/sysctl.conf

8.套接字监听队列参数

8.1 net.core.somaxconn

描述:控制套接字监听队列的最大长度。

优化建议:对于高并发的Web服务器,增大此值以提高接受连接的能力。

设置方法:

sysctl -w net.core.somaxconn=40960
echo "net.core.somaxconn=40960" >> /etc/sysctl.conf

9.网络设备参数

9.1 net.core.netdev_max_backlog

描述:控制网络设备队列的最大长度。

优化建议:适当增大此值可以优化网络吞吐量。

设置方法:

sysctl -w net.core.netdev_max_backlog=8096

  • 15
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值