田雅
摘要:本文從程序設(shè)計優(yōu)化、Web服務(wù)器優(yōu)化、數(shù)據(jù)庫服務(wù)器優(yōu)化三方面綜合闡述了如何對基于.NET平臺的Web 應(yīng)用系統(tǒng)進行優(yōu)化的技術(shù)方法和實踐經(jīng)驗。在系統(tǒng)的生命周期內(nèi)做好綜合優(yōu)化工作,從而達到提高Web系統(tǒng)的性能,推遲硬件的升級,降低應(yīng)用系統(tǒng)的開發(fā)成本的目的。
關(guān)鍵詞:.NET;性能優(yōu)化;Web 程序;Web服務(wù)器;IIS;數(shù)據(jù)庫服務(wù)器
中圖分類號:TP393.09 文獻標(biāo)識碼:A文章編號:1007-9599 (2013) 05-0000-02
隨著技術(shù)的發(fā)展,有豐富的技術(shù)方法來開發(fā)基于網(wǎng)絡(luò)的應(yīng)用系統(tǒng)。作為主流的.NET平臺,則作為首選的開發(fā)技術(shù)。一個好的Web應(yīng)用系統(tǒng),除了具備易于操作的界面,華麗的頁面,更應(yīng)該注重其網(wǎng)頁檢索數(shù)據(jù)的速度是否夠快、是否出現(xiàn)數(shù)據(jù)丟失現(xiàn)象,是否出現(xiàn)亂碼或者無法登陸而需重啟IIS,甚至某些功能突然無法使用。而一個Web應(yīng)用系統(tǒng)的性能表現(xiàn),不僅僅是一系列的參數(shù),而應(yīng)作為應(yīng)用系統(tǒng)的一項功能。所以在進行系統(tǒng)設(shè)計時,就需要把性能問題考慮進去。而不是在整個應(yīng)用系統(tǒng)開發(fā)完畢再對其性能進行優(yōu)化,這樣做會付出更多的時間、成本等代價。本文將從程序設(shè)計優(yōu)化、Web服務(wù)器優(yōu)化、數(shù)據(jù)庫服務(wù)器優(yōu)化三方面來闡述Web應(yīng)用系統(tǒng)的優(yōu)化問題。
1程序設(shè)計優(yōu)化
微軟的.NET平臺作為新一代的Web系統(tǒng)開發(fā)平臺有著非常卓越的性能。但要在此基礎(chǔ)上開發(fā)出專業(yè)水準(zhǔn)的、符合生產(chǎn)標(biāo)準(zhǔn)的、受用戶歡迎的Web系統(tǒng),還需要開發(fā)人員從程序設(shè)計的角度在數(shù)據(jù)展示、并發(fā)控制、技術(shù)方案等多方面進行優(yōu)化處理,以提高Web系統(tǒng)的總體性能。
合理的數(shù)據(jù)展示方式:避免一次性從數(shù)據(jù)庫中查詢大量的數(shù)據(jù)進行展示,可采用分頁、延遲加載等形式。
合理控制并發(fā)數(shù)量:大數(shù)據(jù)量、長時間的處理程序,要考慮進行并發(fā)數(shù)量的控制,避免產(chǎn)生大量的排隊、超時現(xiàn)象。
合理的技術(shù)方案:大文件的上傳需要考慮Web服務(wù)器的壓力,采用傳統(tǒng)的上傳方式容易造成Web服務(wù)器負(fù)載過重,必須控制上傳的并發(fā)量,或者采用專用的上傳控件。
有效的各層緩存:把一些頁面層公用的資源,比如權(quán)限對應(yīng)的URL就可以放在Application對象中,減少頻繁地通過數(shù)據(jù)庫訪問來驗證當(dāng)前用戶的權(quán)限信息;將底層類實例或者SQL語句通過靜態(tài)變量緩存起來,每次使用時從緩存中調(diào)出即可,不用重新構(gòu)建占用資源。
合理控制會話時長:要合理設(shè)定Session 的時間,避免過長時間的會話,否則對IIS產(chǎn)生不必要的壓力;由于系統(tǒng)程序上的問題不能使用ASP.Net Server,所以在WebConfigure里將Session的時間設(shè)為120(原來系統(tǒng)設(shè)置的是480)。
合理的數(shù)據(jù)操作方式:根據(jù)實際測試發(fā)現(xiàn)update操作的效率明顯不如insert,因此同樣操作盡量使用完整的insert語句,而不要采用“短Insert+ update”的方式。
Web應(yīng)用系統(tǒng)通過從程序設(shè)計的角度進行優(yōu)化,有利于系統(tǒng)的穩(wěn)定運行,節(jié)省了成本。對于每一個系統(tǒng)開發(fā)人員來說,利用有限的硬件條件,提高了程序的性能,不失為明智的選擇。
2Web服務(wù)器優(yōu)化
Web服務(wù)器性能是整個Web系統(tǒng)的關(guān)鍵環(huán)節(jié),提高Web服務(wù)器的性能也是長久以來人們一直關(guān)注的課題。實際上管理員在安裝、配置IIS的時,沒有對其進行優(yōu)化或者配置錯誤;隨著運行的服務(wù)種類,以及訪問人數(shù)的增加,服務(wù)器原有的硬件配置已不能滿足要求了,這就需要提高硬件配置。這就導(dǎo)致了安裝缺陷和缺乏維護的問題。這里從IIS優(yōu)化開始,為Web服務(wù)器進行減負(fù)。
2.1禁止多余的Web服務(wù)擴展。對IIS進行設(shè)置時,用到什么擴展就啟用什么擴展,不需要的擴展則關(guān)閉。對于Web服務(wù)器運行時用不到的擴展,它們占用了IIS資源,對Web服務(wù)器的性能有很大的影響,某些攻擊者會利用這些擴展存在的漏洞對系統(tǒng)進行攻擊,例如“所有未知CGI擴展”、“在服務(wù)器端的包含文件”等應(yīng)進行關(guān)閉。
2.2刪除不必要的IIS擴展名映射。用不到的擴展名如:asa,.cer等會加重Web服務(wù)器的負(fù)擔(dān),很可能發(fā)生一定的安全隱患。所以需要根據(jù)程序的需要,把不必要的應(yīng)用程序映射刪除,比如.shtml,.shtm,.stm等。
2.3取消訪問記錄。IIS默認(rèn)開啟了Web訪問記錄功能,這會記錄下Web的訪問情況。這樣,大量的磁盤空間被這些記錄占用,還很大程度的影響了Web服務(wù)器的性能。提升5%到8%的應(yīng)用系統(tǒng)性能,就需要停止訪問記錄。所以,對于一般中小型的Web應(yīng)用系統(tǒng)建議關(guān)閉它。
2.4對訪問流量進行限制。默認(rèn)情況下IIS6.0對于訪問量是沒有限制的,當(dāng)用戶并發(fā)數(shù)超過了網(wǎng)絡(luò)負(fù)載則會發(fā)生網(wǎng)絡(luò)擁堵,甚至導(dǎo)致服務(wù)器宕機。因此需要控制Web訪問的流量,來對用戶的訪問進行限制。
2.5讓W(xué)eb負(fù)載自由伸縮。若不進行設(shè)置,IIS則對Web提供全負(fù)荷的服務(wù),這種方式使得Web服務(wù)器有很大的負(fù)載。IIS6.0的Web園就能解決這一問題,指定用于應(yīng)用程序池的工作進程的數(shù)量,就能隔離Web服務(wù)器的各個站點,使其能夠自動地根據(jù)負(fù)載變化自動調(diào)節(jié)工作進程。
2.6配置應(yīng)用程序池。對于虛擬主機的一臺服務(wù)器上有很多Web站點的情況,IIS則可以支持多個Web服務(wù)。若一個Web站點發(fā)生問題,則會影響到其他應(yīng)用。因此,我們需要將各個應(yīng)用系統(tǒng)進行獨立,需要通過為不同的應(yīng)用進程指定應(yīng)用程序池的方法來解決這個問題。尤其是服務(wù)器上有多個版本的FrameWork時,應(yīng)用程序池獨立尤為重要。(1)創(chuàng)建:在IIS管理器中可新建應(yīng)用程序池,也可以將現(xiàn)有應(yīng)用程序池作為模板。(2)指派:為站點指派應(yīng)用程序池。若不可指派,則創(chuàng)建應(yīng)用程序名,然后指派網(wǎng)站的應(yīng)用程序池。(3)回收:利用“回收”功能,可以設(shè)置如何恢復(fù)系統(tǒng)資源,進行IIS資源使用的靈活定制。
2.7管理IIS日志。一般情況下IIS都是默認(rèn)“啟用日志記錄”的,但是由于長期累積,日志文件會非常大,必然會使IIS壓力過大,從而影響系統(tǒng)速度,所以可以對IIS日志文件進行相應(yīng)的管理。
首先選中某個站點,然后右鍵單擊選擇屬性,在“網(wǎng)站”選項卡中,可以將“啟用日志記錄”勾選掉,或者點擊“活動日志格式”后的屬性,對日志進行進一步的設(shè)置,進入頁面,在“常規(guī)”選項卡的“新日志計劃”中選擇最后一項,“當(dāng)文件大小達到20兆”時啟用新日志計劃,即避免了單一日志文件過大,影響系統(tǒng)運行速度的情況。在“高級”選項卡中也可以進一步進行設(shè)置。
2.8總結(jié)。通過對IIS的優(yōu)化設(shè)置,Web服務(wù)器就實現(xiàn)了“減負(fù)“,性能將得到較大的提升。當(dāng)然,只僅依靠軟件設(shè)置是不能從根本上改善Web性能的。此外,還要對其進行硬件改造。只有軟硬皆施才是最完美的解決方案。
3數(shù)據(jù)庫服務(wù)器優(yōu)化
應(yīng)用系統(tǒng)的響應(yīng)速度是其性能表現(xiàn)的一項十分重要因素。通常Web應(yīng)用系統(tǒng)通過數(shù)據(jù)庫來存儲數(shù)據(jù),利用.NET等主流技術(shù)建立于數(shù)據(jù)庫的連接,從而形成動態(tài)交互的Web應(yīng)用系統(tǒng)。其性能表現(xiàn)除了以上論述的程序設(shè)計、Web服務(wù)器已經(jīng)軟硬件配置相關(guān)外,數(shù)據(jù)庫服務(wù)器也是不可忽視的。
3.1數(shù)據(jù)庫設(shè)計優(yōu)化
數(shù)據(jù)庫的性能直接影響到應(yīng)用程序的性能,因此在Web應(yīng)用程序設(shè)計時就要把數(shù)據(jù)庫設(shè)計的性能問題考慮進去。表是數(shù)據(jù)庫中最基本的元素,在進行數(shù)據(jù)庫表的設(shè)計時,一般的規(guī)范化標(biāo)準(zhǔn)是第三范式。但在實際工作中,若將表按照規(guī)范拆分為多個表,查詢時進行多表連接,反而降低了查詢的響應(yīng)時間。所以,需要根據(jù)實際情況突破規(guī)劃化標(biāo)準(zhǔn)的限制來對表進行分割,保留一些冗余的列、增加派生列等來提升對各個表的查詢速度。
計算機光盤軟件與應(yīng)用2013年5期