Linux性能調(diào)優(yōu)方法總結(jié)
磁盤子系統(tǒng)的調(diào)優(yōu)
磁盤在LAMP架構(gòu)中扮演著重要的角色,靜態(tài)文件、模板和代碼都來自磁盤,組成數(shù)據(jù)庫的數(shù)據(jù)表和索引也來自磁盤,對磁盤的許多調(diào)優(yōu)(尤其是對數(shù)據(jù)庫)集中于避免磁盤訪問,因為磁盤訪問的延遲相當高,因此,花一些時間對磁盤硬件進行優(yōu)化是有意義的。
?
首先要做的是,確保在文件系統(tǒng)上禁用atime日志記錄特性。atime是最近訪問文件的時間,每當訪問文件時,底層文件系統(tǒng)必須記錄這個時間戳,因為系統(tǒng)管理員很少使用atime,禁用它可以減少磁盤訪問時間。
?
禁用atime特性的方法是,在/etc/fstab的第四列中添加noatime選項。
??
有多種磁盤硬件組合,而且linux不一定能夠探測出訪問磁盤的最佳方式,可以使用hdparm命令查明和設置用來訪問IDE磁盤的方法。
?
hdparm -t /path/to/device執(zhí)行速度測試,可以將這個測試結(jié)果作為性能基準。為了使得結(jié)果盡可能準確,在運行這個命令時系統(tǒng)應該是空閑的。
?
例如在/dev/hd上執(zhí)行的速度測試:
hdparm的常用選項:?
-vi 向磁盤查詢它支持的設置以及它正在使用的設置
-c 查詢/啟用(E)IDE 32位I/O支持。hdparm -c 1 /dev/hda啟用這個設置
-m 查詢/設置每中斷多扇區(qū)模式。如果設置大于0,設置值就是每個中斷可以傳輸?shù)淖畲笊葏^(qū)數(shù)量
-d 1 -X 啟用直接內(nèi)存訪問(DMA)傳輸并設置IDE傳輸模式。
必須將有幫助的設置添加到啟動腳本中,比如rc.local
?
文件子系統(tǒng)的調(diào)優(yōu)
ulimit -a用來顯示當前的各種用戶進程限制。
Linux對于每個用戶,系統(tǒng)限制其最大進程數(shù),為提高性能,可以根據(jù)設備資源情況,設置各個linux用戶的最大進程數(shù),下面我把某linux用戶的最大進程數(shù)設為10000個:
?
ulimit -u 10000
對于需要做許多socket連接并使它們處于打開狀態(tài)的Java應用程序而言,最好通過使用ulimit -n xx修改每個進程可打開的文件數(shù),缺省值是1024.ulimit -n 4096將每個進程可以打開的文件數(shù)目加大到4096,缺省為1024。
?
其他建議設置為無限制(unlimited)的一些重要設置是:
?
數(shù)據(jù)段長度: ulimit -d unlimited
最大內(nèi)存大小: ulimit -m unlimited
堆棧大小: ulimit -s unlimited
CPU時間: ulimit -t unlimited
虛擬內(nèi)存: ulimit -v unlimited
以上命令只是暫時地,適用于通過ulimit命令登錄shell會話期間。
?
永久地,通過將一個相應的ulimit語句添加到由登錄shell讀取的文件中,即特定于shell的用戶資源文件,如:
?
解除Linux系統(tǒng)的最大進程數(shù)和最大文件打開數(shù)限制
?
vi /etc/security/limits.conf
?
# 添加如下的行?
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100
說明:
?
*代表針對所有用戶
noproc代表最大進程數(shù)
nofile 達標最大文件打開數(shù)
讓SSH接受Login程式的登入,方便在ssh客戶端查看ulimit -a資源限制
?
vi /etc/ssh/sshd_config
# 把 UserLogin的值改為yes,并把#注釋去掉
?
# 重啟sshd服務:
/etc/init.d/sshd restart
修改所有l(wèi)inux用戶的環(huán)境變量文件
?
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
有時候在程序里面需要打開多個文件,進行分析,系統(tǒng)一般默認數(shù)量是1024,對于正常使用時夠了,但是對于程序來講,就太少了,需要修改2個文件:
?
修改/etc/security/limits.conf
?
vi /etc/security/limits.conf
?
加上:
* soft nofile 8192
* hard nofile 20480
修改/etc/pam.d/login
session required /lib/security/pam_limits.so
另外,確保/etc/pam.d/system-auth文件有下面內(nèi)容
session required /lib/security/$ISA/pam_limits.so
這一行確保系統(tǒng)會執(zhí)行這個限制。
一般用戶的 .bash_profile
ulimit -n 1024
重新登錄OK。