1. 程式人生 > >linux的sysctl命令以及相關應用

linux的sysctl命令以及相關應用

sysctl linux內核參數

一,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 系統調優

linux的sysctl命令以及相關應用