高并發(fā)WEB服務(wù)器卓有成效方案的研究與實踐計算機(jī)科學(xué)和技術(shù)專業(yè)

上傳人:文*** 文檔編號:47614999 上傳時間:2021-12-25 格式:DOC 頁數(shù):19 大?。?6.50KB
收藏 版權(quán)申訴 舉報 下載
高并發(fā)WEB服務(wù)器卓有成效方案的研究與實踐計算機(jī)科學(xué)和技術(shù)專業(yè)_第1頁
第1頁 / 共19頁
高并發(fā)WEB服務(wù)器卓有成效方案的研究與實踐計算機(jī)科學(xué)和技術(shù)專業(yè)_第2頁
第2頁 / 共19頁
高并發(fā)WEB服務(wù)器卓有成效方案的研究與實踐計算機(jī)科學(xué)和技術(shù)專業(yè)_第3頁
第3頁 / 共19頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《高并發(fā)WEB服務(wù)器卓有成效方案的研究與實踐計算機(jī)科學(xué)和技術(shù)專業(yè)》由會員分享,可在線閱讀,更多相關(guān)《高并發(fā)WEB服務(wù)器卓有成效方案的研究與實踐計算機(jī)科學(xué)和技術(shù)專業(yè)(19頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、高并發(fā)WEB服務(wù)器卓有成效方案的研究與實踐目 錄摘要2一、序言4二、數(shù)據(jù)庫系統(tǒng)的性能調(diào)整與優(yōu)化5(一)數(shù)據(jù)庫優(yōu)化的目標(biāo)5(二)影響數(shù)據(jù)庫性能的主要因素6(三)數(shù)據(jù)庫初始化數(shù)據(jù)調(diào)整6(四)數(shù)據(jù)庫的內(nèi)存優(yōu)化8三、Web應(yīng)用程序的設(shè)計與優(yōu)化10(一)流程優(yōu)化簡介10(二)代碼的優(yōu)化11(三)SQL語句的優(yōu)化12四、Web服務(wù)器的性能調(diào)整與優(yōu)化13(一)Tomcat性能調(diào)整14(二)Web集群和負(fù)載均衡16五、結(jié)論18參考文獻(xiàn)19摘 要:本文針對當(dāng)前的高并發(fā)Web卓有成效方案的設(shè)計和優(yōu)化方法,進(jìn)行了全面的提取、分析和總結(jié),提出了一些新的優(yōu)化方案,并系統(tǒng)說明了這些方案 的使用方法和使用效果。首先論述了數(shù)

2、據(jù)庫系統(tǒng)的性能調(diào)整與優(yōu)化,接著論述了Web應(yīng)用程序的設(shè)計與優(yōu)化,最后論述了Web服務(wù)器的性能調(diào)整與優(yōu)化,以期對以后的高并發(fā)Web系統(tǒng)的研究要重要的意義。關(guān)鍵詞:高并發(fā)WEB服務(wù)器;調(diào)整;優(yōu)化 一、序言 近十年來,互聯(lián)網(wǎng)上網(wǎng)人數(shù)一直保持著指數(shù)增長的趨勢,2008年中國互聯(lián)網(wǎng) 絡(luò)信息中心(CNNIC)發(fā)布第22次中國互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計報告,報告 顯示,截至2008年6月底,我國網(wǎng)民數(shù)量達(dá)到2.53億,首次超過美國躍居世界第 一位,并且中國網(wǎng)民規(guī)模繼續(xù)呈現(xiàn)持續(xù)高速發(fā)展的趨勢,網(wǎng)民數(shù)量的增加給未來 Web系統(tǒng)設(shè)計和運行帶來巨大的挑戰(zhàn),火車票售票系統(tǒng)的經(jīng)常癱瘓就是一個典型的事實,官方說法是:“擁堵情況

3、的主要原因是后臺處理系統(tǒng)在承受了每小時800萬次流量壓力后顯現(xiàn)出處理能力不足的問題”,每小時800萬次,并發(fā)訪 問量大概是每秒的2000多次,這對于訂票Web系統(tǒng)來說,是一個非常大的考驗; 另一方面,ajax等交互性很強(qiáng)的技術(shù)的使用推動了 Web2.0的興起,也給互聯(lián)網(wǎng)上 Web系統(tǒng)提出更高的要求,在保持高性能和高可靠性不變的情況下,要提高系統(tǒng) 的并發(fā)量和Web應(yīng)用系統(tǒng)的承載能力。并發(fā)一般分為兩種情況。一種是嚴(yán)格意義上的并發(fā),即所有的用戶在同一時 刻做同一件事情或者操作,這種操作一般指做同一類型的業(yè)務(wù)。另外一種并發(fā)是 廣義范圍的并發(fā)。這種并發(fā)與前一種并發(fā)的區(qū)別是,盡管多個用戶對系統(tǒng)發(fā)出了 請求

4、或者進(jìn)行了操作,但是這些請求或者操作可以是相同的,也可以是不同的。 對整個系統(tǒng)而言,仍然是有很多用戶同時對系統(tǒng)進(jìn)行操作,因此也屬于并發(fā)的范 疇。而且后一種并發(fā)更接近用戶的實際使用情況,因為對于大多數(shù)的系統(tǒng),只有 數(shù)量很少的用戶進(jìn)行“嚴(yán)格意義上的并發(fā)”。當(dāng)系統(tǒng)的并發(fā)用戶增加時,請求的響應(yīng)時間也增加。服務(wù)器的吞吐量是先隨 并發(fā)用戶數(shù)增加而增加,當(dāng)吞吐量到達(dá)一定峰值后,再增加并發(fā)用戶數(shù),吞吐量 會減少。原因在于當(dāng)并發(fā)用戶數(shù)少時,向Web服務(wù)器提交的請求量不大,服務(wù)器 處理能力還有富余,所以吞葉量逐步增大;但當(dāng)并發(fā)用戶數(shù)超過某一值時,由于 向服務(wù)器提交的請求太多,造成服務(wù)器阻塞,反而導(dǎo)致吞吐量減少。我

5、們所說的 系統(tǒng)的并發(fā)量指系統(tǒng)可承受的最大并發(fā)量。二、數(shù)據(jù)庫系統(tǒng)的性能調(diào)整與優(yōu)化數(shù)據(jù)處理是整個Web系統(tǒng)的核心,數(shù)據(jù)庫的性能直接影響Web系統(tǒng)的運行效 率。高性能的數(shù)據(jù)庫是高并發(fā)Web系統(tǒng)的必要條件,通過對數(shù)據(jù)庫的優(yōu)化來最大 限度的提高數(shù)據(jù)庫的性能。然而數(shù)據(jù)庫系統(tǒng)的調(diào)整和優(yōu)化不是一個一蹴而就的工 作,它需要定期維護(hù),定期觀察,在發(fā)現(xiàn)性能瓶頸時及時制定優(yōu)化目標(biāo)、實施優(yōu)化計劃、驗證優(yōu)化效果,這個過程需要管理員不斷重復(fù),以使數(shù)據(jù)庫能持續(xù)高效 的正常運行。 (一)數(shù)據(jù)庫優(yōu)化的目標(biāo)1.消除數(shù)據(jù)庫瓶頸Oracle的優(yōu)化的一個重要目標(biāo)就是消除數(shù)據(jù)庫瓶頸,這些瓶頸有的可能是原來 存在的,有的是隨著運行環(huán)境的變化

6、如并發(fā)用戶的徒然增加而顯現(xiàn)出來的,所以 數(shù)據(jù)庫管理員在發(fā)現(xiàn)性能瓶頸時及時進(jìn)行調(diào)整。2.盡可能提高數(shù)據(jù)處理能力為了能盡可能的提高數(shù)據(jù)庫的處理能力,減少數(shù)據(jù)庫的響應(yīng)時間,可以從如 下幾個方面考慮:提高緩沖區(qū)的命中率、減少系統(tǒng)的I/O操作、增加系統(tǒng)的連接數(shù)、 調(diào)整數(shù)據(jù)庫并發(fā)査詢的用戶數(shù)。 (二)影響數(shù)據(jù)庫性能的主要因素很多因素都可以影響ORACLE的性能,下面是一些主要的因素1.硬件:假如數(shù)據(jù)庫的硬件出現(xiàn)故障或硬件的配置不能充分滿足數(shù)據(jù)庫的 要求,會嚴(yán)重影響數(shù)據(jù)庫的性能。例如,若計算機(jī)的內(nèi)存不足,將減少ORACLE 用于存放最近訪問過的數(shù)據(jù)緩沖區(qū)空間,使得操作系統(tǒng)頻繁的執(zhí)行換頁操作,導(dǎo) 致系統(tǒng)需要額

7、外的幵銷。2.網(wǎng)絡(luò):網(wǎng)絡(luò)速度太低會降低數(shù)據(jù)庫系統(tǒng)的吞吐量,延遲用戶響應(yīng)時間。 對網(wǎng)絡(luò)環(huán)境進(jìn)行合理的優(yōu)化配置,對Web系統(tǒng)性能提高是很重要的。3.操作系統(tǒng):主要指對ORACLE數(shù)據(jù)庫所使用的操作系統(tǒng)合理的選擇, 并對其資源進(jìn)行合理配置。4.應(yīng)用程序:應(yīng)用程序的構(gòu)架、使用代碼的執(zhí)行效率以及與數(shù)據(jù)庫的連接 會影響數(shù)據(jù)庫的交互,更重要的是應(yīng)用程序中SQL語句的效率直接影響數(shù)據(jù)庫的數(shù)據(jù)處理功能。5.ORACLE配置:為了獲得對所選ORACLE系統(tǒng)最優(yōu)化的性能,需要對 ORACLE配置進(jìn)行合理的調(diào)整,這是提高數(shù)據(jù)庫性能最直接有效的方法。(三)數(shù)據(jù)庫初始化數(shù)據(jù)調(diào)整對ORACLE實例進(jìn)行調(diào)整的基本方法就是對其

8、初始化參數(shù)進(jìn)行合理配置, ORACLE的所有參數(shù)都是在Init.ora文件中配置和修改的。ORACLE9i中有797個 不同的Init.ora參數(shù),下面主要介紹與數(shù)據(jù)庫并發(fā)性能相關(guān)的一些限制系統(tǒng)資源的 參數(shù):1.DB_FILES:指定了 ORACLE能打開的數(shù)據(jù)庫文件的最大數(shù)量,這個參 數(shù)不能超過操作系統(tǒng)對數(shù)據(jù)庫文件數(shù)量的限制。2.LICENSE_MAX_SESSIONS:該參數(shù)指明了系統(tǒng)同時允許的最大用戶會 話數(shù)。當(dāng)用戶的會話數(shù)達(dá)到該參數(shù)指定的值時,只有具備RESTRICTION SESSION 權(quán)限的用戶能連接到該數(shù)據(jù)庫。3.LICENSEJ_MAX_USERS:該參數(shù)指明了管理員在數(shù)據(jù)庫

9、中能創(chuàng)建的最 大用戶數(shù)。創(chuàng)建的用戶數(shù)達(dá)到該值時,將不能創(chuàng)建新的用戶,在高并發(fā)情況下管 理員可以適當(dāng)?shù)脑黾釉搮?shù)的值。4.MAX_DUMP_FILE_SIZE:這個參數(shù)指定了跟蹤文件的最大尺寸,如果 跟蹤文件占用了太多的存儲空間,就可以修改這個參數(shù)的大小。5.OPEN_LINKS:這個參數(shù)指明了在一個會話中能打開的與遠(yuǎn)程數(shù)據(jù)庫的 最大連接數(shù),這里的連接包括數(shù)據(jù)庫連接、外部程序連接、中間件連接等,這些 連接都使用獨立的進(jìn)程。6.OPEN_LINKS_PER_INSTANCE:這個參數(shù)指定了每個數(shù)據(jù)庫實例能接 受的處于活動狀態(tài)的可遷移連接的最大數(shù)量。7.PROCESS:這個參數(shù)指定了所有能同時連接到

10、數(shù)據(jù)庫實例的操作系統(tǒng)用 戶進(jìn)程的最大數(shù)量。這個參數(shù)包括了所有后臺進(jìn)程,比如鎖進(jìn)程、作業(yè)隊列進(jìn)程 和并發(fā)執(zhí)行進(jìn)程等。在高并發(fā)用戶下可以適當(dāng)增加該參數(shù)的值。8.SESSIONS:這個參數(shù)指定了操作系統(tǒng)能創(chuàng)建的會話的最大數(shù)量。因為 每次登錄都創(chuàng)建一個會話,所以這個參數(shù)也可以有效地限制系統(tǒng)中并發(fā)用戶的最 大數(shù)量。如果沒有設(shè)置這個參數(shù),那么ORACLE將根據(jù)PROCESSES參數(shù)值確定 SESSIONS 參數(shù)的值,其計算方法是 SESSIONS= (1.1 *PROCESSES) +5。9.TRANSACTION:該參數(shù)指定了并發(fā)事務(wù)的最大數(shù)量。這個參數(shù)的值越大,SGA (System Global A

11、rea)需要的內(nèi)存也越多,此外還需要增加分配給該數(shù)據(jù)庫的回滾段數(shù)量。10.MAX_DISPATCHERS:這個參數(shù)指定了系統(tǒng)允許同時運行的調(diào)度進(jìn)程 的最大數(shù)量。11.MAX_SHARED_SERVERS:這個參數(shù)指定了系統(tǒng)允許同時運行的共享服務(wù)器進(jìn)程的最大數(shù)量。如果系統(tǒng)中出現(xiàn)的死鎖過于頻繁,就需要增大這個參數(shù) 的值。12.PARACLLE_MAX_SERVERS:這個參數(shù)指定了實例能同時運行的并行 執(zhí)行進(jìn)程和并行恢復(fù)進(jìn)程的最大數(shù)量。隨著用戶數(shù)量的增長,在創(chuàng)建實例時為這 個參數(shù)設(shè)置的值將不能滿足用戶的需求,所以應(yīng)當(dāng)增大這個參數(shù)的值。數(shù)據(jù)庫管理員可以通過ORACLE的UTLBSTAT工具和UTLE

12、STAT工具來監(jiān) 控數(shù)據(jù)庫的性能,找出系統(tǒng)的性能瓶頸,修改相關(guān)的參數(shù)使數(shù)據(jù)庫持續(xù)高效運行。(四)數(shù)據(jù)庫的內(nèi)存優(yōu)化在ORACLE數(shù)據(jù)庫中,數(shù)據(jù)存放在兩個地方:內(nèi)存和磁盤。磁盤能以較低的 費用存儲大量的數(shù)據(jù),但內(nèi)存比磁盤有更高的性能,CPU訪問內(nèi)存的速度比與磁 盤之間的I/O操作快數(shù)千倍,因此用戶希望能盡量通過內(nèi)存訪問數(shù)據(jù)。在高并發(fā)情 況下,對數(shù)據(jù)的訪問量都很大,對內(nèi)存資源的使用必然會存在很大的競爭,為了 能充分利用內(nèi)存,管理員需要適當(dāng)?shù)恼{(diào)整內(nèi)存。ORACLE實例內(nèi)存是由SGA (System Global Area)和后臺進(jìn)程組成的。 SGA 主要由 Share Pool、Date Buffer

13、 Cache、Redo Log Buffer、 Java Pool 和 Large Pool組成,下面討論各自的作用和調(diào)整方式:1.Share Pool:共享池,由 Library Cache (庫緩沖區(qū))、Date Dictionary Cache (數(shù)據(jù)字典緩沖區(qū))、Share Pool Reserved (共享內(nèi)存池預(yù)留空間)三組件組成。Library Cache:庫緩沖區(qū)中包含了最近執(zhí)行的用來共享的SQL和PL/SQL 語句。管理員通過下列語句查看庫緩沖區(qū)使用情況:SELECT namespace,reloads ” Cache Misses ”,pins Executions FRO

14、M v$librarycache;如果緩沖區(qū)錯誤 Cache Misses超過1%,則需要調(diào)整,有兩種個方式,一是盡量使用完全相同的SQL語 句,二是修改初始化參數(shù)SHARED_POOL_SIZE來增加庫緩沖區(qū)內(nèi)存。DateDictionary Cache:數(shù)據(jù)字典緩存區(qū)包含了一系列的列表和視圖,在執(zhí) 行SQL語句時ORACLE就是通過它來檢查哪些用戶和表已經(jīng)存在,以及表的列名 和數(shù)據(jù)類型正確。管理員通過下列語句查看數(shù)據(jù)字典緩存區(qū)使用情況:SELECT parameter, getmisses ” Cache Misses ”gets , Requests ” FROM v$rowcache;

15、如果錯 誤率Cache Misses超過10%15%,應(yīng)當(dāng)增加初始化參數(shù)SHARED_POOL_SIZE。Share Pool Reserved:共享內(nèi)存池中的預(yù)留區(qū)域,它作用于需要連續(xù)內(nèi)存的大型請求。通過下列語句查看:SELECT * FROM V$SHARED_POOL_RESERVED;這個區(qū)域的大小介于整個共享內(nèi)存池空間的5%50%之間。2.Date Buffer Cache:數(shù)據(jù)庫緩沖區(qū)用來緩存應(yīng)用程序用戶最近訪問過的 數(shù)據(jù)塊,用戶對數(shù)據(jù)庫的修改都是在數(shù)據(jù)庫緩沖區(qū)中實現(xiàn)的。用戶對該區(qū)數(shù)據(jù)的 訪問非常頻繁,所以應(yīng)當(dāng)分配足夠的內(nèi)存空間,來減少磁盤I/O操作,提高數(shù)據(jù)庫 性能。通過下列語句

16、查看該區(qū)的統(tǒng)計數(shù)據(jù):SELECT name, value FROM v$sysstat WHERE name IN ( db block gets,consistent gets , physical reads);可用下 列公式計算緩沖區(qū)的命中率:Cache Hit Ratio=l-(PHYSICAL READS/(DB BLOCK GETS+CONSTENT GETS),如果命中率低于70%或80%,可調(diào)整初始化參數(shù) DB_CACHE_SIZE增加數(shù)據(jù)庫緩沖區(qū)的內(nèi)存空間。3.Redo Log Buffer:重做日志緩沖區(qū)用來存放由于發(fā)生錯誤導(dǎo)致需要重做 用戶的事務(wù)所需要的信息??赏ㄟ^如下語

17、句查看該區(qū)信息:SELECT name,value FROM v$sysstat WHERE name= redo buffer allocation retries;如果 redo buffer allocation retries的值不為了零,那么需要將初始化參數(shù)LOG_BUFFER的大小增加 5%10%,直到該值接近零為止。4.Java Pool:緩存與Java相關(guān)的會話數(shù)據(jù),默認(rèn)值20M,取值范圍是1M 到1G。rade推薦,對于有Java的應(yīng)用,將這個值設(shè)到50M或者更大??梢酝ㄟ^ 下列語句查看:Select * From V$sgastat Where Pool = java po

18、ol ;如果發(fā)現(xiàn)未使 用內(nèi)存很大或者不斷增加,表示Java池可能分配了太多的內(nèi)存,如果未使用內(nèi)存 很小或者不斷減少,表示可能需要加大Java池的內(nèi)存。改進(jìn)Java池的性能主要 是增大JAVA_POOL_SIZE這個參數(shù)。5.Large Pool:共享池除了用于緩存SQL外,還有用于容納一些特殊用途 的數(shù)據(jù),當(dāng)這些選項被使用后,共享池的命中率可能會下降很多,為了解決這個 問題,Oracle提供一個新的內(nèi)存區(qū)域來存放這些數(shù)據(jù),這就是大池;用 LARGE_POOL_SIZE這個參數(shù)來配置大池,這個參數(shù)默認(rèn)值是零,可選值在600K 到2G之間,一旦配置了大池,Oracle會自動使用大池來緩存上面提到的

19、數(shù)據(jù);可 以使用下面的查詢看到大池己使用和未使用的內(nèi)存:Select * From V$sgastat Where Pool =large pool;持續(xù)觀察上面的查詢,如果發(fā)現(xiàn)未使用內(nèi)存很大或者不斷增加, 表示大池可能分配了太多的內(nèi)存,如果未使用內(nèi)存很小或者不斷減少,表示可能 需要加大大池的內(nèi)存。三、Web應(yīng)用程序的設(shè)計與優(yōu)化根據(jù)統(tǒng)計,對網(wǎng)絡(luò)、硬件、操作系統(tǒng)、數(shù)據(jù)庫參數(shù)進(jìn)行優(yōu)化所獲得的性能 提升,全部加起來只占數(shù)據(jù)庫系統(tǒng)性能提升的40%左右,其余的60%數(shù)據(jù)庫系統(tǒng) 性能提升來自對應(yīng)用程序的優(yōu)化。許多優(yōu)化專家認(rèn)為,對應(yīng)用程序的優(yōu)化可以得 到80%的系統(tǒng)性能的提升。應(yīng)用程序的優(yōu)化通常可分為以下個

20、方面:流程、源代 碼和SQL語句、緩存的使用。 (一)流程優(yōu)化簡介在Web系統(tǒng)的設(shè)計中最關(guān)鍵的就是應(yīng)用程序的流程設(shè)計,所謂流程就是指從 下訂單到交貨或提供服務(wù)所完成的一系列操作活動,它跨越不同的智能部門,從 整體上考慮問題。良好設(shè)計的流程可以優(yōu)化作業(yè)過程、縮短事務(wù)完成周期,一段 時間內(nèi)用戶提交的事務(wù)完成數(shù)量相應(yīng)增加,用戶操作感受得到改善,同時系統(tǒng)的 并發(fā)量也得到提高;相反流程設(shè)計有誤的系統(tǒng),使得事務(wù)操作流程復(fù)雜,事務(wù)執(zhí) 行的某一環(huán)節(jié)容易出現(xiàn)問題,事務(wù)完成周期延長。嚴(yán)重的后果是操作失敗的用戶 重復(fù)登錄和提交,形成待處理事務(wù)不斷積累的惡性循環(huán),最終導(dǎo)致系統(tǒng)崩潰。在現(xiàn)階段流程優(yōu)化逐漸成為熱點問題,目

21、前中國最成功的案例是聯(lián)想的流程 優(yōu)化,它通過新的計算機(jī)系統(tǒng)對原業(yè)務(wù)的重新梳理,極大的提高了公司生產(chǎn)的 效率。流程優(yōu)化即流程再造的概念最早起源與麻省理工學(xué)院在1984到1989年間進(jìn) 行的一項名為“20世紀(jì)90年代的管理”。1993年,邁克爾哈默和詹姆斯錢皮共同創(chuàng)作的流程再造給出了具體的定義,流程再造就是:“對企業(yè)的流程進(jìn)行根本 性再思考和徹底性再設(shè)計、從而獲得在成本、質(zhì)量、服務(wù)和速度等方面業(yè)績的戲 劇性的改善”。對Web系統(tǒng)而言最重要的是找出流程設(shè)計的缺陷,可以從管理層和 技術(shù)層兩方面對流程進(jìn)行優(yōu)化,管理層方面指對Web系統(tǒng)的操作方式和運行的規(guī) 劃,技術(shù)層方面指Web系統(tǒng)在技術(shù)可行性方面的設(shè)計

22、。以下通過分析奧運售票系統(tǒng) 的癱瘓原因,提出一種流程方面改進(jìn)方式。 (二)代碼的優(yōu)化在許多項目中,功能測試成功的程序代碼在系統(tǒng)接受高并發(fā)訪問的情況下就會出現(xiàn)異?;騜ug,因為在這些代碼中往往隱藏一些潛在危險,如果沒有進(jìn)行仔細(xì) 的檢查和優(yōu)化會導(dǎo)致整個系統(tǒng)運行的不穩(wěn)定。Java語言是現(xiàn)在大部分Web系統(tǒng)的開發(fā)語言,它采用比C+更高效和簡便的 面向?qū)ο缶幊谭绞?,可以自動收集垃圾和完整的字?jié)碼檢查,最重要的是它可以 “一次編寫,處處運行”。然而Java語言的不足之處就是它的運行效率較慢,一般 來說java程序執(zhí)行速度要比C+慢10-30倍。因為java程序在運行時由類加載 器加載相關(guān)的類文件,然后ja

23、va虛擬機(jī)讀取該類文件的字節(jié),執(zhí)行相應(yīng)操作。為了保 證Java程序的可靠性和運行效率,一般采用以下優(yōu)化方式:1.選擇合適的JDK版本對于不同版本的JDK或不同廠家的JDK都可能存在著很大的差異,對于性能 優(yōu)化的程度不同。一般來說,盡可能選擇最新發(fā)布的穩(wěn)定的JDK版本。最新的穩(wěn) 定的JDK版本相對以前的JDK版本都會做一些bug的修改和性能的優(yōu)化工作。2.充分利用Java內(nèi)部對象和函數(shù)在Java程序設(shè)計中存在的一個問題是沒有充分利用Java內(nèi)部對象和函數(shù), 而是重新設(shè)計一些不必要的對象,這樣會給系統(tǒng)性能造成很大的影響,因為系統(tǒng) 不僅要花時間去編譯生成對象還要負(fù)責(zé)這些對象的垃圾回收和處理,過分的創(chuàng)

24、建 對象會消耗系統(tǒng)的大量內(nèi)存,嚴(yán)重時會導(dǎo)致內(nèi)存泄露。3.慎用異常處理Java中用try/catch來發(fā)方便用戶捕捉異常,進(jìn)行異常處理。但是如果使用不 當(dāng),也會給Java程序的性能帶來影響。假如可以用if、whik等語句來處理,那么 就盡可能的不用try/catch語句。4.合理使用內(nèi)存回收J(rèn)VM中的GC (Garbage Collection)機(jī)制可以自動對過期對象進(jìn)行及時回收, 減少了編程的困難,具有重要的意義。JVM自動回收垃圾的條件是:該對象不再 被引用;然而,JVM的GC并非十分的機(jī)智,即使對象滿足了垃圾回收的條件也 不一定會被立即回收,我們也不能直接調(diào)用GC執(zhí)行,只能采用System

25、.gc()來建 議垃圾收集器,或手動把對象的應(yīng)用置成null,使內(nèi)存盡快釋放。 (三)SQL語句的優(yōu)化在Web系統(tǒng)中,SQL語句的執(zhí)行效率是影響應(yīng)用程序執(zhí)行效率的關(guān)鍵因素。 調(diào)整不良的SQL語句將以低效的方式訪問數(shù)據(jù)庫,導(dǎo)致不必要的數(shù)據(jù)掃描和大量 無用數(shù)據(jù)在網(wǎng)絡(luò)中傳輸,造成Web系統(tǒng)的訪問效率下降和并發(fā)訪問量的減少。所 以為了獲得性能優(yōu)化的應(yīng)用程序,必須調(diào)整和優(yōu)化SQL語句。我們通過分析SQL 語句的執(zhí)行過程,總結(jié)出一些SQL語句優(yōu)化的規(guī)則。 對于ORACLE數(shù)據(jù)庫,執(zhí)行一條SQL語句主要有下列步驟:1.創(chuàng)建游標(biāo)任何SQL語句在執(zhí)行時都會創(chuàng)建一個游標(biāo),大多數(shù)應(yīng)用中,游標(biāo)是自動創(chuàng)建 的,也可以顯

26、式的創(chuàng)建游標(biāo),比如在存儲過程中。2.解析SQL語句并分析SQL執(zhí)行計劃這一步是對SQL語句進(jìn)行語法分析,但不是必需的,如果在共享內(nèi)存池的共 享SQL區(qū)域中己經(jīng)存在完全相同的SQL語句則可以避免再次解析,這也是SQL 語句優(yōu)化的重要依據(jù)。SQL語句的語法分析包括下列操作:翻譯該SQL語句,并 驗證它是否合法;實現(xiàn)數(shù)據(jù)字典的查找,以驗證是否符合表和列的定義,即SQL 語句中的表面和列名是存在的;在所要求的對象上獲取語法分析鎖,保證在執(zhí)行 對象解析期間對象定義不會發(fā)生改變;驗證執(zhí)行該語句的用戶權(quán)限是滿足的;決 定此語句最佳的執(zhí)行計劃;將它裝入共享SQL區(qū)。 3.查詢表并獲取相關(guān)數(shù)據(jù)無論是SELECT

27、語句還是INSERT、UPDATE、DELETE語句都包含查詢操作, 這些查詢主要是指獲取操作對象的一些數(shù)據(jù)。如DELETE FROM table也要首先查 詢table的相關(guān)信息。4.綁定變量管理員在執(zhí)行一條有限制條件的SQL語句時,需要定義一些變量,在綁定變 量之前,程序必須向oracle指定該變量的地址。如SELECT * FROM STUDENT WHERE NUMBER=”XH”,這里NUMBER綁定的變量就是用戶在程序中定義的變 量XH。綁定過程是參考數(shù)據(jù)庫對象實現(xiàn)的,所以在執(zhí)行變量的值改變而SQL語 句不變時無需再次綁定。5.執(zhí)行SQL語句到這里Oracle擁有執(zhí)行SQL語句所需

28、的信息與資源,因此可以運行SQL語 句了。如果該語句為SELECT查詢或INSERT語句,則不需要鎖定任何行。然而, 如果為UPDATE或DELETE語句,則該語句影響的所有行都被鎖定,防止該用戶 提交或回滾之前,別的用戶對這些數(shù)據(jù)進(jìn)行修改,這保證了數(shù)據(jù)的一致性。 6.并行執(zhí)行如果可能,以并行化方式執(zhí)行SQL語句。并行執(zhí)行是提高SQL語句的一種方 法,ORACLE 可以在 SELECT、INSERT、UPDATE、DELETE 語句中執(zhí)行相應(yīng)并行查詢操作,對于某些DDL操作,如創(chuàng)建索引、用子查詢創(chuàng)建表、在分區(qū)表上 的操作,也可以執(zhí)行并行操作。如果在SQL語句中指定該語句是并行執(zhí)行的, ORAC

29、LE將調(diào)用多個服務(wù)器進(jìn)程為同一個SQL語句工作。7.返回結(jié)果如果執(zhí)行的是SELECT語句,結(jié)果將是滿足條件的數(shù)據(jù)集,ORACLE會以循 環(huán)的方式向用戶返回數(shù)據(jù);如果是其他的SQL語句結(jié)果是TRUE或FALSE,表示 執(zhí)行的成功或是失敗。8.關(guān)閉游標(biāo)SQL語句處理的最后一個階段就是關(guān)閉初始建立的游標(biāo)。四、Web服務(wù)器的性能調(diào)整與優(yōu)化在任何一個Web系統(tǒng)中,對Web服務(wù)器的選擇和優(yōu)化配置都是至關(guān)重要的, 只有對服務(wù)器進(jìn)行合理的優(yōu)化配置才能使系統(tǒng)發(fā)揮最佳性能。一般在對Web服務(wù) 器的優(yōu)化的步驟是:系統(tǒng)容量計劃、系統(tǒng)測試、Web服務(wù)器調(diào)整。系統(tǒng)容量計劃:指評估系統(tǒng)的硬件、網(wǎng)絡(luò)帶寬、操作系統(tǒng)等因素,確定

30、應(yīng)用 系統(tǒng)的服務(wù)范圍并選擇合適的軟硬件。在高并發(fā)系統(tǒng)中容量計劃包括對系統(tǒng)最高 并發(fā)量的估計。系統(tǒng)測試:通過測試查看系統(tǒng)的功能和性能是否滿足系統(tǒng)的功能要求和容量 計劃。對系統(tǒng)并發(fā)容量的測試主要通過負(fù)載測試,即重復(fù)的大量的頁面請求來模 擬多用戶對被測系統(tǒng)的并發(fā)訪問,以此達(dá)到產(chǎn)生壓力的目的。目前的壓力測試工 具很多,從Aapache自帶的Web性能測試工具Apache Benchmark、開源的Jmeter 到大而全的商業(yè)性能測試軟件如Mercury的LoadRunner等等。任何性能測試工 具都有其優(yōu)缺點,我們可以根據(jù)實際情況挑選用最合適的工具。 Web服務(wù)器調(diào)整:針對各種服務(wù)器的特點進(jìn)行配置優(yōu)化

31、,下面主要介紹Tomcat 服務(wù)器的性能調(diào)整。 (一)Tomcat性能調(diào)整對Tomcat和應(yīng)用程序進(jìn)行壓力測試后,如果不滿足系統(tǒng)對并發(fā)量的要求,就 可以對Tomcat進(jìn)行性能調(diào)整,Tomcat性能調(diào)整包括外部環(huán)境的調(diào)整和自身的調(diào)整1.外部環(huán)境的調(diào)整調(diào)整與Tomcat性能相關(guān)的外部條件,如運行Tomcat的操作系統(tǒng)、Java虛擬 機(jī)等。操作系統(tǒng)性能調(diào)整對于Web服務(wù)器上操作系統(tǒng)的優(yōu)化,主要是對操作系統(tǒng)的相關(guān)參數(shù)進(jìn)行調(diào)整, 可以通過查看系統(tǒng)的進(jìn)程情況,盡量關(guān)閉不必要的服務(wù)進(jìn)程和刪除不必要的網(wǎng)絡(luò) 協(xié)議,確保操作系統(tǒng)的最大資源為Web應(yīng)用系統(tǒng)服務(wù)。 Java虛擬機(jī)性能調(diào)整由于Tomcat本身運行于操作

32、系統(tǒng)和Java虛擬機(jī)上,所以對Java虛擬機(jī)的選 擇和配置直接影響Tomcat的運行。Java虛擬機(jī)推薦使用Sun公司發(fā)布的JDK,并 確保所選擇的版本是較新的,因為較新的版本往往具有更好的性能。一些報告顯 示JDK1.4比JDK1.3在性能上提高了 10%20%;對Java虛擬機(jī)的設(shè)置指對其使 用內(nèi)存大小的控制,通過如下表所示的兩個參數(shù)控制內(nèi)存大小3% 。初始化堆的大小表示虛擬機(jī)在啟動時向系統(tǒng)申請的內(nèi)存的大小。在高并發(fā)的 情況下Tomcat服務(wù)器會急劇地占用很大的內(nèi)存,此時對這個參數(shù)的設(shè)置非常重要, 一般建議堆的最大值設(shè)置為可用內(nèi)存的最大值的80%。Tomcat默認(rèn)可以使用的內(nèi)存為128MB

33、,在較大型的應(yīng)用項目中,這點內(nèi)存是 不夠的,蓋要把這兩個參數(shù)調(diào)大??梢栽谖募omcat_home/bin/catalina.bat增加 如下設(shè)置:JAVA_OPTS=-Xms【初始化內(nèi)存大小】-Xmx【可以使用的最大內(nèi)存】如:JAVA_OPTS=-Xms256m-Xmx512m表示初始化內(nèi)存為256MB,可以使用 的最大內(nèi)存為512MB。內(nèi)存設(shè)置需要考慮的另一個因素是Java提供的垃圾回收機(jī)制。由于虛擬機(jī)的 堆大小決定了虛擬機(jī)花費在收集垃圾上的時間和頻度。所以如果堆的大小過大, 那么垃圾收集就會很慢,但是頻度會降低,假如系統(tǒng)花費很多的時間收集垃圾, 這時需要減小堆大小,一般來說一次完全的垃圾

34、收集不超過3-5秒。負(fù)載均衡通過應(yīng)用負(fù)載均衡技術(shù),我們可以把原來集中于一臺服務(wù)器并發(fā)量均勻分散 到多個服務(wù)器上,這樣就可以利用多臺服務(wù)器同時為大量用戶提供服務(wù)。2.Tomcat自身的調(diào)整禁用DNS查詢當(dāng)Web應(yīng)用程序要記錄客戶端的信息時,它會記錄客戶端的IP地址或者通過 域名服務(wù)器查找機(jī)器名轉(zhuǎn)換為IP地址。DNS查詢需要占用網(wǎng)絡(luò),并且包括可能從 很多很遠(yuǎn)的服務(wù)器或者不起作用的服務(wù)器上去獲取對應(yīng)的IP的過程,這樣會消耗 一定的時間。為了消除DNS查詢對性能的影響我們可以關(guān)閉DNS查詢,方式是 修改server.xml文件中的enableLookups參數(shù)值為False。調(diào)整線程數(shù)Tomcat使用

35、線程池加速響應(yīng)速度來處理請求。在Java中線程是程序運行時的 路徑,是在一個程序中與其它控制線程無關(guān)的、能夠獨立運行的代碼段。它們共 享相同的地址空間。多線程幫助程序員寫出CPU最大利用率的高效程序,使空閑 時間保持最低,從而接受更多的請求。 對參數(shù)值大小設(shè)置需要進(jìn)行多次的測試,觀察響應(yīng)時間和內(nèi)存使用情 況。在不同的機(jī)器、操作系統(tǒng)或虛擬機(jī)組合的情況下可能會不同,而且并不是所 有的Web站點的流量都是一樣的,因此沒有一刀切的方案來確定線程數(shù)的值。 (二)Web集群和負(fù)載均衡對于單臺服務(wù)器的Web系統(tǒng)來說,隨著新的應(yīng)用的發(fā)展和業(yè)務(wù)量的增加,服 務(wù)器的處理能力和I/O能力肯定會成為提供服務(wù)的瓶頸,如

36、果客戶的訪問超出了服 務(wù)器能承受的范圍,就可能出現(xiàn)嚴(yán)重的后果甚至宕機(jī)。我們可以通過的各種方法 使單臺服務(wù)器的性能最優(yōu)化,然而單臺服務(wù)器的性能比較有限,如果仍然不能滿 足要求,這時就必須考慮使用解決高負(fù)荷訪問和大并發(fā)量訪問采用的終極解決方 案集群和負(fù)載均衡。計算機(jī)集群簡稱集群是一種計算機(jī)系統(tǒng),它通過將一組松散集成的計算機(jī)軟 件和/或硬件連接起來高度緊密地協(xié)作完成計算工作。負(fù)載均衡是構(gòu)成集群的一種方案,它將多臺Web服務(wù)器以對稱的方式組成一個服務(wù)器集合,每臺服務(wù)器都有 等價的地位,然后通過某種負(fù)載分擔(dān)技術(shù)將外部發(fā)送來的請求均勻分配到對稱結(jié) 構(gòu)中的某一臺服務(wù)器上,而接收到請求的服務(wù)器獨立地回應(yīng)客戶的

37、請求。 1.負(fù)載均衡的分類目前針對不同的應(yīng)用出現(xiàn)了多種負(fù)載均衡技術(shù),下面根據(jù)負(fù)載均衡采用的設(shè) 備、應(yīng)用的地理結(jié)構(gòu)和應(yīng)用的網(wǎng)絡(luò)層來分類:軟件/硬件負(fù)載均衡軟件負(fù)載均衡是指在服務(wù)器的操作系統(tǒng)上安裝附加的軟件來實現(xiàn)負(fù)載均衡, 如在Linux操作系統(tǒng)上安裝LVS (Linux Virtual Server)軟件;硬件負(fù)載均衡是直 接在服務(wù)器和外部網(wǎng)絡(luò)之間安裝負(fù)載均衡器,一些具備第四層交換能力的局域網(wǎng) 交換機(jī),就能作為一個硬件負(fù)載均衡器,完成服務(wù)器的負(fù)載均衡。本地/全局負(fù)載均衡本地負(fù)載均衡是指對本地的服務(wù)器集群做負(fù)載均衡,全局負(fù)載均衡是指對分 別放置在不同的地理位置、有不同網(wǎng)絡(luò)結(jié)構(gòu)的服務(wù)器群之間做負(fù)載均

38、衡。基于不同網(wǎng)絡(luò)層次的負(fù)載均衡在各負(fù)載均衡方式中,針對不同的應(yīng)用需求,在OSI參考模型的第二、三、 四、七層都有相應(yīng)的負(fù)載均衡方式,負(fù)載均衡技術(shù)一般操作于網(wǎng)絡(luò)的第四層或第 七層。第四層負(fù)載均衡將外部Internet上的IP地址映射為多個內(nèi)部服務(wù)器的IP地 址,每次TCP連接請求使用其中的一個內(nèi)部地址達(dá)到負(fù)載均衡的目的;第七層負(fù) 載均衡通過對應(yīng)用層服務(wù)的控制實現(xiàn)負(fù)載均衡,適用于對HTTP服務(wù)器群的應(yīng)用, 它檢查流經(jīng)的HTTP報頭并根據(jù)報頭信息執(zhí)行負(fù)載均衡任務(wù)。 2.web集群和負(fù)載均衡技術(shù)實現(xiàn)根據(jù)負(fù)載均衡實現(xiàn)的原理不同,Web負(fù)載均衡實現(xiàn)技術(shù)可分為以下幾種基于客戶端的負(fù)載均衡這種模式是在網(wǎng)絡(luò)的客

39、戶端安裝集成了負(fù)載均衡的應(yīng)用軟件,在客戶端每次 請求連接時根據(jù)服務(wù)端的運行情況來選擇服務(wù)器。由于所有使用負(fù)載均衡的客戶 端必須安裝額外的軟件,所以這種方式使用的較少,只在一些特殊場合使用?;贒NS的負(fù)載均衡在DNS服務(wù)器中為多個不同的地址分配同一個域名,當(dāng)用戶用這個域名訪問 時,DNS服務(wù)器為這域名隨機(jī)的解析一個地址,從而使得不同的用戶訪問不同的服務(wù)器,達(dá)到負(fù)載均衡的目的。采用這種方式的缺點是,由于DNS端存在緩存, 所以當(dāng)集群中的某一服務(wù)結(jié)點失效時,它的地址在一段時間內(nèi)依然被解析給用戶, 造成部分用戶訪問失效,必須等DNS解析更新或服務(wù)器重啟才能恢復(fù)?;贜AT的負(fù)載均衡NAT (Netw

40、ork Address Translation)即網(wǎng)絡(luò)地址轉(zhuǎn)換,就是將一個已注冊的 Internet IP地址映射為多個內(nèi)部IP地址,對每次連接請求動態(tài)的轉(zhuǎn)換為一個內(nèi)部服 務(wù)器的地址,從而達(dá)到負(fù)載均衡目的。這種負(fù)載均衡方式是一種比較完善的負(fù)載 均衡技術(shù),可以通過軟件來實現(xiàn)如LVS,也可以通過硬件來實現(xiàn),如第四層交換反向代理負(fù)載均衡一般的代理方式是指用戶通過代理服務(wù)器來訪問不同的站點,而反向代理方 式是指代理服務(wù)器接收網(wǎng)絡(luò)上的連接請求,然后將請求轉(zhuǎn)發(fā)為內(nèi)部的服務(wù)器,并 將服務(wù)器得到的結(jié)果返回給客戶端。反向代理負(fù)載均衡在OSI模型的第七層實現(xiàn),它可以通過軟件方式來實現(xiàn), 如實現(xiàn)Tomcat集群的a

41、pache mod_proxy等,也可以在硬件設(shè)備上實現(xiàn)。它的缺點 是:由于代理服務(wù)器在每次用戶訪問時必須打開兩個連接,一個外部的,一個內(nèi) 部的,所以在并發(fā)請求數(shù)量特別大時代理服務(wù)器可能會成為系統(tǒng)服務(wù)的瓶頸。五、結(jié)論關(guān)于高負(fù)載高并發(fā)Web系統(tǒng)的研究也是許多高速增長的網(wǎng)站必須面臨的問 題,這樣的網(wǎng)站對系統(tǒng)的構(gòu)架設(shè)計、性能要求各個方面都有很高的要求。隨著互 聯(lián)網(wǎng)技術(shù)的不斷豐富,關(guān)于高并發(fā)Web系統(tǒng)的優(yōu)化和改進(jìn)技術(shù)也得到了很大的積 累,這些技術(shù)經(jīng)驗涉及到系統(tǒng)很細(xì)的方方面面,但是缺乏系統(tǒng)規(guī)范的總結(jié)。本文對髙并發(fā)系統(tǒng)的設(shè)計和優(yōu)化技術(shù)進(jìn)行了全面深入的研究,具體的研究和 貢獻(xiàn)如下:首先,對高并發(fā)Web系統(tǒng)的

42、發(fā)展歷程進(jìn)行分析,并總結(jié)出其發(fā)展的趨勢 和特點;在數(shù)據(jù)庫方面:分析了與數(shù)據(jù)庫性能相關(guān)的初始化參數(shù),并列出了與系 統(tǒng)并發(fā)量相關(guān)的初始化參數(shù)的調(diào)整方法;對數(shù)據(jù)庫在內(nèi)存中結(jié)構(gòu)進(jìn)行分析,給出 了具體的容量判斷標(biāo)準(zhǔn)和調(diào)整方式;總結(jié)了一些有利于提高系統(tǒng)并發(fā)量的數(shù)據(jù)庫 對象的使用方法和數(shù)據(jù)庫并發(fā)事務(wù)控制方法;另外,對當(dāng)前正在研究的內(nèi)存數(shù)據(jù) 庫進(jìn)行研究,提出了兩種內(nèi)存數(shù)據(jù)庫在高并發(fā)Web系統(tǒng)中的應(yīng)用模型;在Web應(yīng)用程序方面:對奧運售票系統(tǒng)的流程設(shè)計進(jìn)行分析和優(yōu)化,提 出了一些流程設(shè)計的注意方法;總結(jié)了程序中代碼和SQL語句的優(yōu)化方法;對 Web系統(tǒng)中應(yīng)用的緩存技術(shù)進(jìn)行了全面深入的研究;在Web服務(wù)器方面:分

43、析了Tomcat服務(wù)器調(diào)整的方法;研究了解決系 統(tǒng)高并發(fā)問題的終極方案既負(fù)載均衡技術(shù),給出了幾種常用負(fù)載均衡的分類;最后,結(jié)合一個實際的Web系統(tǒng)大學(xué)生思想測評綜合系統(tǒng),來說明 高并發(fā)系統(tǒng)具體設(shè)計過程和各種優(yōu)化方法在該系統(tǒng)中的使用,以及最終取得的效果。參考文獻(xiàn)1 林昊. 大型網(wǎng)站架構(gòu)演變和知識體系J. 程序員. 2008(11) 1 Google Architecture. . 2 Le Gruenwald,YuWei chen,Jing Huang.Effects of Update Techniques on Main Memory Database System Performance.

44、 IEEE Transactions on Knowledge and Data Engineering . 1998 3 Jason Brittain,Ian F Darwin.Tomcat:the definitive guide. . 2007 2 高張,康小軍. Apache反向代理在Web應(yīng)用中的研究與實現(xiàn)J. 電腦編程技巧與維護(hù). 2008(14) 3 王鑫,苗春雨,袁芳. Web應(yīng)用性能評測的研究與應(yīng)用J. 實驗技術(shù)與管理. 2008(08) 4 伊文斌,鄭劍. 基于LoadRunner的Web負(fù)載測試J. 江西理工大學(xué)學(xué)報. 2008(04) 5 錢宏武. 從奧運訂票系統(tǒng)癱瘓說

45、起談FastC GI與IT架構(gòu)J. 程序員. 2008(01) 6 易國洪. 內(nèi)存數(shù)據(jù)庫中恢復(fù)技術(shù)研究J. 科技廣場. 2007(03) 7 孫海霞,馬玉鳳. 負(fù)載均衡綜述J. 電腦知識與技術(shù). 2006(08) 8 楊瑞,蔡虹. 數(shù)據(jù)庫連接池原理及其JAVA實現(xiàn)J. 微型機(jī)與應(yīng)用. 2003(04) 9 李陶深,羅翌源,蒙波,嚴(yán)毅. 用存儲過程提高應(yīng)用程序執(zhí)行效率J. 微型電腦應(yīng)用. 2002(09) 10 李學(xué)軍. WebCache技術(shù)及其應(yīng)用J. 電信技術(shù). 1999(11)2 林勝利,王坤茹,孟海利編著.Java優(yōu)化編程M. 電子工業(yè)出版社, 2005 3 (美)EdwardWhale

46、n,(美)MitchellSchroeter著,高艷春等譯.Oracle性能調(diào)整與優(yōu)化M. 人民郵電出版社, 20025 何海江. 基于Web的電子郵件系統(tǒng)設(shè)計與實現(xiàn)D. 大連理工大學(xué) 2006 6 紀(jì)風(fēng). 基于劃分的分布式環(huán)境:設(shè)計模式與動態(tài)劃分D. 浙江大學(xué) 2008 7 馮青峰. 基于Java RMI的分布對象負(fù)載均衡研究與實現(xiàn)D. 西安電子科技大學(xué) 2002 8 于威. 銀證數(shù)據(jù)交換平臺通信機(jī)制的設(shè)計與實現(xiàn)D. 山東大學(xué) 2008 9 潘傳志. 遠(yuǎn)程虛擬實驗信息平臺負(fù)載均衡研究D. 華中科技大學(xué) 2004 10 吳炎飛. 基于J2ME的手機(jī)即時通信系統(tǒng)的設(shè)計與實現(xiàn)D. 大連理工大學(xué) 2007

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!