目錄網絡
1 簡介oracle
2 經常使用參數 異步
2.1 /proc 文件系統與 sysctltcp
2.2 配置文件ide
2.3 經常使用內核參數工具
2.3.1 kernel:/proc/sys/kernel/優化
2.3.2 虛擬內存:/proc/sys/vm/spa
2.3.3 文件系統:/proc/sys/fs/日誌
2.3.4 網絡:/proc/sys/net/ipv4/blog
2.4 資源控制參數
3 方案舉例
3.1 Oracle 內核參數調優
3.2 Weblogic 網絡調優
4 常見故障處理
4.1 資源不可用
4.1.1 問題現象
4.1.2 緣由分析
4.1.3 解決方法
4.2 VFS: file-max limit xxxxxx reached
4.2.1 問題現象
4.2.2 緣由分析
4.2.3 解決方法
4.3 Too many open files
4.3.1 問題現
4.3.2 緣由分析
4.3.3 解決方法
簡介
本文介紹經常使用的系統優化方法以及與系統資源相關的問題處理。
經常使用參數
/proc 文件系統與 sysctl
1 /proc 文件系統是一個虛擬文件系統,經過它可使用一種新的方法在 Linux 內核空間和用戶空間之間進行通訊;sysctl 是一個實時調整內核參數的工具,它依賴於 /proc,經過操做 /proc/sys/ 目錄內的內容達到動態調整內核參數的目的。
2 sysctl 命令參數中的參數名稱與 /proc/sys/ 下的目錄結構相對應,例如:
sysctl 的 net.ipv4.conf.all.send_redirects 對應 /proc/sys/net/ipv4/conf/all/send_redirects
相應的調整方法也是對應的,例如:
sysctl -w net.ipv4.conf.all.send_redirects=0 等效 echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
配置文件
§ /etc/sysctl.conf,這是 sysctl 預加載的配置文件,語法以下:
#註釋
;註釋
參數 = 值
§ /etc/security/limits.conf,這是 pam_limits 模塊的配置文件,經過 pam_limits 模塊能夠控制用戶的系統資源分配,語法以下:
#用戶或者組 軟硬限制 資源的類型 限制資源的大小
<域> <類型> <資源> <值>
經常使用內核參數
kernel:/proc/sys/kernel/
參數 |
說明 |
pid_max |
最大的進程ID 號數值,若是達到此值,下個進程的ID 將從最小值開始 |
panic |
當kernel panic發生時,等待重啓的時間,單位爲秒,若是使用software watchdog,建議值爲60 |
shmall |
所有容許使用的共享內存大小,單位爲 bytes |
shmmax |
單個段容許使用的大小,單位爲 bytes |
shmmni |
系統的內存segment的總數 |
sysrq |
內核中斷值,0 爲禁用,1爲徹底啓用,大於1 爲部分啓用 |
pty/max |
最大僞終端數值 |
pty/nr |
目前已分配的僞終端值 |
虛擬內存:/proc/sys/vm/
參數 |
說明 |
nr_hugepages |
系統大內存頁最大限制數,關於大內存頁 |
文件系統:/proc/sys/fs/
參數 |
說明 |
aio-max-nr |
最大異步IO限制 |
aio-nr |
當前已調用異步IO值 |
file-max |
最大文件描句柄數限制 |
file-nr |
第一個數值表示內核已分配的文件句柄數,第二個數表示文件句柄已經分配可是目前沒被使用,第三個數值即file-max |
網絡:/proc/sys/net/ipv4/
參數 |
說明 |
icmp_echo_ignore_all |
屏蔽全部 icmp 消息,0 表示關閉, 1 表示打開 |
ip_forward |
ip 轉發,0 表示關閉,1 表示打開 |
tcp_keepalive_time |
tcp 保持鏈接的時間,單位爲秒,默認值是 7200 |
tcp_keepalive_probes |
探測tcp 鏈接是否存活的嘗試次數,默認值爲 9 |
tcp_keepalive_intvl |
每次探測tcp 鏈接是否存活的間隔時間,單位爲秒,默認值爲 75 |
tcp_max_syn_backlog |
未得到客戶端確認的tcp 鏈接請求,須要保存在隊列中最大數目 |
資源控制參數
資源類型 |
說明 |
core |
生成的 core 文件的大小限制,單位爲 KB |
data |
最大的 data 的大小,單位爲 KB |
fsize |
最大的文件大小,單位爲 KB |
memlock |
最大的鎖定內存地址空間,單位爲KB |
nofile |
最大文件打開數 |
rss |
max resident set size (KB) |
stack |
最大堆棧大小,單位爲 KB |
cpu |
最大CPU 時間,單位爲分鐘 |
nproc |
最大進程數 |
as |
地址空間限制 |
maxlogins |
此用戶的登陸次數限制 |
maxsyslogins |
此係統的登陸次數限制 |
priority |
用戶進程的優先級別 |
locks |
此用戶的最大文件鎖 |
sigpending |
最大等待信號量數 |
msgqueue |
POSIX 消息隊列所能使用的最大內存,單位爲 bytes |
nice |
最大的nice 值限制 |
rtprio |
最大實時優先級別 |
方案舉例
Oracle 內核參數調優
Weblogic 網絡調優
常見故障處理
資源不可用
問題現象
用戶執行su - root 時,提示」can not set user id:資源不可用「
緣由分析
這個錯誤是由於普通用戶不能再建立系統進程,即 fork() 調用失敗。
解決方法
1、能夠經過執行以下兩條命令,來查看殭屍進程:
# ps auxwwf |grep -i defunct
2、而若是發現有殭屍進程,須要考慮如下幾點:
2.1 條件容許的話,建議您直接重啓機器;
2.2 建議您檢查應用狀況,查看產生殭屍進程的緣由,才能從根本上解決問題;
2.3 最後,按照「步驟三」方法適當將limits.conf文件中的oracle兩個軟限制調大一些。
3、若是沒有發現殭屍進程,調整該普通用戶的系統資源限制:
3.1 打開 /etc/security/limits.conf,修改裏面以下內容:
user hard nproc 16384
user soft nproc 8191
其中的 user soft nproc 2047,nproc 是單個用戶可用的最大進程數。系統默認的軟限制是8091,您把這一項調大一些,最大爲不超過hard 行的值
3.2 從新登陸此用戶,執行 ulimit -u 驗證。
VFS: file-max limit xxxxxx reached
問題現象
在系統日誌中,能夠看到相似下面的信息:
kernel: VFS: file-max limit xxxxxx reached
緣由分析
系統中打開的文件數已經達到內核 fs.fs-max 的限制;
解決方法
1、打開 /etc/sysctl.conf,添加或修改 fs-max 值:
fs.file-max = 65535
2、修改完畢後,執行 sysctl -p 生效,執行以下命令驗證:
# cat /proc/sys/fs/file-max
Too many open files
問題現象
執行任何命令終端都報出:Too many open files 的錯誤;
緣由分析
文件打開數已經達到此用戶的最大限制;
解決方法
1、打開 /etc/security/limits.conf,添加或者修改以下內容:
user soft nofile 1024
user hard nofile 65536
修改 user soft nofile 1024 裏面的1024,此值不該超過 hard nofile 裏的值
2、從新登陸,執行 ulimit -n 驗證。