一 linux服務(wù)器性能查看
1.1 cpu性能查看
1、查看物理cpu個(gè)數(shù):
cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
2、查看每個(gè)物理cpu中的core個(gè)數(shù):
cat /proc/cpuinfo |grep "cpu cores"|wc -l
3、邏輯cpu的個(gè)數(shù):
cat /proc/cpuinfo |grep "processor"|wc -l
物理cpu個(gè)數(shù)*核數(shù)=邏輯cpu個(gè)數(shù)(不支持超線程技術(shù)的情況下)
1.2 內(nèi)存查看
1、查看內(nèi)存使用情況:
#free -m total used free shared buffers cached Mem: 3949 2519 1430 0 189 1619 -/+ buffers/cache: 710 3239 Swap: 3576 0 3576 total:內(nèi)存總數(shù) used:已經(jīng)使用的內(nèi)存數(shù) free:空閑內(nèi)存數(shù) shared:多個(gè)進(jìn)程共享的內(nèi)存總額 - buffers/cache:(已用)的內(nèi)存數(shù),即used-buffers-cached + buffers/cache:(可用)的內(nèi)存數(shù),即free+buffers+cached Buffer Cache用于針對(duì)磁盤塊的讀寫; Page Cache用于針對(duì)文件inode的讀寫,這些Cache能有效地縮短I/O系統(tǒng)調(diào)用的時(shí)間。 對(duì)操作系統(tǒng)來說free/used是系統(tǒng)可用/占用的內(nèi)存; 對(duì)應(yīng)用程序來說-/+ buffers/cache是可用/占用內(nèi)存,因?yàn)閎uffers/cache很快就會(huì)被使用。
我們工作時(shí)候應(yīng)該從應(yīng)用角度來看。
1.3 硬盤查看
1、查看硬盤及分區(qū)信息:
fdisk -l
2、查看文件系統(tǒng)的磁盤空間占用情況:
df -h
3、查看硬盤的I/O性能(每隔一秒顯示一次,顯示5次):
IOStat -x 1 5
iostat是含在套裝systat中的,可以用yum -y install systat來安裝。
常關(guān)注的參數(shù):
如%util接近100%,說明產(chǎn)生的I/O請(qǐng)求太多,I/O系統(tǒng)已經(jīng)滿負(fù)荷,該磁盤可能存在瓶頸。 如idle小于70%,I/O的壓力就比較大了,說明讀取進(jìn)程中有較多的wait。
4、查看linux系統(tǒng)中某目錄的大?。?/strong>
du -sh /root
如發(fā)現(xiàn)某個(gè)分區(qū)空間接近用完,可以進(jìn)入該分區(qū)的掛載點(diǎn),用以下命令找出占用空間最多的文件或目錄,然后按照從大到小的順序,找出系統(tǒng)中占用最多空間的前10個(gè)文件或目錄:
du -cksh *|sort -rn|head -n 10
1.4 查看平均負(fù)載
有時(shí)候系統(tǒng)響應(yīng)很慢,但又找不到原因,這時(shí)就要查看平均負(fù)載了,看它是否有大量的進(jìn)程在排隊(duì)等待。
最簡(jiǎn)單的命令:
uptime--查看過去的1分鐘、5分鐘和15分鐘內(nèi)進(jìn)程隊(duì)列中的平均進(jìn)程數(shù)量。
還有動(dòng)態(tài)命令top
我們只關(guān)心以下部分:
top - 21:33:09 up 1:00, 1 user, load average: 0.00, 0.01, 0.05 如果每個(gè)邏輯cpu當(dāng)前的活動(dòng)進(jìn)程不大于3,則系統(tǒng)性能良好; 如果每個(gè)邏輯cpu當(dāng)前的活動(dòng)進(jìn)程不大于4,表示可以接受; 如果每個(gè)邏輯cpu當(dāng)前的活動(dòng)進(jìn)程大于5,則系統(tǒng)性能問題嚴(yán)重。
一般計(jì)算方法:負(fù)載值/邏輯cpu個(gè)數(shù)
還可以結(jié)合vmstat命令來判斷系統(tǒng)是否繁忙,其中:
procs r:等待運(yùn)行的進(jìn)程數(shù)。 b:處在非中斷睡眠狀態(tài)的進(jìn)程數(shù)。 w:被交換出去的可運(yùn)行的進(jìn)程數(shù)。 memeory swpd:虛擬內(nèi)存使用情況,單位為KB。 free:空閑的內(nèi)存,單位為KB。 buff:被用來作為緩存的內(nèi)存數(shù),單位為KB。 swap si:從磁盤交換到內(nèi)存的交換頁(yè)數(shù)量,單位為KB。 so:從內(nèi)存交換到磁盤的交換頁(yè)數(shù)量,單位為KB。 io bi:發(fā)送到塊設(shè)備的塊數(shù),單位為KB。 bo:從塊設(shè)備接受的塊數(shù),單位為KB。 system in:每秒的中斷數(shù),包括時(shí)鐘中斷。 cs:每秒的環(huán)境切換次數(shù)。 cpu 按cpu的總使用百分比來顯示。 us:cpu使用時(shí)間。 sy:cpu系統(tǒng)使用時(shí)間。 id:閑置時(shí)間。
1.5 其他參數(shù)
查看內(nèi)核版本號(hào): uname -a 簡(jiǎn)化命令:uname -r 查看系統(tǒng)是32位還是64位的: file /sbin/init 查看發(fā)行版: cat /etc/issue 或lsb_release -a 查看系統(tǒng)已載入的相關(guān)模塊: lsmod 查看pci設(shè)置: lspci
二 Linux服務(wù)器性能評(píng)估
2.1.1 影響Linux服務(wù)器性能的因素
1. 操作系統(tǒng)級(jí)
CPU 內(nèi)存 磁盤I/O帶寬 網(wǎng)絡(luò)I/O帶寬
2. 程序應(yīng)用級(jí)
2.1.2 系統(tǒng)性能評(píng)估標(biāo)準(zhǔn)
影響性能因素 好 壞 糟糕 CPU user% + sys%< 70% user% + sys%= 85% user% + sys% >=90% 內(nèi)存 Swap In(si)=0 Swap Out(so)=0 Per CPU with 10 page/s More Swap In & Swap Out 磁盤 iowait % < 20% iowait % =35% iowait % >= 50%
其中:
%user:表示CPU處在用戶模式下的時(shí)間百分比。 %sys:表示CPU處在系統(tǒng)模式下的時(shí)間百分比。 %iowait:表示CPU等待輸入輸出完成時(shí)間的百分比。 swap in:即si,表示虛擬內(nèi)存的頁(yè)導(dǎo)入,即從SWAP DISK交換到RAM swap out:即so,表示虛擬內(nèi)存的頁(yè)導(dǎo)出,即從RAM交換到SWAP DISK
2.1.3 系統(tǒng)性能分析工具
1.常用系統(tǒng)命令
Vmstat、sar、iostat、netstat、free、ps、top等
2.常用組合方式
vmstat、sar、iostat檢測(cè)是否是CPU瓶頸 free、vmstat檢測(cè)是否是內(nèi)存瓶頸 iostat檢測(cè)是否是磁盤I/O瓶頸 netstat檢測(cè)是否是網(wǎng)絡(luò)帶寬瓶頸
2.1.4 Linux性能評(píng)估與優(yōu)化
系統(tǒng)整體性能評(píng)估(uptime命令)
uptime
16:38:00 up 118 days, 3:01, 5 users,load average: 1.22, 1.02, 0.91
注意:
- load average三值大小一般不能大于系統(tǒng)CPU的個(gè)數(shù)。
系統(tǒng)有8個(gè)CPU,如load average三值長(zhǎng)期大于8,說明CPU很繁忙,負(fù)載很高,可能會(huì)影響系統(tǒng)性能。
- 但偶爾大于8,一般不會(huì)影響系統(tǒng)性能。
- 如load average輸出值小于CPU個(gè)數(shù),則表示CPU有空閑時(shí)間片,比如本例中的輸出,CPU是非??臻e的
2.2.1 CPU性能評(píng)估
1.利用vmstat命令監(jiān)控系統(tǒng)CPU
顯示系統(tǒng)各種資源之間相關(guān)性能簡(jiǎn)要信息,主要看CPU負(fù)載情況。
下面是vmstat命令在某個(gè)系統(tǒng)的輸出結(jié)果:
[root@node1 ~]#vmstat 2 3 procs ———–memory———- —swap– —–io—- –system– —–cpu—— r b swpd freebuff cache si so bi bo incs us sy idwa st 0 0 0 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0 0 0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0 0 0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0 Procs
r--運(yùn)行和等待cpu時(shí)間片的進(jìn)程數(shù),這個(gè)值如果長(zhǎng)期大于系統(tǒng)CPU的個(gè)數(shù),說明CPU不足,需要增加CPU
b--在等待資源的進(jìn)程數(shù),比如正在等待I/O、或者內(nèi)存交換等。
CPU
us
用戶進(jìn)程消耗的CPU 時(shí)間百分比。
us的值比較高時(shí),說明用戶進(jìn)程消耗的cpu時(shí)間多,但是如果長(zhǎng)期大于50%,就需要考慮優(yōu)化程序或算法。
sy
內(nèi)核進(jìn)程消耗的CPU時(shí)間百分比。Sy的值較高時(shí),說明內(nèi)核消耗的CPU資源很多。
根據(jù)經(jīng)驗(yàn),us+sy的參考值為80%,如果us+sy大于 80%說明可能存在CPU資源不足。
2.利用sar命令監(jiān)控系統(tǒng)CPU
sar對(duì)系統(tǒng)每方面進(jìn)行單獨(dú)統(tǒng)計(jì),但會(huì)增加系統(tǒng)開銷,不過開銷可以評(píng)估,對(duì)系統(tǒng)的統(tǒng)計(jì)結(jié)果不會(huì)有很大影響。
下面是sar命令對(duì)某個(gè)系統(tǒng)的CPU統(tǒng)計(jì)輸出:
[root@webserver ~]# sar -u 3 5 Linux 2.6.9-42.ELsmp (webserver) 11/28/2008_i686_ (8 CPU) 11:41:24 AM CPU %user %nice%system %iowait %steal %idle 11:41:27 AM all 0.88 0.00 0.29 0.00 0.00 98.83 11:41:30 AM all 0.13 0.00 0.17 0.21 0.00 99.50 11:41:33 AM all 0.04 0.00 0.04 0.00 0.00 99.92 11:41:36 AM all 90.08 0.00 0.13 0.16 0.00 9.63 11:41:39 AM all 0.38 0.00 0.17 0.04 0.00 99.41 Average: all 0.34 0.00 0.16 0.05 0.00 99.45
輸出解釋如下:
%user列顯示了用戶進(jìn)程消耗的CPU 時(shí)間百分比。 %nice列顯示了運(yùn)行正常進(jìn)程所消耗的CPU 時(shí)間百分比。 %system列顯示了系統(tǒng)進(jìn)程消耗的CPU時(shí)間百分比。 %iowait列顯示了IO等待所占用的CPU時(shí)間百分比 %steal列顯示了在內(nèi)存相對(duì)緊張的環(huán)境下pagein強(qiáng)制對(duì)不同的頁(yè)面進(jìn)行的steal操作 。 %idle列顯示了CPU處在空閑狀態(tài)的時(shí)間百分比。 問題
你是否遇到過系統(tǒng)CPU整體利用率不高,而應(yīng)用緩慢的現(xiàn)象?
在一個(gè)多CPU的系統(tǒng)中,如果程序使用了單線程,會(huì)出現(xiàn)這么一個(gè)現(xiàn)象,CPU的整體使用率不高,但是系統(tǒng)應(yīng)用卻響應(yīng)緩慢,這可能是由于程序使用單線程的原因,單線程只使用一個(gè)CPU,導(dǎo)致這個(gè)CPU占用率為100%,無法處理其它請(qǐng)求,而其它的CPU卻閑置,這就導(dǎo)致了整體CPU使用率不高,而應(yīng)用緩慢現(xiàn)象的發(fā)生。
2.3.1 內(nèi)存性能評(píng)估
1.利用free指令監(jiān)控內(nèi)存
free是監(jiān)控Linux內(nèi)存使用狀況最常用的指令,看下面的一個(gè)輸出:
[root@webserver ~]# free -m total used freeshared buffers cached Mem: 8111 7185 926 0 243 6299 -/+ buffers/cache: 643 7468 Swap: 8189 0 8189
經(jīng)驗(yàn)公式:
應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存>70%,表示系統(tǒng)內(nèi)存資源非常充足,不影響系統(tǒng)性能;應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存<20%,表示系統(tǒng)內(nèi)存資源緊缺,需要增加系統(tǒng)內(nèi)存;20%<應(yīng)用程序可用內(nèi)存/系統(tǒng)物理內(nèi)存<70%,表示系統(tǒng)內(nèi)存資源基本能滿足應(yīng)用需求,暫時(shí)不影響系統(tǒng)性能
2.利用vmstat命令監(jiān)控內(nèi)存
[root@node1 ~]# vmstat 2 3 procs ———–memory———- —swap– —–io—- –system– —–cpu—— r b swpd freebuff cache si so bi bo incs us sy idwa st 0 0 0 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0 0 0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0 0 0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0
memory
swpd--切換到內(nèi)存交換區(qū)的內(nèi)存數(shù)量(k為單位)。如swpd值偶爾非0,不影響系統(tǒng)性能 free--當(dāng)前空閑的物理內(nèi)存數(shù)量(k為單位) buff--buffers cache的內(nèi)存數(shù)量,一般對(duì)塊設(shè)備的讀寫才需要緩沖 cache--page cached的內(nèi)存數(shù)量
一般作為文件系統(tǒng)cached,頻繁訪問的文件都會(huì)被cached,如cache值較大,說明cached的文件數(shù)較多,如果此時(shí)IO中bi比較小,說明文件系統(tǒng)效率比較好。
swap
si--由磁盤調(diào)入內(nèi)存,也就是內(nèi)存進(jìn)入內(nèi)存交換區(qū)的數(shù)量。 so--由內(nèi)存調(diào)入磁盤,也就是內(nèi)存交換區(qū)進(jìn)入內(nèi)存的數(shù)量。
si、so的值長(zhǎng)期不為0,表示系統(tǒng)內(nèi)存不足。需增加系統(tǒng)內(nèi)存。
2.4.1磁盤I/O性能評(píng)估
1.磁盤存儲(chǔ)基礎(chǔ)
頻繁訪問的文件或數(shù)據(jù)盡可能用內(nèi)存讀寫代替直接磁盤I/O,效率高千倍。
將經(jīng)常進(jìn)行讀寫的文件與長(zhǎng)期不變的文件獨(dú)立出來,分別放置到不同的磁盤設(shè)備上。
對(duì)于寫操作頻繁的數(shù)據(jù),可以考慮使用裸設(shè)備代替文件系統(tǒng)。
裸設(shè)備優(yōu)點(diǎn):
數(shù)據(jù)可直接讀寫,不需經(jīng)過操作系統(tǒng)級(jí)緩存,節(jié)省內(nèi)存資源,避免內(nèi)存資源爭(zhēng)用; 避免文件系統(tǒng)級(jí)維護(hù)開銷,如文件系統(tǒng)需維護(hù)超級(jí)塊、I-node等; 避免了操作系統(tǒng)cache預(yù)讀功能,減少了I/O請(qǐng)求
使用裸設(shè)備的缺點(diǎn)是:
數(shù)據(jù)管理、空間管理不靈活,需要很專業(yè)的人來操作。
2.利用iostat評(píng)估磁盤性能
[root@webserver ~]# iostat -d 2 3 Linux 2.6.9-42.ELsmp (webserver) 12/01/2008_i686_ (8 CPU) Device: tps Blk_read/sBlk_wrtn/sBlk_read Blk_wrtn sda 1.87 2.58 114.12 6479462 286537372 Device: tps Blk_read/sBlk_wrtn/sBlk_read Blk_wrtn sda 0.00 0.00 0.00 0 0 Device: tps Blk_read/sBlk_wrtn/sBlk_read Blk_wrtn sda 1.00 0.00 12.00 0 24
解釋如下:
Blk_read/s--每秒讀取數(shù)據(jù)塊數(shù) Blk_wrtn/s--每秒寫入數(shù)據(jù)塊數(shù) Blk_read--讀取的所有塊數(shù) Blk_wrtn--寫入的所有塊數(shù)
可通過Blk_read/s和Blk_wrtn/s值對(duì)磁盤的讀寫性能有一個(gè)基本的了解.
如Blk_wrtn/s值很大,表示磁盤寫操作頻繁,考慮優(yōu)化磁盤或程序,
如Blk_read/s值很大,表示磁盤直接讀操作很多,可將讀取的數(shù)據(jù)放入內(nèi)存
規(guī)則遵循:
長(zhǎng)期的、超大的數(shù)據(jù)讀寫,肯定是不正常的,這種情況一定會(huì)影響系統(tǒng)性能。
3.利用sar評(píng)估磁盤性能
通過“sar –d”組合,可以對(duì)系統(tǒng)的磁盤IO做一個(gè)基本的統(tǒng)計(jì),請(qǐng)看下面的一個(gè)輸出:
[root@webserver ~]# sar -d 2 3 Linux 2.6.9-42.ELsmp (webserver) 11/30/2008_i686_ (8 CPU) 11:09:33 PM DEV tps rd_sec/swr_sec/savgrq-sz avgqu-sz await svctm %util 11:09:35 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11:09:35 PM DEV tps rd_sec/swr_sec/savgrq-sz avgqu-sz await svctm %util 11:09:37 PM dev8-0 1.00 0.00 12.00 12.00 0.00 0.00 0.00 0.00 11:09:37 PM DEV tps rd_sec/swr_sec/savgrq-sz avgqu-sz await svctm %util 11:09:39 PM dev8-0 1.99 0.00 47.76 24.00 0.00 0.50 0.25 0.05 Average: DEV tps rd_sec/swr_sec/savgrq-sz avgqu-sz await svctm %util Average: dev8-0 1.00 0.00 19.97 20.00 0.00 0.33 0.17 0.02
參數(shù)含義:
await--平均每次設(shè)備I/O操作等待時(shí)間(毫秒) svctm--平均每次設(shè)備I/O操作的服務(wù)時(shí)間(毫秒) %util--一秒中有百分之幾的時(shí)間用于I/O操作
對(duì)磁盤IO性能評(píng)判標(biāo)準(zhǔn):
正常svctm應(yīng)小于await值,而svctm和磁盤性能有關(guān),CPU、內(nèi)存負(fù)荷也會(huì)對(duì)svctm值造成影響,過多的請(qǐng)求也會(huì)間接的導(dǎo)致svctm值的增加。
await值取決svctm和I/O隊(duì)列長(zhǎng)度以及I/O請(qǐng)求模式, 如果svctm的值與await很接近,表示幾乎沒有I/O等待,磁盤性能很好, 如果await的值遠(yuǎn)高于svctm的值,則表示I/O隊(duì)列等待太長(zhǎng),系統(tǒng)上運(yùn)行的應(yīng)用程序?qū)⒆兟?此時(shí)可以通過更換更快的硬盤來解決問題。
%util--衡量磁盤I/O重要指標(biāo),
如%util接近100%,表示磁盤產(chǎn)生的I/O請(qǐng)求太多,I/O系統(tǒng)已經(jīng)滿負(fù)荷工作,該磁盤可能存在瓶頸。
可優(yōu)化程序或者 通過更換 更高、更快的磁盤。
2.5.1. 網(wǎng)絡(luò)性能評(píng)估
(1)通過ping命令檢測(cè)網(wǎng)絡(luò)的連通性 (2)通過netstat –i組合檢測(cè)網(wǎng)絡(luò)接口狀況 (3)通過netstat –r組合檢測(cè)系統(tǒng)的路由表信息 (4)通過sar –n組合顯示系統(tǒng)的網(wǎng)絡(luò)運(yùn)行狀態(tài)
三 Linux服務(wù)器性能調(diào)優(yōu)
1.為磁盤I/O調(diào)整Linux內(nèi)核電梯算法
選擇文件系統(tǒng)后,該算法可以平衡低延遲需求,收集足夠數(shù)據(jù),有效組織對(duì)磁盤讀寫請(qǐng)求。
2.禁用不必要的守護(hù)進(jìn)程,節(jié)省內(nèi)存和CPU資源
許多守護(hù)進(jìn)程或服務(wù)通常非必需,消耗寶貴內(nèi)存和CPU時(shí)間。將服務(wù)器置于險(xiǎn)地。 禁用可加快啟動(dòng)時(shí)間,釋放內(nèi)存。 減少CPU要處理的進(jìn)程數(shù)
一些應(yīng)被禁用的Linux守護(hù)進(jìn)程,默認(rèn)自動(dòng)運(yùn)行:
序號(hào) 守護(hù)進(jìn)程 描述
1 Apmd 高級(jí)電源管理守護(hù)進(jìn)程
2 Nfslock 用于NFS文件鎖定
3 Isdn ISDN Moderm支持
4 Autofs 在后臺(tái)自動(dòng)掛載文件系統(tǒng)(如自動(dòng)掛載CD-ROM)
5 Sendmail 郵件傳輸代理
6 Xfs X Window的字體服務(wù)器
3.關(guān)掉GUI
4、清理不需要的模塊或功能
服務(wù)器軟件包中太多被啟動(dòng)的功能或模塊實(shí)際上是不需要的(如Apache中的許多功能模塊),禁用掉有助于提高系統(tǒng)內(nèi)存可用量,騰出資源給那些真正需要的軟件,讓它們運(yùn)行得更快。
5、禁用控制面板
在Linux中,有許多流行的控制面板,如Cpanel,Plesk,Webmin和phpMyAdmin等,禁用釋放出大約120MB內(nèi)存,內(nèi)存使用量大約下降30-40%。
6、改善Linux Exim服務(wù)器性能
使用DNS緩存守護(hù)進(jìn)程,可降低解析DNS記錄需要的帶寬和CPU時(shí)間,DNS緩存通過消除每次都從根節(jié)點(diǎn)開始查找DNS記錄的需求,從而改善網(wǎng)絡(luò)性能。
Djbdns是一個(gè)非常強(qiáng)大的DNS服務(wù)器,它具有DNS緩存功能,Djbdns比BIND DNS服務(wù)器更安全,性能更好,可以直接通過http://cr.yp.to/下載,或通過Red Hat提供的軟件包獲得。
7、使用AES256增強(qiáng)gpg文件加密安全
為提高備份文件或敏感信息安全,許多Linux系統(tǒng)管理員都使用gpg進(jìn)行加密,在使用gpg時(shí),最好指定gpg使用AES256加密算法,AES256使用256位密鑰,它是一個(gè)開放的加密算法,美國(guó)國(guó)家安全局(NSA)使用它保護(hù)絕密信息。
8、遠(yuǎn)程備份服務(wù)安全
安全是選擇遠(yuǎn)程備份服務(wù)最重要的因素,大多數(shù)系統(tǒng)管理員都害怕兩件事:(黑客)可以刪除備份文件,不能從備份恢復(fù)系統(tǒng)。
為了保證備份文件100%的安全,備份服務(wù)公司提供遠(yuǎn)程備份服務(wù)器,使用scp腳本或RSYNC通過SSH傳輸數(shù)據(jù),這樣,沒有人可以直接進(jìn)入和訪問遠(yuǎn)程系統(tǒng),因此,也沒有人可以從備份服務(wù)刪除數(shù)據(jù)。在選擇遠(yuǎn)程備份服務(wù)提供商時(shí),最好從多個(gè)方面了解其服務(wù)強(qiáng)壯性,如果可以,可以親自測(cè)試一下。
9、更新默認(rèn)內(nèi)核參數(shù)設(shè)置
為了順利和成功運(yùn)行企業(yè)應(yīng)用程序,如數(shù)據(jù)庫(kù)服務(wù)器,可能需要更新一些默認(rèn)的內(nèi)核參數(shù)設(shè)置,例如,2.4.x系列內(nèi)核消息隊(duì)列參數(shù)msgmni有一個(gè)默認(rèn)值(例如,共享內(nèi)存,或shmmax在Red Hat系統(tǒng)上默認(rèn)只有33554432字節(jié)),它只允許有限的數(shù)據(jù)庫(kù)并發(fā)連接,下面為數(shù)據(jù)庫(kù)服務(wù)器更好地運(yùn)行提供了一些建議值(來自IBM DB2支持網(wǎng)站):
kernel.shmmax=268435456 (32位)
kernel.shmmax=1073741824 (64位)
kernel.msgmni=1024
fs.file-max=8192
kernel.sem=”250 32000 32 1024″
10、優(yōu)化TCP
優(yōu)化TCP協(xié)議有助于提高網(wǎng)絡(luò)吞吐量,跨廣域網(wǎng)的通信使用的帶寬越大,延遲時(shí)間越長(zhǎng)時(shí),建議使用越大的TCP Linux大小,以提高數(shù)據(jù)傳輸速率,TCP Linux大小決定了發(fā)送主機(jī)在沒有收到數(shù)據(jù)傳輸確認(rèn)時(shí),可以向接收主機(jī)發(fā)送多少數(shù)據(jù)。
11、選擇正確的文件系統(tǒng)
使用ext4文件系統(tǒng)取代ext3
● Ext4是ext3文件系統(tǒng)的增強(qiáng)版,擴(kuò)展了存儲(chǔ)限制
●具有日志功能,保證高水平的數(shù)據(jù)完整性(在非正常關(guān)閉事件中)
●非正常關(guān)閉和重啟時(shí),它不需要檢查磁盤(這是一個(gè)非常耗時(shí)的動(dòng)作)
●更快的寫入速度,ext4日志優(yōu)化了硬盤磁頭動(dòng)作
12、使用noatime文件系統(tǒng)掛載選項(xiàng)
在文件系統(tǒng)啟動(dòng)配置文件fstab中使用noatime選項(xiàng),如果使用了外部存儲(chǔ),這個(gè)掛載選項(xiàng)可以有效改善性能。
13、調(diào)整Linux文件描述符限制
Linux限制了任何進(jìn)程可以打開的文件描述符數(shù)量,默認(rèn)限制是每進(jìn)程1024,這些限制可能會(huì)阻礙基準(zhǔn)測(cè)試客戶端(如httperf和apachebench)和Web服務(wù)器本身獲得最佳性能,Apache每個(gè)連接使用一個(gè)進(jìn)程,因此不會(huì)受到影響,但單進(jìn)程Web服務(wù)器,如Zeus是每連接使用一個(gè)文件描述符,因此很容易受默認(rèn)限制的影響。
打開文件限制是一個(gè)可以用ulimit命令調(diào)整的限制,ulimit -aS命令顯示當(dāng)前的限制,ulimit -aH命令顯示硬限制(在未調(diào)整/proc中的內(nèi)核參數(shù)前,你不能增加限制)。
Linux第三方應(yīng)用程序性能技巧
對(duì)于運(yùn)行在Linux上的第三方應(yīng)用程序,一樣有許多性能優(yōu)化技巧,這些技巧可以幫助你提高Linux服務(wù)器的性能,降低運(yùn)行成本。
14、正確配置MySQL
為了給MySQL分配更多的內(nèi)存,可設(shè)置MySQL緩存大小,要是MySQL服務(wù)器實(shí)例使用了更多內(nèi)存,就減少緩存大小,如果MySQL在請(qǐng)求增多時(shí)停滯不動(dòng),就增加MySQL緩存。
15、正確配置Apache
檢查Apache使用了多少內(nèi)存,再調(diào)整StartServers和MinSpareServers參數(shù),以釋放更多的內(nèi)存,將有助于你節(jié)省30-40%的內(nèi)存。
16、分析Linux服務(wù)器性能
提高系統(tǒng)效率最好的辦法是找出導(dǎo)致整體速度下降的瓶頸并解決掉,下面是找出系統(tǒng)關(guān)鍵瓶頸的一些基本技巧:
● 當(dāng)大型應(yīng)用程序,如Openoffice和Firefox同時(shí)運(yùn)行時(shí),計(jì)算機(jī)可能會(huì)開始變慢,內(nèi)存不足的出現(xiàn)幾率更高。
● 如果啟動(dòng)時(shí)真的很慢,可能是應(yīng)用程序初次啟動(dòng)需要較長(zhǎng)的加載時(shí)間,一旦啟動(dòng)好后運(yùn)行就正常了,否則很可能是硬盤太慢了。
●CPU負(fù)載持續(xù)很高,內(nèi)存也夠用,但CPU利用率很低,可以使用CPU負(fù)載分析工具監(jiān)控負(fù)載時(shí)間。
17、學(xué)習(xí)5個(gè)Linux性能命令
使用幾個(gè)命令就可以管理Linux系統(tǒng)的性能了,下面列出了5個(gè)最常用的Linux性能命令,包括
top、vmstat、iostat、free和sar,它們有助于系統(tǒng)管理員快速解決性能問題。
(1)top
當(dāng)前內(nèi)核服務(wù)的任務(wù),還顯示許多主機(jī)狀態(tài)的統(tǒng)計(jì)數(shù)據(jù),默認(rèn)情況下,它每隔5秒自動(dòng)更新一次。
如:當(dāng)前正常運(yùn)行時(shí)間,系統(tǒng)負(fù)載,進(jìn)程數(shù)量和內(nèi)存使用率,
此外,這個(gè)命令也顯示了那些使用最多CPU時(shí)間的進(jìn)程(包括每個(gè)進(jìn)程的各種信息,如運(yùn)行用戶,執(zhí)行的命令等)。
(2)vmstat
Vmstat命令提供當(dāng)前CPU、IO、進(jìn)程和內(nèi)存使用率的快照,它和top命令類似,自動(dòng)更新數(shù)據(jù),如:
$ vmstat 10
(3)iostat
Iostat提供三個(gè)報(bào)告:CPU利用率、設(shè)備利用率和網(wǎng)絡(luò)文件系統(tǒng)利用率,使用-c,-d和-h參數(shù)可以分別獨(dú)立顯示這三個(gè)報(bào)告。
(4)free
顯示主內(nèi)存和交換空間內(nèi)存統(tǒng)計(jì)數(shù)據(jù),指定-t參數(shù)顯示總內(nèi)存,指定-b參數(shù)按字節(jié)為單位,使用-m則以兆為單位,默認(rèn)情況下千字節(jié)為單位。
Free命令也可以使用-s參數(shù)加一個(gè)延遲時(shí)間(單位:秒)連續(xù)運(yùn)行,如:
$ free -s 5
(5)sar
收集,查看和記錄性能數(shù)據(jù),這個(gè)命令比前面幾個(gè)命令歷史更悠久,它可以收集和顯示較長(zhǎng)周期的數(shù)據(jù)。
其它
下面是一些歸類為其它的性能技巧:
18、將日志文件轉(zhuǎn)移到內(nèi)存中
當(dāng)一臺(tái)機(jī)器處于運(yùn)行中時(shí),最好是將系統(tǒng)日志放在內(nèi)存中,當(dāng)系統(tǒng)關(guān)閉時(shí)再將其復(fù)制到硬盤,當(dāng)你運(yùn)行一臺(tái)開啟了syslog功能的筆記本電腦或移動(dòng)設(shè)備時(shí),ramlog可以幫助你提高系統(tǒng)電池或移動(dòng)設(shè)備閃存驅(qū)動(dòng)器的壽命,使用ramlog的一個(gè)好處是,不用再擔(dān)心某個(gè)守護(hù)進(jìn)程每隔30秒向syslog發(fā)送一條消息,放在以前,硬盤必須隨時(shí)保持運(yùn)轉(zhuǎn),這樣對(duì)硬盤和電池都不好。
19、先打包,后寫入
在內(nèi)存中劃分出固定大小的空間保存日志文件,這意味著筆記本電腦硬盤不用一直保持運(yùn)轉(zhuǎn),只有當(dāng)某個(gè)守護(hù)進(jìn)程需要寫入日志時(shí)才運(yùn)轉(zhuǎn),注意ramlog使用的內(nèi)存空間大小是固定的,否則系統(tǒng)內(nèi)存會(huì)很快被用光,如果筆記本使用固態(tài)硬盤,可以分配50-80MB內(nèi)存給ramlog使用,ramlog可以減少許多寫入周期,極大地提高固態(tài)硬盤的使用壽命。
20、一般調(diào)優(yōu)技巧
盡可能使用靜態(tài)內(nèi)容替代動(dòng)態(tài)內(nèi)容,如果你在生成天氣預(yù)告,或其它每隔1小時(shí)就必須更新的數(shù)據(jù),最好是寫一個(gè)程序,每隔1小時(shí)生成一個(gè)靜態(tài)的文件,而不是讓用戶運(yùn)行一個(gè)CGI動(dòng)態(tài)地生成報(bào)告。
為動(dòng)態(tài)應(yīng)用程序選擇最快最合適的API,CGI可能最容易編程,但它會(huì)為每個(gè)請(qǐng)求產(chǎn)生一個(gè)進(jìn)程,通常,這是一個(gè)成本很高,且不必要的過程,F(xiàn)astCGI是更好的選擇,和Apache的mod_perl一樣,都可以極大地提高應(yīng)用程序的性能。