1. 優(yōu)化內(nèi)核相關(guān)參數(shù)
配置文件/etc/sysctl.conf
配置方法直接將參數(shù)添加進(jìn)文件每條一行.
sysctl -a可以查看默認(rèn)配置
sysctl -p執(zhí)行并檢測(cè)是否有錯(cuò)誤
例如設(shè)置錯(cuò)了參數(shù):
[root@ossec makeit]# sysctl -p net.ipv4.ip_forward = 1 sysctl: cannot stat /proc/sys/net/core/somaxconn1: 沒(méi)有那個(gè)文件或目錄
網(wǎng)絡(luò)相關(guān)
net.core.somaxconn=65535
一個(gè)端口最大監(jiān)聽(tīng)TCP連接隊(duì)列的長(zhǎng)度
net.core.netdev_max_backlog=65535
數(shù)據(jù)包速率比內(nèi)核處理快時(shí),送到隊(duì)列的數(shù)據(jù)包上限
net.ipv4.tcp_max_syn_backlog=65535
TCP syn隊(duì)列的最大長(zhǎng)度,第一次握手的連接參數(shù)過(guò)大可能也會(huì)遭受syn flood攻擊
net.ipv4.tcp_fin_timeout=10
fin超時(shí)時(shí)間,表示如果套接字由本端要求關(guān)閉,這個(gè)參數(shù)決定了它保持在FIN-WAIT-2狀態(tài)的時(shí)間
net.ipv4.tcp_tw_reuse=1
是否允許將TIME-WAIT sockets重新用于新的TCP連接,默認(rèn)為0 關(guān)閉
net.ipv4.tcp_tw_recycle=1
是否開(kāi)啟TCP連接中TIME-WAIT sockets的快速回收,默認(rèn)為0 關(guān)閉
關(guān)于網(wǎng)絡(luò)參數(shù)調(diào)優(yōu)模板,模板配置為8和16g內(nèi)存[按需調(diào)整]
參數(shù) | 默認(rèn)配置 | 調(diào)整配置 | 說(shuō)明 |
---|---|---|---|
fs.file-max | 1048576 | 9999999 | 所有進(jìn)程打開(kāi)的文件描述符數(shù) |
fs.nr_open | 1635590 | 1635590 | 單個(gè)進(jìn)程可分配的最大文件數(shù) |
net.core.rmem_default | 124928 | 262144 | 默認(rèn)的TCP讀取緩沖區(qū) |
net.core.wmem_default | 124928 | 262144 | 默認(rèn)的TCP發(fā)送緩沖區(qū) |
net.core.rmem_max | 124928 | 8388608 | 默認(rèn)的TCP最大讀取緩沖區(qū) |
net.core.wmem_max | 124928 | 8388608 | 默認(rèn)的TCP最大發(fā)送緩沖區(qū) |
net.ipv4.tcp_wmem | 4096 16384 4194304 | 4096 16384 8388608 | TCP發(fā)送緩沖區(qū) |
net.ipv4.tcp_rmem | 4096 87380 4194304 | 4096 87380 8388608 | TCP讀取緩沖區(qū) |
net.ipv4.tcp_mem | 384657 512877 769314 | 384657 512877 3057792 | TCP內(nèi)存大小 |
net.core.netdev_max_backlog | 1000 | 5000 | 在每個(gè)網(wǎng)絡(luò)接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時(shí),允許送到隊(duì)列的數(shù)據(jù)包的最大數(shù)目 |
net.core.optmem_max | 20480 | 81920 | 每個(gè)套接字所允許的最大緩沖區(qū)的大小 |
net.core.somaxconn | 128 | 2048 | 每一個(gè)端口最大的監(jiān)聽(tīng)隊(duì)列的長(zhǎng)度,這是個(gè)全局的參數(shù) |
net.ipv4.tcp_fin_timeout | 60 | 30 | 對(duì)于本端斷開(kāi)的socket連接,TCP保持在FIN-WAIT-2狀態(tài)的時(shí)間(秒)。對(duì)方可能會(huì)斷開(kāi)連接或一直不結(jié)束連接或不可預(yù)料的進(jìn)程死亡 |
net.core.netdev_max_backlog | 1000 | 10000 | 在每個(gè)網(wǎng)絡(luò)接口接收數(shù)據(jù)包的速率比內(nèi)核處理這些包的速率快時(shí),允許送到隊(duì)列的數(shù)據(jù)包的最大數(shù)目 |
net.ipv4.tcp_max_syn_backlog | 1024 | 2048 | 對(duì)于還未獲得對(duì)方確認(rèn)的連接請(qǐng)求,可保存在隊(duì)列中的最大數(shù)目。如果服務(wù)器經(jīng)常出現(xiàn)過(guò)載,可以嘗試增加這個(gè)數(shù)字 |
net.ipv4.tcp_max_tw_buckets | 5000 | 5000 | 系統(tǒng)在同時(shí)所處理的最大timewait sockets數(shù)目 |
net.ipv4.tcp_tw_reuse | 0 | 1 | 是否允許將TIME-WAIT sockets重新用于新的TCP連接 |
net.ipv4.tcp_keepalive_time | 7200 | 900 | 表示TCP鏈接在多少秒之后沒(méi)有數(shù)據(jù)報(bào)文傳輸時(shí)啟動(dòng)探測(cè)報(bào)文(發(fā)送空的報(bào)文) |
net.ipv4.tcp_keepalive_intvl | 75 | 30 | 表示前一個(gè)探測(cè)報(bào)文和后一個(gè)探測(cè)報(bào)文之間的時(shí)間間隔 |
net.ipv4.tcp_keepalive_probes | 9 | 3 | 表示探測(cè)的次數(shù) |
注意:
* 參數(shù)值并不是設(shè)置的越大越好,有的需要考慮服務(wù)器的硬件配置,參數(shù)對(duì)服務(wù)器上其它服務(wù)的影響等。
本地端口號(hào)
有時(shí)候我們修改了文件句柄限制數(shù)后,錯(cuò)誤日志又會(huì)提示 "Can’t assignrequested address"。這是因?yàn)門(mén)CP 建立連接,在創(chuàng)建 Socket 句柄時(shí),需要占用一個(gè)本地端口號(hào)(與 TCP 協(xié)議端口號(hào)不一樣),相當(dāng)于一個(gè)進(jìn)程,便于與其它進(jìn)程進(jìn)行交互。而Linux內(nèi)核的TCP/IP 協(xié)議實(shí)現(xiàn)模塊對(duì)本地端口號(hào)的范圍進(jìn)行了限制。當(dāng)端口號(hào)用盡,就會(huì)出現(xiàn)這種錯(cuò)誤了。
我們可以修改本地端口號(hào)的范圍。
# 查看IP協(xié)議本地端口號(hào)限制 cat /proc/sys/net/ipv4/ip_local_port_range #一般系統(tǒng)默認(rèn)為以下值 32768 61000 #修改本地端口號(hào) vim /etc/sysctl.conf #修改參數(shù) net.ipv4.ip_local_port_range = 1024 65000 #保存修改后,需要執(zhí)行sysctl命令讓修改生效 sysctl -p
注意:
1、net.ipv4.ip_local_port_range的最小值為1024,1024以下的端口已經(jīng)規(guī)劃為T(mén)CP協(xié)議占用,如果想將 TCP 協(xié)議端口設(shè)置為8080等大端口號(hào),可以將這里的最小值調(diào)大。
2、如果存在應(yīng)用服務(wù)端口號(hào)大于1024的,應(yīng)該將 net.ipv4.ip_local_port_range 的起始值修改為大于應(yīng)用服務(wù)端口號(hào),否則服務(wù)會(huì)報(bào)錯(cuò)。
kernel.shmmax=4294967295
該參數(shù)定義了共享內(nèi)存段的最大尺寸(以字節(jié)為單位)。
其值應(yīng)>=sag_max_size初始化參數(shù)的大小,否則SAG由多個(gè)內(nèi)存段構(gòu)成,效率降低,
還要不小于物理內(nèi)存的一半,默認(rèn)情況下在32位x86系統(tǒng)中,Oracle SGA最大不能超過(guò)1.7GB.
kernel.shmmni=4096
這個(gè)內(nèi)核參數(shù)用于設(shè)置系統(tǒng)范圍內(nèi)共享內(nèi)存段的最大數(shù)量。該參數(shù)的默認(rèn)值是 4096.
kernel.shmall = 2097152
該參數(shù)表示系統(tǒng)任意時(shí)刻可以分配的所有共享內(nèi)存段的總和的最大值(以頁(yè)為單位).
其值應(yīng)不小于shmmax/page_size.缺省值就是2097152,如果服務(wù)器上運(yùn)行的所有實(shí)例的
SGA總和不超過(guò)8GB(通常系統(tǒng)可分配的共享內(nèi)存的和最大值為8GB),通常不需要修改.
vm.swappiness=0
內(nèi)存分配策略,設(shè)置為0是告訴系統(tǒng)除非虛擬內(nèi)存完全滿(mǎn)了 否則不要使用交換區(qū)
風(fēng)險(xiǎn):
降低操作系統(tǒng)性能
在系統(tǒng)資源不足下,容易被OOM kill掉
2.提高資源限制上限
配置文件位于 /etc/security/limit.conf
* soft nofile 65535 * hard nofile 65535
* 對(duì)所有用戶(hù)有效
soft 當(dāng)前系統(tǒng)生效的設(shè)置
hard 系統(tǒng)所能設(shè)定的最大值
nofile 打開(kāi)文件的最大數(shù)目
65535 限制的數(shù)量
需要重啟系統(tǒng)生效
3.磁盤(pán)調(diào)度策略
參數(shù)路徑:/sys/block/devname/queue/scheduler
簡(jiǎn)介:
noop電梯式調(diào)度策略
實(shí)現(xiàn)了一個(gè)FIFO隊(duì)列 傾向餓死讀而利于寫(xiě) 對(duì)閃存設(shè)備 RAM和嵌入式系統(tǒng)是最好的選擇
deadline 截止時(shí)間調(diào)度策略
確保了在一個(gè)截止時(shí)間內(nèi)服務(wù)請(qǐng)求 這個(gè)截止時(shí)間是可調(diào)整的 而默認(rèn)讀期限短于寫(xiě)期限
對(duì)于數(shù)據(jù)庫(kù)類(lèi)應(yīng)用是最好的選擇
anticipatory 預(yù)料IO調(diào)度策略
本質(zhì)上和deadline一樣 但在最后一次讀操作后 要等待6ms 才能繼續(xù)進(jìn)行對(duì)其他IO請(qǐng)求進(jìn)行調(diào)度 將一些小寫(xiě)入流合并成一個(gè)大寫(xiě)入流 用寫(xiě)入延遲換取最大的寫(xiě)入吞吐量 適合寫(xiě)入較多的環(huán)境 比如文件服務(wù)器 對(duì)數(shù)據(jù)庫(kù)環(huán)境表現(xiàn)很差
cfq 絕對(duì)公平算法
內(nèi)核參數(shù)存儲(chǔ)路徑
文件/目錄 | 作用 |
---|---|
/proc/sys/abi/* | 用于提供對(duì)外部二進(jìn)制的支持,比如在類(lèi)UNIX系統(tǒng),SCO UnixWare 7、SCO OpenServer和SUN Solaris 2上編譯的軟件。默認(rèn)情況下是安裝的,也可以在安裝過(guò)程中移除。 |
/proc/sys/fs/* | 設(shè)置系統(tǒng)允許的打開(kāi)文件數(shù)和配額等。 |
/proc/sys/kernel/* | 可以啟用熱插拔、操作共享內(nèi)存、設(shè)置最大的PID文件數(shù)和syslog中的debug級(jí)別。 |
/proc/sys/net/* | 優(yōu)化網(wǎng)絡(luò),IPV4和IPV6 |
/proc/sys/vm/* | 管理緩存和緩沖 |
鏈接:https://www.cnblogs.com/lovesKey/p/11509683.html
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1362瀏覽量
40228 -
Linux
+關(guān)注
關(guān)注
87文章
11225瀏覽量
208911 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
2998瀏覽量
73881 -
參數(shù)
+關(guān)注
關(guān)注
11文章
1784瀏覽量
32086
原文標(biāo)題:linux 常用性能優(yōu)化
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論