要探索系統效能調校最完整的資料來源,必然是研讀該產品原廠所提供的官方技術手冊,掌握產品特性及技術細節。然而原廠文件大都是英文居多,而且大多撰寫的方式較非以實務角度為出發點,閱讀上未免較枯燥無味。所以,我想提出有參考價值的幾本相關書籍。

系統架構

以效能改善的程度來思考,架構性調整所得來的改善效益會遠比軟體開發面要來得高,但少有書專論整合性網站系統的架構規畫及效能分析,寫得好的更是少數。像筆者早期曾接觸像是《Performance Analysis for Java Web Sites》,就會覺得作者所談論的範圍相當全面,同時見樹又見林的撰寫方式,從系統架構到程式開發都有著墨,對於少有機會接觸廣度較高的專案的人,實為難得。

此書中提到許多實務面相當受用的觀念,像是與網站系統效能有關的硬體及軟體的配置,應用系統開發過程中,針對效能要求的項目如何進行測試,以及測試的標準、依據,選用的測試工具為何、到最後上線時的數據收集分析及後續調校,甚至為進行系統擴充如何執行容量規畫,都有專章說明。

最後在書末附註章節中提供的檢核表格文件,包含各式軟硬體系統的容量規畫、系統上線前的前置測試計畫,以及各式軟硬體系統之效能檢測表,對於從事網站開發的從業人員都是相當實用的參考資料。

而Apress出版的《Pro Java EE 5 Performance Management and Optimization》,所描述的內容,就完全著重在效能管理的完整規畫課題,並非只是談論遇到問題如何解決。作者強調應提前在系統開發設計階段就應列入評核標準,將效能檢測視為軟體產品開發生命周期(PLM)的其中一環,定義標準化的檢測程序,早期發現早期治療。

在軟體專案需求中的非功能面需求,必然會定義到關於系統效能所預期的標準,像是網站系統同時可上線人數、網頁回應時間、單位時間可成立訂單數等。本書從如何定義系統效能檢測作業開始,針對檢測結果優化調校應用伺服器平臺及程式碼內容,反覆驗證達到預期需求標準。而在開發設計階段初期,即考量到應使用的架構及運用技術為何,甚至在系統概念驗證(POC)階段,即確保效能達成的技術可行性,同時考慮到未來容量擴增時的架構彈性(Scalability),並在程式碼撰寫方式及品質要求上,以標準化方式進行,期望將效能問題的風險降到最低。

一旦網站系統上線至正式環境後,更不容許因為效能問題造成服務不佳甚至中斷停機等狀況發生,所面臨的課題則更加嚴峻。為落實良好的效能管理,必須在問題發生之前便能事先預防。本書也專章介紹,關於網站維運階段在各項重點工作上應注意的事項,包括效能檢測作業、異常及障礙排除、系統用量的預測及規畫,作者都提供了明確建議做法,供讀者參考。
而本書別出心裁的章節在於第四部分。作者針對J2EE平臺常見的效能問題及分析解法整理在這個章節,像是遇到記憶體不足(Out-of-Memory Errors)、執行緒運作效能問題、資料庫連線問題、資料存取指令及快取運用的相關問題等。這裡的建議並非頭痛醫頭的快速猛藥,作者會詳細介紹技術平臺相關機制的運作原理,以及分析問題可能的原因,並回應到系統參數調校上,讓讀者能清楚了解。

網站系統中,作業系統本身的管理也不容忽視,其為所有服務平臺的基石,在未選用良好的作業系統及適當的調校,則直接影響到系統。像是多核處理器架構之運算效能是否有效發揮、磁碟I/O的存取單位及方式等。O'Rielly出版的《System Performance Tuning》,即談論作業系統面與硬體資源的配置,協助你揭開底層系統運作架構的神秘面紗、清楚掌握運作原理,並透過有效調校,打好底層環境基礎。

系統設計

不良的系統設計造成未來效能問題的機率甚高,討論系統設計面的專書就較常見,而Addison Wesley出版的Effective系列叢書,能針對不同技術領域提供優化設計的進階建議。較知名的像是Addison Wesley的《Effective Enterprise Java》、《Effective Java,2nd》都討論到系統設計及程式撰寫面如何優化效能。

而軟體專案在為滿足需求功能的同時,亦需同時以具效率的設計方式來實作開發,《Effective Enterprise Java》著重在J2EE平臺軟體架構設計時的實務技巧,分別針對軟體架構、資料傳遞、邏輯運算、資料狀態管理、介面呈現、系統核心及安全等層面探討,舉出共75項設計原則供讀者參考,可算是伺服器端效能改善設計上十分完整的介紹。《Effective Java,2nd》則更著重Java程式撰寫本身應秉持的原則。若要寫出高效能的程式,不但要充分了解程式語言本身的特性,另外便是以良好的演算邏輯來處理問題。這裡廣泛提及JDK套件正確的使用方式、物件設計及操作的方法,以及適當時機運用合適的資料結構及程式語法,總共提出78項建議。

網站優化

像是O'Rielly先後出版的《High Performance.Web Sites》、《Even Faster Websites》,則是主要探討網頁構成元素如何優化呈現及縮短回應時間的專書,包括程式撰寫要點及網頁伺服器配置時要求。其中《High Performance Web Sites》列出的十四項黃金法則,亦結合在網站效能檢測工具YSlow中,你可以利用這套工具找出效能問題,然後搭配書中的建議解法來改善,有助於實務應用。作者Steve Souders有鑑於新一代網站技術發展的挑戰,再撰寫《Even Faster Websites》針對JavaScript運用方式、網路回應時效、瀏覽器效能提升等三大方面,提出更進階的效能改善建議。書中對於每項提出的建議解法,都佐以實際驗證測試的圖表結果來說明,明確告知實作方式的成效顯著,並非紙上談兵。

目前網站系統使用JavaScript來進行介面設計及資料傳遞的比重大增,雖然不見得會直接影響伺服器效能,但多少也會影響用戶端網頁的反應效率。O'Rielly出版的《High Performance JavaScript - Build Faster Web Application Interfaces》,也談論如避免因介面效果的要求而忽略了效能考量,像是JavaScript執行的原理介紹、資料處理及DOM文件的操作方式、邏輯運算優化建議,以及Ajax設計時需要留意的重點,這些都值得開發人員實作時參考。

資料處理

當網站系統遇到效能瓶頸,有很高的比重都是發生在資料庫身上,無論是資料庫系統的調校或是SQL指令的優化,都不斷地被提出、討論。就資料庫系統方面的調校,像是近期碁峰出版的《Oracle DBA手記:資料庫診斷案例與效能調校實戰》,內容有別於以往的資料庫相關書籍,集結作者一線實務經驗淬練而成,值得一探究竟。

SQL指令雖然簡單,但使用不當也可以將整個資料庫系統搞掛。O'Rielly、Addison Wesley都曾出版SQL Tuning相關書籍,像是《SQL Tuning》、《SQL Performance Tuning》都是探討如何正確使用SQL指令的專書。開發人員必須建立良好資料處理的觀念,不是單純資料產出正確即可,進一步再思考是否還有更有效率的撰寫方式來提升效能。

專欄作者

熱門新聞

Advertisement