qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          捉蟲記--大容量Web應(yīng)用性能測(cè)試與LoadRunner實(shí)戰(zhàn)(連載四)

            第5章  Web性能測(cè)試方法

            良好的開始是成功的一半。小白所在公司網(wǎng)站的代碼編寫的差不多了,安放服務(wù)器的機(jī)房也已經(jīng)找好,只要等第4章選購(gòu)的服務(wù)器正式到位,就可以上機(jī)架、部署測(cè)試版本網(wǎng)站進(jìn)行試運(yùn)行了。離部署測(cè)試版的日子還有一段時(shí)間,小白對(duì)現(xiàn)在這段短暫的空閑,做了如下的安排:

            首先要熟悉性能測(cè)試的幾種方法。

            在第4章CPU和硬盤的基礎(chǔ)上,熟悉常見操作系統(tǒng)的性能計(jì)數(shù)器特點(diǎn),并在自己的電腦上進(jìn)行一次手工的性能測(cè)試。

            熟悉常用的幾種性能測(cè)試軟件,聽說(shuō)有Load Runner等,從中選擇一個(gè)比較好的,畢竟這也是部門經(jīng)理在第4章開頭布置的任務(wù)之一。

            這3點(diǎn)內(nèi)容將分別在從本章開始的第5章、第6章和第7章中講述。現(xiàn)在就開始介紹Web性能測(cè)試的一些方法。

            5.1  Web性能測(cè)試的目的與方法

            本節(jié)首先介紹測(cè)試的目的,然后會(huì)介紹最常見的9種Web性能測(cè)試的方法,希望讀者通過這些方法,對(duì)性能測(cè)試有深度的認(rèn)識(shí)。

            5.1.1  Web性能測(cè)試的目的

            進(jìn)行Web性能測(cè)試的目的很簡(jiǎn)單:

            獲得Web應(yīng)用的性能表現(xiàn)情況。

            發(fā)現(xiàn)并驗(yàn)證、修改Web應(yīng)用中影響性能的Bug

            為網(wǎng)站性能優(yōu)化提供數(shù)據(jù)參考。

            實(shí)際所做的一切測(cè)試工作都要圍繞這3個(gè)目的來(lái)進(jìn)行,這樣才不會(huì)在出現(xiàn)這樣或那樣困難的時(shí)候迷失方向,導(dǎo)致資源浪費(fèi)。

            5.1.2  Web性能測(cè)試方法的先決條件

            對(duì)于性能測(cè)試方法,在某種意義上說(shuō),就是性能測(cè)試的分類。不同的性能測(cè)試分類,決定了需要采用不同的性能測(cè)試方法。Web性能測(cè)試也是如此。

            不過在介紹具體的分類或者方法之前,有必要強(qiáng)調(diào)一下進(jìn)行Web性能測(cè)試的先決條件。其實(shí),從前面的章節(jié),我們已經(jīng)能夠發(fā)現(xiàn),進(jìn)行Web性能測(cè)試的先決條件有這樣幾條:

            一個(gè)穩(wěn)定的Web應(yīng)用版本。該版本必須與投入生產(chǎn)環(huán)境的版本極其類似。這一點(diǎn)的原因在前文也介紹過,對(duì)一個(gè)最終不會(huì)上線運(yùn)行的版本,或者功能沒有完成的版本進(jìn)行性能測(cè)試是沒有多大意義的,除非為了演練性能測(cè)試方法本身。

            性能測(cè)試所處的測(cè)試環(huán)境,必須獨(dú)立于開發(fā)環(huán)境,并且盡量類似于實(shí)際生產(chǎn)環(huán)境。這一點(diǎn)也很重要,測(cè)試環(huán)境必須是可比較的,大致?lián)碛邢嗤膮⒄瘴铮ū热鏑PU、硬盤速度等),這樣的測(cè)試結(jié)果才更有參考價(jià)值。

            當(dāng)然,小白在今后這3章所做的性能測(cè)試,是為了在個(gè)人電腦上方便快速地了解性能測(cè)試方法,熟悉性能測(cè)試軟件,并不打算將測(cè)試報(bào)告發(fā)送出去形成結(jié)果。對(duì)于小白和我們一般的初學(xué)者,這不失是一個(gè)好的學(xué)習(xí)方法。但是,在真正的性能測(cè)試工作中,對(duì)于上面的兩個(gè)Web性能測(cè)試(也可以推廣到所有的軟件性能測(cè)試上面),一定要記牢。

            下面將介紹Web性能測(cè)試方法的具體內(nèi)容。

            5.1.3  Web性能測(cè)試的詳細(xì)分類

            在第2章中曾粗略地講到性能測(cè)試包含性能測(cè)試方法(狹義的)、壓力測(cè)試等,現(xiàn)在可以將絕大部分文檔中提到的眾多分類列舉出來(lái)了,它們是如下9種:

            性能測(cè)試(Performance Testing);

            壓力測(cè)試(Stress Testing);

            負(fù)載測(cè)試(Load Testing);

            并發(fā)測(cè)試(Concurrency Testing);

            配置測(cè)試(Configuration Testing);

            耐久度測(cè)試(Endurance Testing);

            可靠性測(cè)試(Reliability Testing);

            尖峰沖擊測(cè)試(Spike Testing);

            失敗恢復(fù)測(cè)試(Failover Testing)。

            看起來(lái)分類很多,但它們實(shí)際上都是為了性能測(cè)試的目的:考察應(yīng)用對(duì)于系統(tǒng)性能的影響狀況。因此,它們的區(qū)別只在于考察系統(tǒng)性能的角度不同。角度決定方法,這正是本節(jié)開始時(shí)將性能測(cè)試方法和性能測(cè)試分類基本劃等號(hào)的原因。

           5.1.4  性能測(cè)試(Performance Testing)

            在介紹性能測(cè)試具體方法之前,首先說(shuō)明一下性能測(cè)試(總稱)和性能測(cè)試(方法)的區(qū)別。我們也分別把它們叫做廣義性能測(cè)試和狹義性能測(cè)試。

            【廣義性能測(cè)試與狹義性能測(cè)試】

            廣義性能測(cè)試包括前述所有分類或方法,以考察Web應(yīng)用對(duì)于系統(tǒng)性能影響狀況為目的的測(cè)試活動(dòng)。而狹義性能測(cè)試則是其中的一個(gè)小分類,為了區(qū)別廣義性能測(cè)試中的其他分類。這種測(cè)試也是廣義性能測(cè)試中最基本的方法之一。利用第一章所講過的維恩圖,廣義性能測(cè)試和狹義性能測(cè)試之間的關(guān)系如圖5-1所示。

          圖5-1  廣義狹義性能測(cè)試的包含關(guān)系

            聽起來(lái)有些混淆,但對(duì)于我們要從事實(shí)際工作的人來(lái)說(shuō),名詞并不重要,只需要知道有性能測(cè)試這樣的總稱(廣義),還有性能測(cè)試這樣的方法(狹義)即可。在看相關(guān)參考文獻(xiàn)的時(shí)候,根據(jù)上下文一般能很容易判斷出當(dāng)前所指的性能測(cè)試是狹義還是廣義。

            本書中凡是"Web性能測(cè)試"這樣的字眼,都是指的廣義性能測(cè)試,特此說(shuō)明。

            【性能測(cè)試】

            性能測(cè)試(英文名稱也是Performance Testing)是這樣一種方法:它通過模擬實(shí)際生產(chǎn)環(huán)境中運(yùn)行的軟件平均業(yè)務(wù)量,測(cè)試系統(tǒng)的性能是否滿足設(shè)計(jì)說(shuō)明書中的性能要求。性能測(cè)試方法在所有前述9種方法中是一種最基本、最常見的測(cè)試方法。這就是說(shuō),它是實(shí)施性能測(cè)試所必須進(jìn)行的一種方法。

            5.1.5  小白的第一次性能測(cè)試

            為了盡快熟悉這種方法,小白決定利用自己電腦和公司網(wǎng)站的測(cè)試版本來(lái)做一次手工性能測(cè)試的實(shí)踐。

            一般來(lái)說(shuō),在網(wǎng)站尚未上線的期間內(nèi),網(wǎng)站的技術(shù)部門都會(huì)維護(hù)一個(gè)或幾個(gè)網(wǎng)站的測(cè)試版本,方便開發(fā)工程師和測(cè)試工程師開展工作。即便是網(wǎng)站上線以后,也會(huì)繼續(xù)維護(hù)這樣的網(wǎng)站,以方便網(wǎng)站每日更新時(shí)的調(diào)試,待沒有問題后再正式上傳到生產(chǎn)環(huán)境中。這種結(jié)構(gòu)如圖5-2所示。

          圖5-2  網(wǎng)站正式版本與測(cè)試版本關(guān)系示意

            對(duì)于小白的第一次性能測(cè)試,該如何選擇測(cè)試所針對(duì)的網(wǎng)站版本呢?有兩點(diǎn)需要考慮:

            由于網(wǎng)站正式版本尚未發(fā)布,目前還沒有正式版本可供選擇。

            即使正式版本發(fā)布也不能直接使用它來(lái)測(cè)試(因?yàn)檫@樣會(huì)影響用戶的使用)。

            根據(jù)以上兩點(diǎn),選擇圖5-2中的穩(wěn)定測(cè)試版本。

            截至目前為止,小白所知道的僅僅是打開網(wǎng)站的響應(yīng)時(shí)間,所以他想從這個(gè)時(shí)間入手,來(lái)評(píng)估一下網(wǎng)站測(cè)試版本的性能。他是這樣進(jìn)行測(cè)試的:

            打開瀏覽器,輸入網(wǎng)站測(cè)試版本的網(wǎng)址,按下Enter鍵,并記錄此時(shí)的機(jī)器時(shí)間。

            在網(wǎng)站全部打開后再記錄一次當(dāng)前機(jī)器時(shí)間。

           兩者相減,得到一個(gè)時(shí)間間隔。

            重復(fù)多次,最后計(jì)算平均時(shí)間間隔。

            對(duì)比網(wǎng)站的設(shè)計(jì)說(shuō)明書,在那里一般都會(huì)有以響應(yīng)時(shí)間為標(biāo)準(zhǔn)的性能要求。

            根據(jù)兩者數(shù)值的比較,決定網(wǎng)站測(cè)試版本的性能好壞。

            【有關(guān)時(shí)間的記錄】

            在性能測(cè)試過程中,往往免不了進(jìn)行當(dāng)前時(shí)間的記錄,或者計(jì)算兩個(gè)時(shí)間的差值。由于Windows系統(tǒng)任務(wù)欄中的時(shí)間數(shù)字較小,讀者可以在互聯(lián)網(wǎng)中尋找一些顯示桌面時(shí)鐘的免費(fèi)軟件(顯示時(shí)間最好可以包含秒數(shù)以達(dá)到精度要求)。當(dāng)然,這樣的時(shí)間記錄是依賴于肉眼,精度依然不夠高。可以通過編程的方法來(lái)獲得更精確的時(shí)間。

            雖然小白所列出的上述測(cè)試過程看起來(lái)與用戶瀏覽網(wǎng)站沒有什么不同,而且,也看不到使用哪些高級(jí)的工具軟件,但它確實(shí)是一次人工的性能測(cè)試。性能測(cè)試真的都是這么簡(jiǎn)單嗎?小白非常好學(xué),進(jìn)而思考了下列幾個(gè)問題。

            5.1.6  小白的思考

            在第3章中我們已經(jīng)知道響應(yīng)時(shí)間,并且知道用戶所感覺的響應(yīng)時(shí)間并不很準(zhǔn)確。那么,小白這次測(cè)試應(yīng)用了計(jì)算機(jī)時(shí)間等"高科技"計(jì)時(shí)裝備,是否就意味著準(zhǔn)確呢?

            1.響應(yīng)時(shí)間的問題

            其實(shí),對(duì)于感覺和記時(shí)兩種方法,響應(yīng)時(shí)間數(shù)值都是差不多的。那么,訪問Web應(yīng)用,多長(zhǎng)的響應(yīng)時(shí)間說(shuō)明性能比較好呢?實(shí)際上依賴于幾條標(biāo)準(zhǔn)。

            軟件設(shè)計(jì)說(shuō)明書中的標(biāo)準(zhǔn):根據(jù)用戶的需求,一般都會(huì)列出。

            不成文的習(xí)慣標(biāo)準(zhǔn):如果在設(shè)計(jì)說(shuō)明書中沒有列出,那么可以參考國(guó)外的業(yè)內(nèi)公認(rèn)標(biāo)準(zhǔn),即3/5/10原則。

            在3秒鐘之內(nèi),頁(yè)面給予用戶響應(yīng)并有所顯示被認(rèn)為是"不錯(cuò)的"。

            在3~5秒鐘內(nèi),頁(yè)面給予用戶響應(yīng)并有所顯示被認(rèn)為是"好的"。

            而5~10秒鐘是可以"勉強(qiáng)接受的"。

            超過10秒鐘就有點(diǎn)讓人不耐煩了,用戶很可能不會(huì)繼續(xù)等待下去。

            在盡可能合理的情況下,響應(yīng)時(shí)間應(yīng)該越快越好。

            另外,響應(yīng)時(shí)間包含了網(wǎng)絡(luò)傳輸數(shù)據(jù)的時(shí)間、DNS記錄查找時(shí)間和真正由網(wǎng)站服務(wù)器處理的時(shí)間,因此,遇到時(shí)間間隔很長(zhǎng)的情況時(shí),首先要排除前兩個(gè)時(shí)間的影響。

            另外,還有很重要的兩點(diǎn)不能忽略:

            小白只是以一個(gè)用戶的身份去訪問網(wǎng)站的測(cè)試版本,而網(wǎng)站一旦投入使用,真實(shí)情況是會(huì)有上萬(wàn)人同時(shí)訪問它,那么響應(yīng)時(shí)間還會(huì)有現(xiàn)在這么好嗎?

            小白是在公司內(nèi)部進(jìn)行測(cè)試的,要知道公司內(nèi)部的局域網(wǎng)一般都是百兆、千兆網(wǎng),速度非常快;如果換到家里,用ADSL之類的上網(wǎng)條件,響應(yīng)時(shí)間還會(huì)如此快嗎?

            這幾個(gè)問題都說(shuō)明小白的這次性能測(cè)試確實(shí)欠缺很多因素。不過,這正是我們?cè)谙旅娴恼鹿?jié)要學(xué)習(xí)的。

            2.測(cè)試場(chǎng)所和指標(biāo)的問題

            小白在進(jìn)行測(cè)試的時(shí)候,記錄的是自己電腦上的時(shí)間間隔,從它數(shù)值的大小來(lái)間接判斷服務(wù)器端性能的好壞。那么,能不能直接獲得服務(wù)器端的性能數(shù)據(jù),豈不是更加精確嗎?

            是的,完全可以。響應(yīng)時(shí)間所帶給人的只是性能好壞的大概印象,如果要更加專業(yè)的測(cè)試性能,需要獲取服務(wù)器端的指標(biāo)數(shù)據(jù),我們管這些指標(biāo)叫做性能計(jì)數(shù)器(Performance Counter),在第6章,我們將重點(diǎn)介紹它們的單個(gè)含義以及獲取方法。

            綜上所述,小白基于目前理解的第一次性能測(cè)試有了結(jié)果,雖然過程遠(yuǎn)遠(yuǎn)不夠,但也讓我們體會(huì)到了性能測(cè)試所關(guān)注的要點(diǎn),進(jìn)行的大致過程。簡(jiǎn)單地說(shuō),Web應(yīng)用的性能測(cè)試方法,就是通過模擬若干用戶對(duì)于網(wǎng)站的訪問,獲得性能計(jì)數(shù)器和其他指標(biāo)的數(shù)據(jù),再分析它們以進(jìn)行性能評(píng)估,使得關(guān)注性能測(cè)試的各方對(duì)系統(tǒng)性能有基本的認(rèn)識(shí)。

            5.1.7  壓力測(cè)試(Stress Testing)

            相對(duì)于前面性能測(cè)試方法的普通,壓力測(cè)試(Stress Testing)方法可以說(shuō)走了一個(gè)極端。它測(cè)試Web應(yīng)用在事先規(guī)定的某種飽和狀態(tài)下,比如CPU處于75%利用率的情況下,系統(tǒng)是否還具備處理業(yè)務(wù)的能力,或者系統(tǒng)會(huì)發(fā)生什么樣的狀況(出現(xiàn)錯(cuò)誤?系統(tǒng)宕機(jī)?等)。

            一句話,壓力測(cè)試是考驗(yàn)一個(gè)系統(tǒng)的抗壓能力的:在當(dāng)前比較大的壓力下,它能否承受得住。壓力測(cè)試的目的是為了測(cè)試Web應(yīng)用的穩(wěn)定性。

            【壓力測(cè)試與體操比賽】

            在體育比賽場(chǎng)上我們可以看到生活中的壓力測(cè)試,例如體操比賽中的規(guī)定動(dòng)作環(huán)節(jié)。場(chǎng)上選手在比賽時(shí),其動(dòng)作組合必須包含組委會(huì)所設(shè)定的所有規(guī)定動(dòng)作,如圖5-3所示的經(jīng)典規(guī)定動(dòng)作--托馬斯全旋。通過在這樣的條件下比賽,裁判來(lái)考察運(yùn)動(dòng)員的完成質(zhì)量,由于動(dòng)作難度系數(shù)基本一致,重點(diǎn)將是完成質(zhì)量的穩(wěn)定性。通過這個(gè)類比,壓力測(cè)試就很好理解了。

          圖5-3  類似壓力測(cè)試的體操規(guī)定動(dòng)作比賽(圖中動(dòng)作為托馬斯全旋)

            壓力測(cè)試方法有如下的兩個(gè)特點(diǎn):

            (1)壓力測(cè)試方法的目的是測(cè)試系統(tǒng)(本書中為Web應(yīng)用)的穩(wěn)定性。人們對(duì)很多軟件系統(tǒng)都有這樣一個(gè)經(jīng)驗(yàn):當(dāng)系統(tǒng)處于較大壓力的時(shí)候,如果還能夠維持正常工作,那么,就能說(shuō)明它在壓力不大的一般條件下,具有長(zhǎng)時(shí)間正常工作的能力。從這里可以看出,壓力測(cè)試方法有一點(diǎn)“一葉知秋”、“以小見大”的含義在其中。

            (2)壓力測(cè)試方法的具體操作過程是通過對(duì)系統(tǒng)施加負(fù)荷(模擬用戶對(duì)Web應(yīng)用的訪問等),使系統(tǒng)的資源占用保持在一個(gè)事先約定的水平(比如前文所提到的CPU占用率75%),來(lái)檢驗(yàn)此時(shí)系統(tǒng)的表現(xiàn)。測(cè)試的重點(diǎn)在于系統(tǒng)對(duì)于用戶的響應(yīng)時(shí)間變化、系統(tǒng)是否出現(xiàn)錯(cuò)誤甚至崩潰等。

            5.1.8  負(fù)載測(cè)試(Stress Testing)簡(jiǎn)介

            在實(shí)際工作中,負(fù)載測(cè)試方法和壓力測(cè)試方法往往被放在一起談?wù)摚虼撕苋菀谆煜鋵?shí)它們的區(qū)別是很明顯的。

            【負(fù)載測(cè)試方法】

            負(fù)載測(cè)試(Load Testing)方法通過在被測(cè)試系統(tǒng)上不斷增加負(fù)荷,直到事先選定的性能指標(biāo)(比如響應(yīng)時(shí)間),變?yōu)椴豢山邮芑蛳到y(tǒng)的某類資源使用已經(jīng)達(dá)到飽和狀態(tài)。負(fù)載測(cè)試方法實(shí)際就是一個(gè)不斷加壓,直到找到系統(tǒng)不可用臨界點(diǎn)的過程,形象地說(shuō),那一點(diǎn)正是“強(qiáng)弩之末”。

           【負(fù)載測(cè)試方法與舉重比賽】

            在5.1.7節(jié)我們把壓力測(cè)試和體操比賽的規(guī)定動(dòng)作相類比,在這里我們將負(fù)載測(cè)試方法類比為舉重比賽,如圖5-4所示。在比賽中,選手不斷地增加重量,挑戰(zhàn)自己的極限,直到杠鈴加到某一個(gè)重量時(shí),3次試舉都失敗。這一重量就是舉重比賽的最終結(jié)果。

          圖5-4  舉重比賽與負(fù)載測(cè)試有相同之處

            通過負(fù)載測(cè)試方法,我們可以發(fā)現(xiàn)系統(tǒng)的處理極限點(diǎn)在哪里。

            5.1.9  負(fù)載測(cè)試的特點(diǎn)

            負(fù)載測(cè)試方法有如下幾個(gè)特點(diǎn)。

            (1)它的主要目的在于找到系統(tǒng)處理能力的極限,為系統(tǒng)進(jìn)一步優(yōu)化做參考。另外,這種測(cè)試也可以用來(lái)比較不同的優(yōu)化方法對(duì)于性能極限的提升,因此也可以稱之為可擴(kuò)展性測(cè)試(Scalability Testing)。這個(gè)名詞可以用圖5-5清晰地表述出來(lái)。

            在圖5-5中,2條曲線分別代表兩種優(yōu)化方法經(jīng)歷負(fù)載測(cè)試的結(jié)果。A方法的性能極限在A點(diǎn),B方法的性能極限在B點(diǎn)。根據(jù)負(fù)載測(cè)試的定義,比A、B兩點(diǎn)值小的部分都是系統(tǒng)的安全運(yùn)行區(qū)間。由于B的數(shù)值要大于A,說(shuō)明采用B方法優(yōu)化,系統(tǒng)的可擴(kuò)展性提高了。

          圖5-5  負(fù)載測(cè)試用于優(yōu)化方法的比較:B好于A

            (2)負(fù)載測(cè)試方法的操作是一個(gè)不斷加壓的過程。負(fù)載測(cè)試方法是一個(gè)"性能指標(biāo)記錄--增加負(fù)荷"的操作循環(huán),直到預(yù)定被關(guān)注的性能指標(biāo)不再令人滿意。這個(gè)極限點(diǎn)在測(cè)試結(jié)果中的表示類似這樣的形式:"在給定條件下當(dāng)前Web應(yīng)用將最多允許10000個(gè)并發(fā)用戶訪問"、"在給定條件下當(dāng)前Web應(yīng)用最多能夠在1分鐘內(nèi)處理1000次用戶對(duì)數(shù)據(jù)庫(kù)的修改"等。常見的在負(fù)載測(cè)試方法中被關(guān)注的性能指標(biāo)包括:Web應(yīng)用的響應(yīng)時(shí)間、Web服務(wù)器平均CPU利用率等,它們的具體數(shù)值需要根據(jù)實(shí)際情況來(lái)調(diào)整。

            (3)負(fù)載測(cè)試方法要考慮被測(cè)Web應(yīng)用的實(shí)際業(yè)務(wù)負(fù)荷量與正確的使用場(chǎng)景,以保證測(cè)試結(jié)果具有參考價(jià)值。

            【實(shí)戰(zhàn)演練:教訓(xùn)】

            在這方面,筆者的同事曾經(jīng)有一個(gè)教訓(xùn)。有一個(gè)網(wǎng)站,可以通過Web直接訪問,也可以通過RSS進(jìn)行訂閱。在網(wǎng)站發(fā)布之前,網(wǎng)站技術(shù)部門的所有工程師都認(rèn)為絕大部分用戶都是通過Web來(lái)訪問的,因此,在時(shí)間緊迫的情況下,重點(diǎn)測(cè)試了Web訪問的性能,對(duì)于RSS相關(guān)代碼測(cè)試的就很少。結(jié)果在網(wǎng)站上線之后,他們驚奇地發(fā)現(xiàn),大部分用戶訪問都是通過RSS來(lái)完成的,因?yàn)樨?fù)載測(cè)試做的很簡(jiǎn)略,結(jié)果每過多久服務(wù)器就被拖的幾乎無(wú)法訪問了。可見,對(duì)于負(fù)載測(cè)試,乃至整個(gè)性能測(cè)試而言,模擬真實(shí)的應(yīng)用場(chǎng)景是多么的關(guān)鍵。

            (未完待續(xù))

          相關(guān)鏈接:

          捉蟲記--大容量Web應(yīng)用性能測(cè)試與LoadRunner實(shí)戰(zhàn)(連載一)

          捉蟲記--大容量Web應(yīng)用性能測(cè)試與LoadRunner實(shí)戰(zhàn)(連載二)

          捉蟲記--大容量Web應(yīng)用性能測(cè)試與LoadRunner實(shí)戰(zhàn)(連載三)

          posted on 2013-05-28 10:35 順其自然EVO 閱讀(373) 評(píng)論(0)  編輯  收藏 所屬分類: loadrunner性能測(cè)試web 前端性能測(cè)試

          <2013年5月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 盱眙县| 英山县| 庄河市| 梁河县| 鄯善县| 天峨县| 汝阳县| 肃南| 安达市| 沙坪坝区| 温宿县| 多伦县| 怀来县| 洱源县| 蓬安县| 勐海县| 铜梁县| 漳浦县| 桓台县| 榆社县| 柳林县| 苍南县| 辉南县| 无极县| 改则县| 芦溪县| 南皮县| 仁怀市| 弋阳县| 略阳县| 东乡县| 周至县| 黄石市| 定兴县| 惠州市| 石林| 呼伦贝尔市| 信阳市| 西贡区| 满洲里市| 望城县|