由于Linux的內(nèi)核參數(shù)信息都存在內(nèi)存中,因此可以通過命令直接修改,并且修改后直接生效。但是,當(dāng)系統(tǒng)重新啟動(dòng)后,原來設(shè)置的參數(shù)值就會(huì)丟失,而系統(tǒng)每次啟動(dòng)時(shí)都會(huì)自動(dòng)去/etc/sysctl.conf文件中讀取內(nèi)核參數(shù),因此將內(nèi)核的參數(shù)配置寫入這個(gè)文件中,是一個(gè)比較好的選擇。
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比章貢網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式章貢網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋章貢地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
首先打開/etc/sysctl.conf文件,查看如下兩行的設(shè)置值,這里是:
kernel.shmall
=
2097152
kernel.shmmax
=
4294967295
如果系統(tǒng)默認(rèn)的配置比這里給出的值大,就不要修改原有配置。同時(shí)在/etc/sysctl.conf文件最后,添加以下內(nèi)容:
fs.file-max
=
6553600
kernel.shmmni
=
4096
kernel.sem
=
250
32000
100
128
net.ipv4.ip_local_port_range
=
1024
65000
net.core.rmem_default
=
4194304
net.core.rmem_max
=
4194304
net.core.wmem_default
=
262144
net.core.wmem_max
=
262144
這里的“fs.file-max
=
6553600”其實(shí)是由“fs.file-max
=
512
*
PROCESSES”得到的,我們指定PROCESSES的值為12800,即為“fs.file-max
=512
*12800”。
sysctl.conf文件修改完畢后,接著執(zhí)行“sysctl
-p”使設(shè)置生效。
[root@localhost
~]#
sysctl
-p
常用的內(nèi)核參數(shù)的含義如下。
kernel.shmmax:表示單個(gè)共享內(nèi)存段的最大值,以字節(jié)為單位,此值一般為物理內(nèi)存的一半,不過大一點(diǎn)也喊答辯沒關(guān)系,這里設(shè)定的為4GB,即“4294967295/1024/1024/1024=4G”。
kernel.shmmni:表示單個(gè)共享內(nèi)存段的最小值,一般為4kB,即4096bit.
kernel.shmall:表示可用共享內(nèi)存的總量,單位是頁,在32位系統(tǒng)上一頁等于4kB,也就是4096字節(jié)。
fs.file-max:表示文件句柄的最大數(shù)量。文件句柄表示在Linux系統(tǒng)中可以打開舉睜的文件數(shù)量。
ip_local_port_range:表示端口的范圍,為指定的內(nèi)容。
kernel.sem:表示設(shè)置的信號(hào)量,這4個(gè)參數(shù)內(nèi)容大小固定。
net.core.rmem_default:表示接收套接字緩沖區(qū)大小的缺省值(以字節(jié)為單位)。
net.core.rmem_max
:表示接收套接字緩沖區(qū)大小的最大值(以字節(jié)為單位)
net.core.wmem_default:表示發(fā)送套接鄭缺字緩沖區(qū)大小的缺省值(以字節(jié)為單位)。
net.core.wmem_max:表示發(fā)送套接字緩沖區(qū)大小的最大值(以字節(jié)為單位)。
Linux設(shè)置內(nèi)核參數(shù)的方法
1 內(nèi)核參數(shù)的查看方法
使用“sysctl -a”命令可以查看所有正在使用的內(nèi)核參數(shù)。內(nèi)核參數(shù)比較多(一般多達(dá)500項(xiàng)),按照前綴主要分為以下幾大類:net.ipv4、net.ipv6、net.core、vm、fs、dev.parport、dev.cdrom 、dev.raid、kernel等等。相同的linux,安裝的組件和使用的方式不一樣,正在使用的內(nèi)核參數(shù)是不一樣的。
所有的內(nèi)核參數(shù)的說明文檔是放到/usr/src/linux/Documentation/sysctl中的,如果想知老帶判道對(duì)內(nèi)核參數(shù)的說明,可以到該目錄下查看相應(yīng)的說明文檔。
2 內(nèi)核參數(shù)的的設(shè)置方法
由于Linux的內(nèi)核參數(shù)信息都存在內(nèi)存中,因此可以通過命令直接行宏修改,并且修改后直接生效。也可以通過文件的方式進(jìn)行設(shè)置。下面就介紹這兩種修改方法。
2.1 命令設(shè)置的方式
可以用兩種方法實(shí)現(xiàn)。
1、使用“sysctl -w 參數(shù)名=值”的方式
假設(shè)我們把net.ipv4.ip_forward的值修改為1,使用命令“sysctl -w net.ipv4.ip_forward=1”。
2、修改內(nèi)核參數(shù)對(duì)應(yīng)的proc文件
內(nèi)核參數(shù)位于/proc/sys/之下,參數(shù)名稱是以文件所在的路徑,并將“/”以“.”來取代。舉例來說,/proc/sys/net/ip_forward的參數(shù)名稱為net.ipv4.ip_forward。
同樣把net.ipv4.ip_forward的值修改為1,使用命令“echo “1” /proc/sys/net/ipv4/ip_forward”。
注意,這里proc文件跟普通的文件不一樣。一般一個(gè)文件用echo寫入內(nèi)容之侍改后,會(huì)變成一個(gè)文本文件,但echo修改proc文件之后還是個(gè)空文件。
RedHat向管理員提供了非常好的方法,使我們可以在系統(tǒng)運(yùn)行時(shí)更改內(nèi)核參數(shù),而不需要重新引導(dǎo)系統(tǒng)。這是通過/PRoc虛擬文件系統(tǒng)實(shí)現(xiàn)的。/proc/sys目錄下存放著大多數(shù)的內(nèi)核參數(shù),并且設(shè)計(jì)成可以在系統(tǒng)運(yùn)行的同時(shí)進(jìn)行更改。下面我們以打開內(nèi)核的 ip轉(zhuǎn)發(fā)功能為例說明在系統(tǒng)運(yùn)行時(shí)修改內(nèi)核參數(shù)的兩種方法。IP轉(zhuǎn)發(fā)是指允許系統(tǒng)對(duì)來源和目的地都不是本機(jī)的數(shù)據(jù)包通過網(wǎng)絡(luò),RedHat默認(rèn)屏蔽此功能,在 需要用本機(jī)作為路由器、NAT等情況下需要開啟此功能。 方法一:修改/proc下內(nèi)核參數(shù)文件內(nèi)容 直接修改內(nèi)核參數(shù)ip_forward對(duì)應(yīng)在/proc下的文件/proc/sys/net/ipv4/ip_forward。用下面命令查看ip_forward文件內(nèi)容: # cat /proc/sys/net/ipv4/ip_forward 該文件默認(rèn)值0是禁止ip轉(zhuǎn)發(fā),修改為1即開啟ip轉(zhuǎn)發(fā)功能。修改命令如下: # echo 1 /帆老proc/sys/net/ipv4/ip_forward 修改過后就馬上生效,即內(nèi)核已經(jīng)打開ip轉(zhuǎn)發(fā)功能。但如果系統(tǒng)重啟后則又恢復(fù)為默認(rèn)值0,如果想永久打開需要通過修改/etc/sysctl.conf文件的內(nèi)容來實(shí)現(xiàn)。 方法二.修改/etc/sysctl.conf文件 默認(rèn)sysctl.conf文件中有一個(gè)變量是碰嫌 net.ipv4.ip_forward = 0 將后面值改為1,然后保存文件。因?yàn)槊看蜗到y(tǒng)啟動(dòng)時(shí)初始化腳本/etc/rc.d/rc.sysinit會(huì)讀取/etc/sysctl.conf文件的內(nèi)容,所以修改后每次系統(tǒng)啟動(dòng)時(shí)都會(huì)開啟ip轉(zhuǎn)發(fā)功能。但只是修改sysctl文件不會(huì)馬上生效,如果想使修改馬上生效可以執(zhí)行下面的命令: # sysctl –p 在笑轎手修改其他內(nèi)核參數(shù)時(shí)可以向/etc/sysctl.conf文件中添加相應(yīng)變量即可,下面介紹/proc/sys下內(nèi)核文件與配置文件 sysctl.conf中變量的對(duì)應(yīng)關(guān)系,由于可以修改的內(nèi)核參數(shù)都在/proc/sys目錄下,所以sysctl.conf的變量名省略了目錄的前面部 分(/proc/sys)。 將/proc/sys中的文件轉(zhuǎn)換成sysctl中的變量依據(jù)下面兩個(gè)簡(jiǎn)單的規(guī)則: 1.去掉前面部分/proc/sys 2.將文件名中的斜杠變?yōu)辄c(diǎn) 這兩條規(guī)則可以將/proc/sys中的任一文件名轉(zhuǎn)換成sysctl中的變量名。 例如: /proc/sys/net/ipv4/ip_forward =》 net.ipv4.ip_forward /proc/sys/kernel/hostname =》 kernel.hostname 可以使用下面命令查詢所有可修改的變量名 # sysctl –a 下面例舉幾個(gè)簡(jiǎn)單的內(nèi)核參數(shù): 1./proc/sys/kernel/shmmax 該文件指定內(nèi)核所允許的最大共享內(nèi)存段的大小。 2./proc/sys/kernel/threads-max 該文件指定內(nèi)核所能使用的線程的最大數(shù)目。 3./proc/sys/kernel/hostname 該文件允許您配置網(wǎng)絡(luò)主機(jī)名。
redhat5 or centos5:
vi /etc/sysctl.conf: 檢查并添加以下信息
kernel.core_uses_pid = 1
fs.suid_dumpable = 1
fs.aio-max-nr = 1048576
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
保存 /和租源etc/喚態(tài)sysctl.conf, 采用以型棗下命令使配置生效:
# sysctl -p
or
# reboot ( 建議 )