1. 程式人生 > >配置 sysctl.conf 系統引數詳解

配置 sysctl.conf 系統引數詳解

配置 sysctl.conf 系統引數(vi /etc/sysctl.conf)
引數:
1.記憶體&快取
kernel.sysrq = 0 核心設定驗證為0
kernel.core_uses_pid = 1 控制核心的系統請求除錯功能開啟,控制核心轉儲附加PID到核心檔名,適用於多執行緒
kernel.msgmnb = 65536 每個訊息佇列的最大位元組限制
kernel.msgmax = 65536 每個訊息的最大size
kernel.shmmax = 68719476736定義了共享記憶體段的最大尺寸(以位元組為單位,預設值為2097152)
kernel.shmall = 4294967296 表示系統一次可以使用的共享記憶體總量(以頁為單位)。預設值就是2097152)
kernel.shmmni = 4096 設定系統範圍內共享記憶體段的最大數量,預設4096

2.訊號量相關:
kernel.sem = 50100 64128000 50100 1280
系統預設值,SA未優化

含義:

#ipcs -ls

------ Semaphore Limits --------

max number of arrays = 128

max semaphores per array = 250

max semaphores system wide = 32000

max ops per semop call = 32

semaphore max value = 32767

SEMMNI

SEMMNI定義了max number of arrays的大小,表示系統內的最大semaphore set大小,這個預設值128差不多了.

SEMMSL

SEMMSL 定義了max semaphores pre array的大小,表示每個semaphore set的最大semaphore數.oracle程序獲得系統的一個semaphore set,oracle程序內的每個執行緒需要一個semaphore,假如你的系統內只有一個oracle例項,你的SEMMSL的值需要等於或稍大於 (oracle中定義的最大PROCESSES數+10),如果是MTS模式,可以適當放小.

SEMMNS

SEMMNS定義 了max semaphores system wide的大小,表示系統內允許的最大semaphore set大小,系統預設大小為(SEMMNI*SEMMSL),oracle推薦的設定為系統內所有資料庫的PROCESSES引數的總和,加上最大的的那個PROCESSES,然後加上10.

SEMOPM

SEMOPM定義了每個semop系統呼叫能夠操作的最大semaphore數,semop系統呼叫主要是一個semaphore set的semaphore操作,這個值系統預設為32,建議設定等於SEMMSL.

另:
Httpd重啟失敗,訊號量過多,是因為我們關閉apache的時候使用了kill -9 來關閉程式來造成的,後續優化改進。

3.網橋設定,iptable不對網橋進行處理
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
4.視窗
net.core.rmem_default = 1048576 預設的接受視窗大小為1M
net.core.rmem_max = 4194304 接收視窗大小最大
net.core.wmem_default = 262144 預設的傳送視窗大小
net.core.wmem_max = 1048576 傳送視窗最大
5.網路
net.core.netdev_max_backlog = 10000
當網絡卡接受資料包的速度大於核心處理資料包的速度,會有一個佇列儲存這些資料包,這個引數表示這個佇列最大值

net.ipv4.conf.default.rp_filter = 1控制源路由驗證

net.ipv4.conf.default.accept_source_route = 0不接受源路由

net.ipv4.netfilter.ip_conntrack_max = 655360 允許最大跟蹤連線條目,是在核心記憶體中netfiter可以同時處理的任務(跟蹤連線條目),對於帶有超過1G的系統,CONNTRACK_MAX 的預設值會被限制在65536(可手動設定最大值)

net.ipv4.ip_forward = 0 控制IP包轉發
net.ipv4.ip_local_port_range = 9000 65000 檢視埠範圍,不要超過1024到65535,1024以下系統使用,65535以上會提示失敗

net.ipv4.tcp_tw_recycle = 1開啟TCP連線中TIME-WAIT sockets 的快速收回功能
net.ipv4.tcp_max_syn_backlog = 4096表示SYN佇列的長度,預設為1024 ,加大佇列的長度為4096,可以容納更多等待連線的網路連線數

net.ipv4.tcp_keepalive_intvl = 7 探索訊息傳送的頻率,乘以 tcp_keepalive_probes 就得到從開始探索以來沒有響應的連線殺除時間,預設為75秒,改小可以加速丟棄沒有活動的連線

net.ipv4.tcp_timestamps=1 啟動TCP時間戳

net.ipv4.tcp_keepalive_time = 72 當 keepalive 啟用的時候,TCP傳送 keepalive 訊息的頻率,預設是7200,也就是2小時
net.ipv4.tcp_keepalive_probes = 9 TCP 傳送keepalive探測已確定該連線已斷開的次數,在認定連線失效前,傳送多少個TCP的探測包。

net.ipv4.tcp_syncookies = 0關閉TCP SYNCOOKIES 的使用

net.ipv4.tcp_tw_reuse = 0表示開啟重用,允許將 TIME-WAIT sockets 重新用於新的tcp連線
net.ipv4.tcp_tw_recycle = 1開啟TCP連線中TIME-WAIT sockets 的快速收回功能
net.ipv4.tcp_fin_timeout = 30表示如何套接字由本端要求關閉,這個引數決定他保持在FIN-WAIT-2 狀態的時間

6.程序
fs.file-max = 76724600 程序可以同時開啟的做控制代碼數,直接限制了最大併發連線數,檔案控制代碼設定表示在Linux系統的可以開啟的檔案數量

fs.aio-max-nr = 1048576此引數限制併發未完成的非同步請求數目,應該設定避免I/O子系統故障

vm.overcommit_memory = 0記憶體分配策略,可選0 1 2
0,表示記憶體將檢查是否有足夠的可用記憶體供應用程序使用,如果有,允許申請,否則,記憶體申請失敗,將錯誤返回給應用程序
1,表示記憶體允許分配所有的實體記憶體,而不管當前的記憶體狀態如何
2,示記憶體允許分配所有的實體記憶體和交換空間所有的記憶體

vm.zone_reclaim_mode=1開啟當記憶體不夠用時就直接回收記憶體
vm.dirty_background_ratio = 10此引數指定了當檔案系統快取髒頁數量達到記憶體的百分之多少時,就會出發 pdflush/flush/kdmflush 等後臺回寫程序執行,將一定的髒頁非同步刷入記憶體,如果我虛擬伺服器記憶體為32G,也就是3.2G的資料,在完事之前可以設定在RAM中

vm.dirty_background_bytes = 1024000000優化核心程序刷髒頁閾值,儘量讓後臺程序刷髒頁
vm.dirty_ratio = 60 優化使用者程序刷髒頁閾值,髒頁超過60%才需要使用者刷
vm.dirty_bytes = 0 同上,如果設定了上面的引數,這個就要設定為0,反而
vm.dirty_writeback_centisecs = 500 優化老化髒頁重新整理喚醒間隔500表示5秒
vm.dirty_expire_centisecs = 3000優化老化髒頁閾值,30秒以前的髒頁將被刷到磁碟
vm.swappiness=0 關閉交換分割槽