歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux系統控制文件 /etc/sysctl.conf

Linux系統控制文件 /etc/sysctl.conf

日期:2017/2/28 15:52:24   编辑:Linux教程
/etc/sysctl.conf這個目錄主要是配置一些系統信息,而且它的內容全部是對應於/proc/sys/這個目錄的子目錄及文件。這樣或許你不理解,先看看我的系統/etc/sysctl.conf這個文件裡面有什麼內容:cat /etc/sysctl.conf
fs.file-max = 3145728

fs.suid_dumpable = 1
kernel.core_uses_pid = 1

kernel.printk = 4 4 1 7
kernel.shmmax = 7516192768
kernel.shmall = 1835008

net.ipv4.ip_local_port_range = 8192 65535
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.netfilter.ip_conntrack_max = 1048576
net.ipv4.tcp_max_tw_buckets = 1048576
net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_rmem = 4096 87380 4120576
net.ipv4.tcp_wmem = 4096 16384 4120576

#vm.nr_hugepages = 0
其實每個'.'分割的就代表一個目錄,例如,fs.file-max也就代表/proc/sys/fs/file-max。那麼/proc/sys/是用來做什麼的呢?大家都知道/proc是每次系統啟動的時候都要重新掛載的,它反映了系統內存裡面的一些狀態。通過/proc/可以很好的了解到當前系統的一些信息。而/proc/sys/則是這些信息的一小部分而已。你可以通過ls /proc/查看,裡面還是不是有很多其他的數字命名的目錄?那就是單個進程的信息了,那個數字就是進程ID。例如之前寫過一篇關於two many open files解決辦法的文章,那麼查看某個進程打開多少FD,則可以通過ls /proc/<pid>/fd | wc -l來統計。
常用的有哪些呢?剛入門,自己用到的選項也不多。
1. vm.nr_hugepages/vm.hugetlb_shm_group # 第一個表示設置系統有多少大頁內存,第二個表示哪些用戶組的進程可以使用大頁內存
2. vm.swappiness # 如果設置為0表示禁用swap,否則值越大使用swap的可能性越高
3. vm.overcommit_memory/vm.overcommit_ratio # 這個設置是否可以超額分配內存,當然這是利用的virtual memory機制實現的。
前面那些參數都是在測試有什麼方法防止mysqld使用swap,或者能否被避免Linux的OOM機制,詳情請點擊這裡
還有在Linux上裝Oracle會要設置kernel.shmmax這個參數吧(>_<,我還沒在linux下安裝過~) 這個也可以在/etc/sysctl.conf裡面設置。

前面說過/etc/sysctl.conf與目錄/proc/sys/的關系,那麼常見設置方法有三個:
1. echo value > /proc/sys/xx/yy
2. vi /etc/sysctl.conf #vi編輯,然後添加設置 ; sysctl -p #生效
3. sysctl -w kernel.domainname="example.com" #利用-w生效
另外需要注意,/etc/sysctl.conf 與 sysctl命令只有root用戶才有權限執行

關於/etc/sysctl.conf的介紹就差不多了,理解了這個文件的作用,更關鍵的是要知道裡面每項的含義,以及怎麼設置來調優系統。不懂的太多了,只能靠慢慢積累了~
另外幾個系統緩存參數設置參見這裡(感覺這篇文章寫得不錯~)
Copyright © Linux教程網 All Rights Reserved