linux的sysctl命令以及相关应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux的sysctl命令以及相关应用相关的知识,希望对你有一定的参考价值。

一,sysctl命令简介

sysctl命令被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。它包含一些TCP/ip堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。
1.sysctl(选项)(参数)
选项:(详情可以man sysctl)
-a all 查看所有内核参数变量和值
-w write 修改内核参数
-p 从配置文件“/etc/sysctl.conf”加载内核参数设置

参数:
变量=值:设置内核参数对应的变量值。

2.sysctl和/proc/sys/配置文件关系
sysctl 是修改内核参数的命令
/proc/sys/是内存读取内核参数目录
sysctl和/proc/sys对应规则:
去掉前面部分/proc/sys,将文件名中的斜杠变为点
例如:

  /proc/sys/net/ipv4/ip_forward =》 net.ipv4.ip_forward
  /proc/sys/kernel/hostname =》 kernel.hostname

这两条规则可以将/proc/sys中的任一文件名转换成sysctl中的变量名。
用sysctl -w或echo xxx > /pro/sys/net/netfilter/xxx做的修改在重启后会失效。
3.centos6和7的配置文件
6版本:/etc/sysctl.conf,7版本: /etc/sysctl.d/99-sysctl.conf
可以编辑/etc/sysctl.d/下的配置文件(旧系统是/etc/sysctl.conf),系统启动时会加载里面的设置。

[[email protected] ~]# ll /etc/sysctl.d/99-sysctl.conf 
lrwxrwxrwx. 1 root root 14 1月   5 2017 /etc/sysctl.d/99-sysctl.conf -> ../sysctl.conf  
//sysctl.conf和99-sysctl.conf 是同一个文件,只是链接而已

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

二,sysctl命令使用

使用环境

[[email protected] ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.2 (Maipo

1.屏蔽别人 ping 你的主机(布尔型用 1 来表示‘yes‘,用 0 来表示‘no‘)

[[email protected] ~]# sysctl -a | grep icmp
net.ipv4.icmp_echo_ignore_all = 0
[[email protected] ~]# sysctl -w net.ipv4.icmp_echo_ignore_all=1
[[email protected] ~]# sysctl -p

2./var/log/messages 日志出现 kernel: nf_conntrack: table full, dropping packet.请问是什么原因导致的?如何解决
原因:
服务器访问量大,内核netfilter模块conntrack相关参数配置不合理,导致新连接被丢掉。
分析:
nf_conntrack模块用一个哈希表记录建立的连接,连接进来比释放的快,把哈希表塞满,连接的数据包就会被丢掉,导致拒绝服务.调小建立和释放时间,调大哈希表。
解决:
A,重新设置nf_conntrack模块参数

[[email protected] ~]# echo 250000 > /sys/module/nf_conntrack/parameters/hashsize    //设置哈希表大小
[[email protected] ~]# sysctl -w net.nf_conntrack_max = 1000000   
//哈希表最大跟踪数(一般是哈希表4倍)
[[email protected] ~]# sysctl -w net.netfilter.nf_conntrack_max = 1000000      
//哈希表最大跟踪数
[[email protected] ~]# sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established = 300  
//默认432000 秒(5天) tcp三次握手建立
[[email protected] ~]# sysctl -w net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 60    
//默认120秒,四次断开的主动断开一方,第一和二次断开等待时间
[[email protected] ~]# sysctl -w net.netfilter.nf_conntrack_tcp_timeout_close_wait = 30 
//默认60秒 ,四次断开,被动断开一方,第二次断开的出现的状态
[[email protected] ~]# sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait = 60  
//默认120秒 , 四次断开,被动断开一方,第四次断开的状态

B,关闭防火墙(不直接暴露在公网的主机)

[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld

3.开启内核路由转发功能

[[email protected] ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

4.调整所有的进程可以打开的文件总数量(web调优可以使用)

[[email protected] ~]# sysctl -w fs.file-max=197900
fs.file-max = 197900

共勉:I hear and I forget. I see and I remember. I do and I understand!

参考连接:
https://blog.csdn.net/hytfly/article/details/53426630
http://keyknight.blog.163.com/blog/static/3663784020104152407759/
https://blog.csdn.net/linuxnews/article/details/51178794 系统调优

以上是关于linux的sysctl命令以及相关应用的主要内容,如果未能解决你的问题,请参考以下文章

linux命令sysctl使用

每日linux命令学习-3-sysctl

Linux的sysctl 命令参数详解

Linux 系统参数修改命令sysctl

linux /etc/sysctl.conf 禁止别人ping自己

linux 内核参数优化