国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

WEB系統(tǒng)性能優(yōu)化的研究與實踐

2013-12-29 00:00:00周倩羅揚
電腦知識與技術 2013年10期

摘要:該文結(jié)合社區(qū)警務管理系統(tǒng)的研發(fā)及實踐,論述了針對WEB系統(tǒng)中普遍存在的性能問題及具體系統(tǒng)的特點,對影響系統(tǒng)性能的因素進行分析,找出系統(tǒng)性能的瓶頸,并給出具體適用于WEB應用系統(tǒng)的性能優(yōu)化方案和技術,如:索引應用、前端優(yōu)化、緩存技術及負載均衡技術等,并將它們應用于社區(qū)警務管理系統(tǒng)中,使該系統(tǒng)性能得到了最大化的提升。

關鍵詞:WEB系統(tǒng);警務管理系統(tǒng);性能優(yōu)化

中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2013)10-2324-04

1 概述

近幾年,隨著互聯(lián)網(wǎng)快速的發(fā)展及廣泛的應用,商業(yè)應用層出不窮,業(yè)務邏輯不斷變復雜,以互聯(lián)網(wǎng)和數(shù)據(jù)庫技術為基礎的各種信息管理系統(tǒng)已滲透到當今社會工作生活中的各個角落。隨之而來的是應用技術和開發(fā)語言的日新月異,開發(fā)者需要永遠不停的學習,對用戶體驗的要求也不斷提升,同樣,在Web站點性能方面,開發(fā)者也一直在跟時間賽跑,因為軟件性能早已成為評價軟件質(zhì)量的一個重要因素,對于站點經(jīng)營者來說,讓用戶等待的時間過長,即系統(tǒng)性能差,也許會造成毀滅性的后果,因此對系統(tǒng)性能進行合理的優(yōu)化已成為當今系統(tǒng)技術負責人及程序員必備的專業(yè)技能和工作要求。該文通過研究具體適用于WEB應用系統(tǒng)的優(yōu)化方案和技術,如:索引應用、動態(tài)網(wǎng)頁靜態(tài)化、緩存技術及負載均衡技術等,并將它們應用于筆者參與開發(fā)的衡陽市社區(qū)警務信息管理系統(tǒng)中,通過對比該系統(tǒng)應用優(yōu)化技術前后性能的變化來驗證該系列技術方案的可行性及適用性。

2 WEB系統(tǒng)性能優(yōu)化策略

目前的Web應用系統(tǒng),不管是何種語言開發(fā),粗略的結(jié)構(gòu)一般均由三層構(gòu)成:前臺頁面、業(yè)務邏輯、數(shù)據(jù)庫。目前一般的頁面技術,根據(jù)數(shù)據(jù)生成最終的HTML頁面,性能關鍵指標可概括為頁面的渲染速度。綜合各種頁面技術而言,渲染速度相差不會太大,10倍以內(nèi);業(yè)務邏輯,根據(jù)業(yè)務需要將數(shù)據(jù)庫中的數(shù)據(jù)進行邏輯處理讀取到內(nèi)存中,以便通過頁面模板渲染成HTML頁面;數(shù)據(jù)庫負責執(zhí)行SQL查詢完成數(shù)據(jù)的交互。

所以多數(shù)Web系統(tǒng)優(yōu)化方案均可根據(jù)這三個部分進行設計。目前普遍的優(yōu)化技術概括起來有:數(shù)據(jù)的網(wǎng)絡傳輸、服務器并發(fā)處理能力、緩存技術(動態(tài)網(wǎng)頁緩存、數(shù)據(jù)緩存、頁面緩存、分布式緩存)、數(shù)據(jù)庫分布式、負載均衡技術、性能監(jiān)控方案等。

然而如何選擇適合有效的優(yōu)化方案,則必須根據(jù)系統(tǒng)實際情況對系統(tǒng)各方面進行性能監(jiān)控和分析,找出系統(tǒng)的性能瓶頸,從瓶頸問題出發(fā),便會在系統(tǒng)性能優(yōu)化工作中起到事半功倍的效果。

按照筆者目前積累的經(jīng)驗,對于一般WEB應用系統(tǒng)的優(yōu)化方案可注意一下幾個準則:

1)沒必要去優(yōu)化頁面模板,這都是一些很成熟的技術,就算你好不容易提升了10%的性能,這10%在整個頁面的執(zhí)行過程中只占了0.5%的比例,微乎其微。

2)合理應用索引,優(yōu)化查詢。

3)緩存技術,簡單而高效。

4)服務器壓力相對較大的需求,分布式處理。

下面將以筆者參與開發(fā)的衡陽市社區(qū)警務管理信息系統(tǒng)為例,對優(yōu)化該系統(tǒng)所采用的方案做介紹。

3 索引技術的應用

在關系數(shù)據(jù)庫中,索引是一種與表有關的數(shù)據(jù)庫結(jié)構(gòu),它可以使對應于表的SQL?語句執(zhí)行得更快。沒有索引,條件查詢時會搜索整個表,這樣會消耗大量數(shù)據(jù)庫系統(tǒng)時間,并造成大量磁盤I/O操作;如果在表中合理建立索引,則可以在索引中找到符合查詢條件的索引值,最后通過保存在索引中的ROWID快速找到表中對應的記錄,而無需對整個表數(shù)據(jù)進行掃描。

而優(yōu)化SQL語句的關鍵是盡可能減少語句的logical reads(語句執(zhí)行時需要訪問的單位為8K的數(shù)據(jù)頁總數(shù))。logical reads 越少,其需要的內(nèi)存和CPU時間也就越少,語句執(zhí)行速度就越快。而索引的最大好處就是它可以極大減少SQL語句的logical reads數(shù)目,從而極大減少語句的執(zhí)行時間,提高系統(tǒng)的執(zhí)行效率。創(chuàng)建索引的關鍵是索引要能夠大大減少語句的logical reads。一個索引好不好,主要看它減少的logical reads多不多,因此要根據(jù)數(shù)據(jù)表實際的使用情況合理應用索引技術,下面將以社區(qū)警務管理信息系統(tǒng)為例,介紹筆者在該系統(tǒng)中合理應用索引優(yōu)化系統(tǒng)的過程。

在衡陽社區(qū)警務管理系統(tǒng)人口管理模塊中,涉及到衡陽市人口數(shù)據(jù)已達800多萬,這給數(shù)據(jù)的查詢性能提出了更高的要求。系統(tǒng)通過建立索引有效提升了查詢性能。(筆者采用PowerDesigner工具生成了800萬條人口測試數(shù)據(jù))

4 動態(tài)內(nèi)容緩存技術

簡單的說,緩存的目的就是把需要花費昂貴開銷的計算結(jié)果保存起來,在以后需要的時候直接取出,而避免重復計算。在這里筆者所指的是由動態(tài)內(nèi)容自行實現(xiàn)的緩存機制,包括整頁緩存、局部緩存、數(shù)據(jù)緩存等。

4.1 頁面緩存

對于動態(tài)網(wǎng)頁來說,緩存的內(nèi)容實際上就是動態(tài)網(wǎng)頁輸出的HTML,即頁面緩存,而對于其他動態(tài)內(nèi)容,比如圖片或動態(tài)XML數(shù)據(jù),也可以將它們的輸出結(jié)果整體進行緩存,其實現(xiàn)機制和動態(tài)網(wǎng)頁是一樣的。

衡陽市社區(qū)警務信息管理系統(tǒng)采用ASP.NET平臺開發(fā),并且地圖模塊、治安模塊頁面信息量極大,因此使用@ OutputCache指令實現(xiàn)頁面輸出緩存的一般性需求。@ OutputCache指令在ASP.NET頁或者頁中包含的用戶控件的頭部聲明。該指令中包括必需的 Duration 和 VaryByParam 或 VaryByControl 屬,Duration用于設置頁面或者用戶控件緩存的時間。單位是秒。通過設置該屬性,能夠為來自對象的HTTP響應建立了一個過期策略,并將自動緩存頁或用戶控件輸出。Duration必須為大于零的整數(shù)。VaryByControl屬性使用一個分號分隔的字符串列表來更改用戶控件的輸出緩存。這些字符串代表在用戶控件中聲明的ASP.NET服務器控件的ID屬性值。除非已經(jīng)包含了VaryByParam屬性,否則在@ OutputCache指令中,該屬性是必需的。

其指示頁面輸出緩存的有效期是100秒,并且頁面不隨任何GET或POST參數(shù)改變。在該頁仍被緩存時接收到的請求由緩存數(shù)據(jù)提供服務。經(jīng)過100秒后,將從緩存中移除該頁數(shù)據(jù),并隨后顯式處理下一個請求并再次緩存頁。

這種方式非常方便,只需幾個簡單的屬性設置,就能夠?qū)崿F(xiàn)頁面的輸出緩存策略。

4.2 數(shù)據(jù)緩存

對于社區(qū)警務信息管理系統(tǒng),大量數(shù)據(jù)是保存在數(shù)據(jù)庫中的,本系統(tǒng)所管理信息多為人口、地理、企業(yè)等法律意義上的固定信息,信息變動幾率比較小,信息多用于輔助辦公時查詢使用。如果系統(tǒng)每次需要讀取的警務信息,都要訪問數(shù)據(jù)庫,那會是一項很費時的操作。針對本系統(tǒng)該特點,筆者通過采用數(shù)據(jù)緩存優(yōu)化策略,有效提高了系統(tǒng)性能。即:先將數(shù)據(jù)庫中的數(shù)據(jù)緩存到緩存區(qū)中,當應用程序需要這些數(shù)據(jù)時,直接從緩存區(qū)中提取,就可以減少系統(tǒng)開銷。

如果需要某個數(shù)據(jù)訪問層接口使用數(shù)據(jù)緩存,只需調(diào)用DataAcces提供給該數(shù)據(jù)層的“CreateObject”方法,返回該數(shù)據(jù)類利用緩存的對象,而業(yè)務邏輯層在調(diào)用數(shù)據(jù)層時要根據(jù)是否需要創(chuàng)建數(shù)據(jù)緩存來選擇調(diào)用DataAccess類中創(chuàng)建數(shù)據(jù)類的方法。

5 負載均衡技術

當已經(jīng)最大程度的發(fā)揮了單臺Web服務器的處理能力后,服務器所承受的壓力仍會達到極限時,就應想辦法將壓力合理轉(zhuǎn)移到多臺服務器上,即當前流行的負載均衡技術,對于當今硬件價格低廉,購置方便的前提下,這是一個不錯的性能優(yōu)化方案。

負載均衡是由多臺服務器以對稱的方式組成一個服務器集合,每臺服務器都具有等價的地位,都可以單獨對外提供服務而無須其他服務器的輔助。通過某種負載分擔技術,將外部發(fā)送來的請求均勻分配到對稱結(jié)構(gòu)中的某一臺服務器上,而接收到請求的服務器獨立地回應客戶的請求。負載均衡能夠平均分配客戶請求到服務器列陣,以此提供快速獲取重要數(shù)據(jù),解決大量并發(fā)訪問服務問題。

實現(xiàn)Web負載均衡的方法有:HTTP重定向;基于DNS的輪詢解析;通過反向代理服務器來實現(xiàn)負載均衡調(diào)度;通過LVS來組件服務器集群。通過這些具體的實現(xiàn)方法,我們更加關心的是能否真正地均衡調(diào)度請求,以及是否具備高可用性和影響規(guī)模擴展的制約因素。

目前衡陽市社區(qū)警務管理信息系統(tǒng)還未應用此優(yōu)化方案,考慮到日后系統(tǒng)可能會升級到省級使用,將導致系統(tǒng)的并發(fā)訪問量越來越大,單臺服務器也許不能正常高效的滿足需求,因此在后期工作中,筆者將會以實現(xiàn)負載均衡技術中相對簡單的方案:HTTP重定向為切入點,深入研究該方案,以爭取最大化降低服務器端壓力,使系統(tǒng)更健壯、穩(wěn)定、長久。

6 前臺優(yōu)化方案

6.1 動態(tài)頁面靜態(tài)化

將頁面生成HTML靜態(tài)網(wǎng)頁有如下好處:加快頁面打開瀏覽速度,靜態(tài)頁面無需連接數(shù)據(jù)庫打開速度較動態(tài)頁面有明顯提高;減輕服務器負擔,使頁面緩存發(fā)揮意義;網(wǎng)站更安全,HTML頁面不會受Asp相關漏洞的影響。因此將動態(tài)頁面盡可能靜態(tài)化也是優(yōu)化WEB應用系統(tǒng)普遍采用的方案。

6.2 AJAX應用

7 結(jié)束語

性能優(yōu)化是一個復雜的過程,它需要多種理論和技術的支持,沒有適用于所有應用系統(tǒng)的優(yōu)化方案,我們所能夠做到的,應該是在選擇優(yōu)化措施時,根據(jù)具體環(huán)境和應用的不同,從多角度多方面來衡量優(yōu)化措施的利與弊,以便于找到最適合目標系統(tǒng)的優(yōu)化方案。

參考文獻:

[1] 郭欣.構(gòu)建高性能Web站點[M].北京:電子工業(yè)出版社,2012.

[2] Chris Knowles.ASP. NET XML 高級編程[M].北京:清華大學出版社,2002.

[3] 馬曉軒.Web服務性能優(yōu)化的研究[J].計算機工程與應用,2005(8):21-23.

[4] 維恩霍爾特..NET性能優(yōu)化[M].北京:清華大學出版社,2005.

[5] 布拉德福.Effective SQL之SQL語句最優(yōu)化[M].北京:清華大學出版社,2013.

离岛区| 长葛市| 井研县| 绿春县| 嘉祥县| 柳林县| 措美县| 溧水县| 元江| 凉城县| 馆陶县| 淅川县| 锦屏县| 墨竹工卡县| 内黄县| 谷城县| 桃源县| 西平县| 崇仁县| 宿迁市| 介休市| 秀山| 辽源市| 游戏| 大英县| 沂南县| 临安市| 咸宁市| 和硕县| 枣阳市| 和政县| 开封县| 犍为县| 融水| 杭州市| 重庆市| 东乌| 东阳市| 峡江县| 金华市| 农安县|