一,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),系统启动时会加载里面的设置。

[root@luc58 ~]# 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命令使用

使用环境

[root@luc58 ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.2 (Maipo

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

[root@luc58 ~]# sysctl -a | grep icmp
net.ipv4.icmp_echo_ignore_all = 0
[root@luc58 ~]# sysctl -w net.ipv4.icmp_echo_ignore_all=1
[root@luc58 ~]# sysctl -p

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

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

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

[root@luc58 ~]# systemctl stop firewalld
[root@luc58 ~]# systemctl disable firewalld

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

[root@luc58 ~]# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

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

[root@luc58 ~]# 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 系统调优