當系統遇到性能問題時,你可能首先會想到幾個典型的瓶頸,像處理器、內存、磁盤和網絡。其實,這些只是開始尋找瓶頸的入手點,但它們不是惟一隱藏著性能問題的瓶頸。下面列出了常見的10個可能存在問題的瓶頸。
1. 處理器
處理器是計算機中執行計算和指令操作的核心部件。處理器可以處理數以百萬計的計算和指令,但是,當這些操作的數量超過處理器的能力后,性能就會受到影響。如果處理器持續忙碌的時間超過75%,整個系統的運行速度就會減慢。處理器需要留出一些余地,以處理一些“突發”狀況,使要處理的負載在很短的時間內達到100%。處理器負載是導致性能瓶頸的一個常見來源。
2. 內存
內存方面的一條經驗法則法是“添加更多的內存”。當性能問題指向內存時,解決這個問題的一般做法是,添加更多的內存。不過,這個做法只會在短期內有效。指向內存的性能瓶頸常常歸因于軟件設計欠佳,造成內存泄漏(memory leaks),或者表現為內存問題的其他系統缺陷。要解決內存性能問題,其關鍵是在添加更多內存之前找到癥狀的根源。
3. 存儲系統
磁盤的速度、RAID類型、存儲類型和控制器技術共同組成了所謂的磁盤輸入/輸出系統。磁盤輸入/輸出系統是系統管理員和用戶都很憂慮的性能問題的一個常見來源。就算使用當今最出色的磁盤技術,也有實際和物理的性能限制。合并和分離磁盤上的負載時,要運用最佳實踐。盡管存儲區域網絡(SAN)很吸引人,但本地磁盤仍比速度最快的SAN要快。
4. 網絡
網絡經常被錯怪成性能瓶頸來源,而實際上很少是這樣。除非網絡部件出現了硬件故障,比如交換機端口受損、電纜壞掉、網卡出現異?;蛘呗酚善髋渲糜袉栴},否則應該看看其他環節,找出“網絡”的性能瓶頸。網速明顯變慢通常歸因于本文提到的其他九個瓶頸中的一個。
5. 應用軟件
盡管應用軟件開發人員不愛聽,但是,編得差勁的應用軟件常常會以硬件問題的形式表現出來,而其實問題常常出在應用軟件上,如某應用軟件運行時,原本運行順暢的系統性能大受影響;而當它停止運行后,系統的性能就沒有任何問題了。性能問題出現時,系統管理員與開發人員經常會爭執不停,互相指責對方。其實,結果經常是經過了數百個小時查找硬件性能后,發現原來錯在應用軟件上。
6. 惡意軟件
在發現的性能瓶頸中,病毒、特洛伊木馬和間諜軟件占了很大一部分。當出現棘手問題時,用戶老是抱怨網絡、應用軟件或者計算機,而降低性能的那些惡意軟件可能隱藏在一個或者多個服務器系統上、用戶工作站上,或者兩者兼而有之。被惡意軟件感染的現象很普遍,所以必須采用多層防御機制來防范。殺毒軟件、反間諜軟件、本地防火墻、網絡防火墻和定期打補丁的做法,將有助于保護系統,防止由此帶來的瓶頸。
7. 工作負載
智能工作負載管理有助于防止工作負載沒有平衡好或者負載平衡方案考慮不周而引起的性能問題。為性能有問題的集群添加另一個系統,雖然這樣可以減輕壓力,但是這個步驟在虛擬環境下比在物理環境下更容易完成。這方面給出的建議是,衡量所有系統的能力和性能,并留意報告的數據,轉移工作負載,添加系統,并留意性能。
8. 硬件出現故障或過時
硬件越舊,出故障的可能性就越大。有些硬件部件一下子就壞掉了,而有些經常出現隨機性故障,卻又查不出毛病。由于沒法預測硬件何時會導致系統重啟、數據丟失或性能瓶頸,這讓系統管理員大傷腦筋。要防止這種災難出現,最好的辦法是保持硬件常新,使用冗余硬件,并認真監控系統。
9. 文件系統
所選擇的文件系統是否會對性能產生深遠的影響?答案是肯定的。有些文件系統(如JFS)使用的處理器資源很少;XFS具有很高的擴展性和性能;NTFS是一個可恢復的高性能文件系統;新的EXT4文件系統能夠有效地支持超大文件。每種文件系統都有其用途,要是為應用軟件選錯了文件系統,就會帶來嚴重后果。要慎重考慮和選擇文件系統,應選擇最適合處理你工作的文件系統。沒有面面俱到的文件系統。
10. 技術
基礎架構所選擇的技術對于性能起著至關重要的作用。比如說,如果一項應用是基于虛擬化基礎架構,那么,可能會遇到在物理系統上不會遇到的性能問題。另外,有些工作負載用虛擬化技術來處理速度很快,比如,LAMP(Linux、Apache、MySQL、PHP)工作負載用KVM來處理,就與用原生系統來處理一樣快,甚至更快。不過,容器式的(container-type)虛擬化技術(OpenVZ、Parallels和Solaris Zones)聲稱,對任何工作負載來說,它們都能達到原生系統的速度。