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/是內存讀取內核參數目錄
去掉前面部分/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
[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命令以及相關應用