999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Apache性能測(cè)試工具開(kāi)發(fā)與研究

2011-01-01 00:00:00鄧晶,張海全,王志堅(jiān)
電腦知識(shí)與技術(shù) 2011年4期

摘要:根據(jù)對(duì)Apache 中的測(cè)試工具ApacheBench 的分析,采用了CMMI3中的軟件開(kāi)發(fā)方法,利用多線程模擬多個(gè)用戶實(shí)現(xiàn)了多用戶并發(fā)測(cè)試,并利用管道技術(shù)對(duì)多個(gè)線程進(jìn)行操作,實(shí)現(xiàn)數(shù)據(jù)共享。設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)新的測(cè)試工具,可以實(shí)現(xiàn)對(duì)符合HTTP協(xié)議的網(wǎng)站性能進(jìn)行測(cè)試。

關(guān)鍵詞:性能測(cè)試;管道;多線程

中圖分類(lèi)號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2011)04-0809-04

The Development and Research On Apache Performance Testing Tools

DENG Jing1, ZHANG Hai-quan2, WANG Zhi-jian3

(1.Dept. of Computer Engineering, Nanjing Institute of Technology, Nanjing 211167, China; 2.Dept. of Computer Engineering, Hohai University, Nanjing 210024, China)

Abstract: In this paper, based on analyzing of ApacheBench, we used the CMMI 3 software development methods, make use of multi-threaded to simulate multiple users to achieve a number of concurrent user testing, use pipe technology on a number of thread operation, and realize the sharing of data. Design a new test instrument. It can be achieved in line with the HTTP protocol on the performance of thewebsite for testing.

Key words: performance testing; pipe; multi-threaded

隨著互聯(lián)網(wǎng)的迅猛發(fā)展和用戶數(shù)的不斷增加,作為互聯(lián)網(wǎng)應(yīng)用之一的WEB服務(wù)也扮演著越來(lái)越重要的角色。提供WEB服務(wù)的站點(diǎn)和服務(wù)器必須具有良好的性能和快速的事務(wù)處理能力。為此,在WEB應(yīng)用系統(tǒng)開(kāi)發(fā)過(guò)程中和WEB應(yīng)用軟件部署過(guò)程中,對(duì)其進(jìn)行性能測(cè)試,找出性能上的缺陷,定位問(wèn)題,解決問(wèn)題,也是相當(dāng)重要的一個(gè)環(huán)節(jié)。性能測(cè)試是通過(guò)記錄和描述真實(shí)用戶的行為,用一種自動(dòng)、可控的方式重復(fù)執(zhí)行這些用戶的行為,得到應(yīng)用系統(tǒng)運(yùn)行相關(guān)數(shù)據(jù)的過(guò)程。目前,國(guó)內(nèi)外對(duì) Web 應(yīng)用軟件的測(cè)試進(jìn)行了一系列研究,在基本測(cè)試技術(shù)、測(cè)試模型和測(cè)試工具開(kāi)發(fā)等方面取得了具有價(jià)值的研究成果。其中AB(ApacheBench)是Apache自帶的超文本傳輸協(xié)議(HTTP)性能測(cè)試工具。其設(shè)計(jì)意圖是描繪當(dāng)前安裝的Apache的執(zhí)行性能,幫助我們?cè)诰W(wǎng)站開(kāi)發(fā)期間仿真實(shí)際上線的可能情況,利用仿真出來(lái)的數(shù)據(jù)作為調(diào)整服務(wù)器或程序的依據(jù)。在實(shí)際應(yīng)用中, ApacheBench 程序中存在很多不足和缺陷。如:用戶需要花費(fèi)很多時(shí)間來(lái)學(xué)習(xí)使用AB,測(cè)試數(shù)據(jù)的非漢化,測(cè)試數(shù)據(jù)的不全面,對(duì)命令行參數(shù)、服務(wù)器的響應(yīng)頭和其他外部輸入的解析也簡(jiǎn)單。另外沒(méi)有完整實(shí)現(xiàn)HTTP/1.x,僅接受某些“預(yù)想”的響應(yīng)格式,Strstr()的頻繁使用可能會(huì)帶來(lái)性能問(wèn)題,即你可能是在測(cè)試AB而不是服務(wù)器性能等等。針對(duì)以上問(wèn)題,在Apache上基于AB系統(tǒng)設(shè)計(jì)開(kāi)發(fā)一種新的性能測(cè)試工具勢(shì)在必行。利用多線程技術(shù)實(shí)現(xiàn)多用戶并發(fā),采用管道技術(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)的共享。設(shè)計(jì)并實(shí)現(xiàn)一個(gè)新的系統(tǒng),可以很好的對(duì)網(wǎng)站進(jìn)行性能測(cè)試。

1 系統(tǒng)功能

WEB性能測(cè)試工具通過(guò)記錄用戶操作并把它們與腳本語(yǔ)言相結(jié)合來(lái)生成測(cè)試腳本,并能產(chǎn)生多個(gè)線程,每個(gè)線程運(yùn)行一個(gè)特定的測(cè)試腳本或場(chǎng)景,以模擬發(fā)送到服務(wù)器的真實(shí)請(qǐng)求。進(jìn)行性能分析時(shí),可以跟蹤性能度量結(jié)果(如響應(yīng)時(shí)間和數(shù)據(jù)吞吐量),并且用表格和圖形格式生成報(bào)告,根據(jù)報(bào)告系統(tǒng)自動(dòng)給出性能優(yōu)化建議。

整個(gè)系統(tǒng)是在 ApacheBench 的原型下進(jìn)行的改進(jìn),目的是為了提供更加方便、有效的性能測(cè)試工具。因此,系統(tǒng)設(shè)計(jì)應(yīng)該考慮如下幾點(diǎn):

1)易用性:系統(tǒng)界面簡(jiǎn)潔,明確。用戶不需要經(jīng)過(guò)復(fù)雜的軟件配置和操作流程,只要簡(jiǎn)單的操作就能獲得用戶想要的數(shù)據(jù)。

2)直觀性:系統(tǒng)能夠在運(yùn)行后,直接查看到數(shù)據(jù)。用戶可以通過(guò)不同的測(cè)試數(shù)據(jù)得出被測(cè)服務(wù)器的性能情況,承受壓力的能力等。

3)可控性:系統(tǒng)應(yīng)該能夠根據(jù)實(shí)際情況,給出異常報(bào)告。在模擬多用戶進(jìn)行測(cè)試過(guò)程中,發(fā)送的請(qǐng)求頻率、數(shù)據(jù)、持續(xù)增壓都在可控制范圍內(nèi)。

WEB性能測(cè)試系統(tǒng)的功能分為兩部分:系統(tǒng)測(cè)試部分和數(shù)據(jù)處理部分,如圖1。

系統(tǒng)測(cè)試模塊中又分為測(cè)試參數(shù)、配置參數(shù)、Socket池、線程池、測(cè)試、控制和管道等模塊。參數(shù)模塊用于配置測(cè)試時(shí)用戶所需要的參數(shù)內(nèi)容,包括模擬用戶數(shù)量、并發(fā)用戶數(shù)等內(nèi)容。控制模塊在測(cè)試過(guò)程中根據(jù)測(cè)試參數(shù)來(lái)控制整個(gè)過(guò)程。Socket 池是提供多個(gè)Socket 連接池的功能模塊,Socket 池的大小由模擬的用戶數(shù)量、請(qǐng)求遠(yuǎn)程服務(wù)器IP 地址數(shù)、端口號(hào)數(shù)決定。使用Socket 池目的是提高測(cè)試速度和效率。線程池是用于存放線程的地方,在測(cè)試過(guò)程中,利用一個(gè)線程來(lái)模擬一個(gè)瀏覽器用戶。使用線程池的目的是提高系統(tǒng)利用率,實(shí)現(xiàn)程序的大量并發(fā)處理,避免因頻繁地創(chuàng)建、銷(xiāo)毀線程而降低系統(tǒng)的效率。測(cè)試模塊是利用系統(tǒng)中提供的Socket 和線程,按照測(cè)試參數(shù)將測(cè)試腳本發(fā)送到Web 服務(wù)器,同時(shí)將Web 服務(wù)器的響應(yīng)結(jié)果記錄下來(lái),生成數(shù)據(jù)內(nèi)容,顯示在報(bào)告中。測(cè)試過(guò)程的控制由控制模塊負(fù)責(zé)。

數(shù)據(jù)分析模塊部分包括數(shù)據(jù)分析模塊、文本結(jié)果模塊、生成報(bào)告模塊。數(shù)據(jù)分析模塊是對(duì)測(cè)試數(shù)據(jù)進(jìn)行判斷、計(jì)算、比較和綜合分析,得出測(cè)試結(jié)果。文本結(jié)果模塊是將整個(gè)數(shù)據(jù)分析結(jié)果以文本的形式保存下來(lái)進(jìn)行比較。生成報(bào)告模塊是根據(jù)測(cè)試數(shù)據(jù)結(jié)果和推理規(guī)則而生成測(cè)試報(bào)告和優(yōu)化建議。

2 系統(tǒng)設(shè)計(jì)

2.1 系統(tǒng)需求設(shè)計(jì)

以系統(tǒng)功能需求描述為依據(jù),建立系統(tǒng)業(yè)務(wù)模型。按照RUP的思想, 用Use Case 對(duì)象來(lái)描述系統(tǒng)的功能需求。以選定的Use Case 作為研究對(duì)象,用面向?qū)ο蟮母拍詈头椒▽?duì)問(wèn)題進(jìn)行轉(zhuǎn)述,為后續(xù)進(jìn)一步的設(shè)計(jì)活動(dòng)提供必要的鋪墊。用Use Case 為對(duì)象描敘測(cè)試系統(tǒng)的功能需求用例圖如圖2所示。用例圖中的每個(gè)Use Case 表示實(shí)現(xiàn)特定功能的用例。根據(jù)系統(tǒng)的業(yè)務(wù)邏輯模型,在各個(gè)Use Case 用例之間建立某種關(guān)系,包括包含、擴(kuò)展關(guān)系。用戶(Actor)通過(guò)配置腳本文件、服務(wù)設(shè)置請(qǐng)求、配置測(cè)試參數(shù)、分析數(shù)據(jù)等作用于系統(tǒng)。HTTP 捕捉測(cè)試信息,經(jīng)過(guò)處理生成測(cè)試腳本。系統(tǒng)中的核心用例“測(cè)試”用例是根據(jù)測(cè)試計(jì)劃來(lái)對(duì)服務(wù)器進(jìn)行測(cè)試,并生成測(cè)試數(shù)據(jù)。用戶依據(jù)測(cè)試數(shù)據(jù)進(jìn)行分析,對(duì)整個(gè)服務(wù)器性能做出描述。

2.2 系統(tǒng)流程設(shè)計(jì)

使用用例圖對(duì)系統(tǒng)功能需求進(jìn)行描述,是從系統(tǒng)的業(yè)務(wù)邏輯模型和關(guān)聯(lián)關(guān)系角度展開(kāi)。這里從數(shù)據(jù)流的角度出發(fā),詳細(xì)分析系統(tǒng)各個(gè)模型間的業(yè)務(wù)關(guān)系和關(guān)聯(lián)關(guān)系,建立系統(tǒng)的數(shù)據(jù)流程圖。系統(tǒng)數(shù)據(jù)流程圖如圖3所示。

首先用戶將瀏覽器設(shè)置指定的代理服務(wù)器來(lái)訪問(wèn)Internet,當(dāng)用戶訪問(wèn)Web 服務(wù)器時(shí),將HTTP 請(qǐng)求發(fā)送到服務(wù)器,解析請(qǐng)求的目的IP 和Port,并與目的IP 建立Socket 連接,將瀏覽器發(fā)來(lái)的請(qǐng)求轉(zhuǎn)發(fā)到Web 服務(wù)器,同時(shí)將全部請(qǐng)求傳遞給解析器。解析器把接收的字節(jié)流轉(zhuǎn)換成字符流并對(duì)其解析,分析提取HTTP 請(qǐng)求和每個(gè)請(qǐng)求中的各個(gè)域值,同時(shí)將每個(gè)請(qǐng)求創(chuàng)建一個(gè)請(qǐng)求對(duì)象,并傳遞給測(cè)試腳本。測(cè)試腳本存放請(qǐng)求對(duì)象集合并負(fù)責(zé)處理。以上過(guò)程完成系統(tǒng)的測(cè)試腳本分析功能。

用戶界面負(fù)責(zé)接收用戶輸入的數(shù)據(jù)和響應(yīng)用戶操作,輸入數(shù)據(jù)包括待測(cè)Web 的URL、并發(fā)數(shù)、模擬用戶數(shù)等數(shù)據(jù)。用戶輸入的數(shù)據(jù)作為參數(shù)傳遞到參數(shù)數(shù)據(jù)組件中,參數(shù)數(shù)據(jù)組件將參數(shù)傳遞到控制中心。控制中心根據(jù)測(cè)試參數(shù)和測(cè)試腳本中傳入的測(cè)試對(duì)象集來(lái)創(chuàng)建Socket 連接池和線程池。Socket 連接池的大小和每個(gè)Socket 連接由測(cè)試對(duì)象集和線程數(shù)決定。線程池的大小由線程組屬性參數(shù)決定。控制中心控制整個(gè)測(cè)試過(guò)程,是系統(tǒng)的核心部分,負(fù)責(zé)控制測(cè)試模塊來(lái)模擬真實(shí)用戶行為,啟動(dòng)和調(diào)度每個(gè)測(cè)試線程,并為每個(gè)測(cè)試線程分配Socket 連接。

測(cè)試組件是系統(tǒng)的核心組件,由線程加載并執(zhí)行。測(cè)試組件在執(zhí)行過(guò)程中啟動(dòng)兩個(gè)子線程。這兩個(gè)子線程分別執(zhí)行發(fā)送請(qǐng)求和接收響應(yīng)。發(fā)送請(qǐng)求組件從測(cè)試組件傳遞的Socket連接中取得輸出流對(duì)象,并將請(qǐng)求對(duì)象集以字節(jié)流的形式發(fā)送到WEB服務(wù)器。接收響應(yīng)組件在指定的Socket連接上接收HTTP響應(yīng)的數(shù)據(jù)流,利用輸入流對(duì)象接收數(shù)據(jù)。同時(shí)接收響應(yīng)組件負(fù)責(zé)對(duì)響應(yīng)信息的HTTP頭進(jìn)行解析,設(shè)過(guò)程響應(yīng)對(duì)象,并對(duì)對(duì)象中ID、線程、時(shí)間戳屬性賦值,最后將響應(yīng)對(duì)象傳遞給測(cè)試數(shù)據(jù)組件。

測(cè)試數(shù)據(jù)組件中可以將測(cè)試結(jié)果以文本的方式保存下來(lái)。我們可以對(duì)測(cè)試結(jié)果對(duì)象集進(jìn)行統(tǒng)計(jì)、計(jì)算、分析,并生成對(duì) Web 系統(tǒng)測(cè)試的圖形結(jié)果,給出系統(tǒng)的優(yōu)化建議。

2.3 系統(tǒng)詳細(xì)設(shè)計(jì)

在系統(tǒng)設(shè)計(jì)任務(wù)中,按照如下三個(gè)步驟展開(kāi):

1)提取分析類(lèi)。根據(jù)對(duì)Web性能測(cè)試系統(tǒng)的用例分析,獲得測(cè)試系統(tǒng)活動(dòng)的“關(guān)鍵抽象”以及特定的Use Case 的文字內(nèi)容。從不同角度抽取那些能夠協(xié)作完成Use Case行為的分析類(lèi)。分析類(lèi)可以形象理解為“點(diǎn)”的集合。

2)轉(zhuǎn)述需求場(chǎng)景。用分析類(lèi)的實(shí)例作為行為的載體,通過(guò)消息傳遞的方式實(shí)現(xiàn)對(duì)UseCase 場(chǎng)景的分解。系統(tǒng)數(shù)據(jù)流程圖中的數(shù)據(jù)流轉(zhuǎn)化為消息,用順序圖分析說(shuō)明系統(tǒng)需求和系統(tǒng)活動(dòng)流程。

3)整理分析類(lèi)。根據(jù)分析類(lèi)的實(shí)例在Use Case 需求場(chǎng)景中的消息傳遞關(guān)系,歸納分析類(lèi)所承擔(dān)的“責(zé)任”和分析類(lèi)之間的“關(guān)系”,用參與類(lèi)圖來(lái)說(shuō)明分析結(jié)果。對(duì)分析類(lèi)的責(zé)任和關(guān)系的描述,可以形象地理解為一個(gè)面。

通過(guò)以上三個(gè)步驟,系統(tǒng)中的需求用例圖和數(shù)據(jù)流程圖轉(zhuǎn)換為順序圖和協(xié)作圖,按照分析類(lèi)的關(guān)聯(lián)關(guān)系,將分析類(lèi)繪制成“參與類(lèi)圖”,并根據(jù)分析類(lèi)所承擔(dān)的“責(zé)任”確定其屬性。在設(shè)計(jì)中將系統(tǒng)用例轉(zhuǎn)換為腳本分析順序圖、系統(tǒng)測(cè)試順序圖、數(shù)據(jù)分析順序圖,圖4是系統(tǒng)測(cè)試順序圖。

3 系統(tǒng)實(shí)現(xiàn)

WEB性能測(cè)試系統(tǒng)主要包括建立測(cè)試計(jì)劃、執(zhí)行測(cè)試、測(cè)試結(jié)果存儲(chǔ)等三個(gè)部分。測(cè)試計(jì)劃是指在要測(cè)試之前制定的測(cè)試方案和計(jì)劃,制定測(cè)試計(jì)劃包括要測(cè)試的并發(fā)數(shù)、模擬用戶數(shù)、測(cè)試結(jié)果的存儲(chǔ)等。測(cè)試部分是按照測(cè)試計(jì)劃來(lái)實(shí)現(xiàn)對(duì)系統(tǒng)的測(cè)試。線程組的設(shè)置是系統(tǒng)測(cè)試的關(guān)鍵內(nèi)容,線程組的每個(gè)參數(shù)直接影響測(cè)試方式和測(cè)試過(guò)程。在測(cè)試系統(tǒng)中,用一個(gè)線程模擬一個(gè)真實(shí)用戶的請(qǐng)求行為,一個(gè)線程組來(lái)模擬若干個(gè)用戶請(qǐng)求的真實(shí)場(chǎng)景,線程數(shù)的大小表示在測(cè)試時(shí)將要模擬的用戶數(shù),而并發(fā)用戶數(shù)是由用戶數(shù)和啟動(dòng)持續(xù)時(shí)間決定的。

系統(tǒng)測(cè)試部分的實(shí)現(xiàn)是整個(gè)系統(tǒng)實(shí)現(xiàn)的關(guān)鍵部分,也是采用的關(guān)鍵技術(shù)最多、復(fù)雜程度最高的部分,在這里對(duì)其的實(shí)現(xiàn)過(guò)程作簡(jiǎn)單的介紹:

1)多線程用管道來(lái)實(shí)現(xiàn)通訊:

首先,創(chuàng)建與 Spawn.exe 通訊的可繼承的匿名管道

with Security do begin

nlength := SizeOf(TSecurityAttributes);

binherithandle := True;

lpsecuritydescriptor := nil;

end;

if not Createpipe (ReadPipe, WritePipe, @Security, 0) then

begin

PostMessage(MainFrm.Handle,WM_CREATEPIPE_ERROR,0,0);

Exit;

end;

然后準(zhǔn)備Spawn 的命令行,在命令行給出寫(xiě)管道句柄和要Spawn 執(zhí)行的命令

FmtStr(command_line, 'spawn -h %d %s',[WritePipe, DosApp]);

with StartInfo do begin

cb := SizeOf(TStartUpInfo);

dwFlags :=STARTF_USESHOWWINDOW;

wShowWindow := SW_HIDE;

end;

接著創(chuàng)建Spawn 子進(jìn)程

if not CreateProcess( nil, PChar(Command_line), nil, nil, TRUE,0, nil, nil, StartInfo, ProcessInfo) then begin

PostMessage(MainFrm.Handle,WM_CREATEPROCESS_ERROR,0,0);

Exit;

end;

讀管道,并顯示Spawn 從管道中返回的輸出信息

if (not ReadFile(ReadPipe, len, Sizeof(integer), dwRead, nil)) or (dwRead = 0) then Exit;

while (len<>0) do begin

Buf := AllocMem(len + 1);

try

ZeroMemory(buf,len+1);

if (not ReadFile(ReadPipe, buf[0], len, dwRead, nil)) or (dwRead = 0) then Exit;

buf[dwRead]:= #0;

將結(jié)果顯示在Memo 中,并刷新對(duì)話框

Synchronize(UpdateShow);

if (not ReadFile(ReadPipe, len, Sizeof(integer), dwRead, nil)) or (dwRead = 0) then Exit;

finally

FreeMem(Buf);

end;

等待Spawn 結(jié)束

WaitForSingleObject(ProcessInfo.hProcess, 30000);

最后關(guān)閉管道句柄

CloseHandle(ProcessInfo.hProcess);

CloseHandle(ProcessInfo.hThread);

CloseHandle(ReadPipe);

CloseHandle(WritePipe);

PostMessage(MainFrm.Handle,WM_FINISHED_COMMAND,0,0);

2)后臺(tái)中定義了一個(gè)全局的參數(shù),也是整個(gè)系統(tǒng)的接口,具體如下:

unit GlobalPara;

interface

uses Messages, SyncObjs, Classes, Windows, Graphics;

const

//自定義消息碼

WM_CREATEPIPE_ERROR = WM_USER + 1;

WM_CREATEPROCESS_ERROR = WM_USER + 2;

WM_READPIPE_ERROR = WM_USER + 3;

WM_FINISHED_COMMAND = WM_USER + 4;

implementation

end.

3)測(cè)試指標(biāo)的實(shí)現(xiàn)

temps1:=Tstringlist.create;

temps2:=Tstringlist.Create ;

temps1.Text:=memo1.Text;

temps2.LoadFromFile(extractfilepath(application.ExeName)+'engtochn.txt') ;

這里是對(duì)測(cè)試腳本engtochn.txt 的加載,在我們準(zhǔn)備測(cè)試計(jì)劃的時(shí)候,首先就得把測(cè)試腳本engtochn 的測(cè)試指標(biāo)設(shè)置好,也就是自己想測(cè)試的Web 服務(wù)器的哪幾個(gè)方面的性能。

4 結(jié)論

本文給出了 Delphi 環(huán)境下開(kāi)發(fā)一個(gè)新的Apache性能測(cè)試工具的全部過(guò)程,利用了多線程、管道、DLL 等技術(shù),整個(gè)開(kāi)發(fā)過(guò)程嚴(yán)格按照CMMI 3 要求進(jìn)行。新系統(tǒng)繼承了AB系統(tǒng)的優(yōu)勢(shì),并對(duì)其不足之處進(jìn)行了改進(jìn)。主要表現(xiàn)在:用戶界面可視化,系統(tǒng)簡(jiǎn)單易用;增加了一些新的測(cè)試指標(biāo),如往返請(qǐng)求/響應(yīng)次數(shù)等,并且測(cè)試指標(biāo)完全漢化;測(cè)試過(guò)程的可控性更加完善;對(duì)命令行參數(shù)、服務(wù)器的響應(yīng)頭和其他外部輸入的解析更加具體細(xì)化等。

參考文獻(xiàn):

[1] 侯景華.基于Apache的Web服務(wù)器性能優(yōu)化和分析[D].西安:西安電子科技大學(xué),2006.

[2] 蘭景英,王永恒.Web系統(tǒng)性能測(cè)試研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2008,18(11):18-20.

[3] 邵芬,于國(guó)防,付海燕.AB: 一種簡(jiǎn)單的性能測(cè)試工具[J].計(jì)算機(jī)時(shí)代,2007(12):59-61.

[4] 劉冬,靳蓓蓓.基于Delphi7多線程技術(shù)在網(wǎng)絡(luò)中的應(yīng)用研究[J].信息技術(shù),2007(8):125-127.

[5] 郝煒.性能測(cè)試工具loadRunner介紹[J].計(jì)算機(jī)工程應(yīng)用技術(shù),2008(1):1536-1540.

主站蜘蛛池模板: 青青青国产视频| 欧美另类视频一区二区三区| 国产日韩欧美视频| 亚洲天堂色色人体| 日韩免费中文字幕| 看看一级毛片| 国产成人av一区二区三区| 日韩欧美国产综合| 欧美午夜一区| 色色中文字幕| 波多野结衣中文字幕一区二区| 国产簧片免费在线播放| 久久综合丝袜长腿丝袜| 亚洲天堂视频在线免费观看| 色亚洲激情综合精品无码视频| 亚洲毛片网站| 四虎成人在线视频| 欧美成人手机在线视频| 999精品视频在线| 国产在线视频福利资源站| 国产电话自拍伊人| 台湾AV国片精品女同性| 日本91视频| 国产美女91视频| 日本免费福利视频| 亚洲黄网在线| 欧美另类图片视频无弹跳第一页| 午夜福利在线观看成人| 国产哺乳奶水91在线播放| www.亚洲色图.com| 97久久超碰极品视觉盛宴| 日本爱爱精品一区二区| 欧美成人综合在线| 国产理论精品| 污污网站在线观看| 好吊色妇女免费视频免费| 国产人成在线观看| 福利一区三区| 2021国产精品自产拍在线| 在线播放精品一区二区啪视频| 又爽又大又黄a级毛片在线视频| 国产麻豆精品手机在线观看| 又大又硬又爽免费视频| 久久久久久久久亚洲精品| 亚洲欧洲一区二区三区| 亚洲一区二区日韩欧美gif| 青青网在线国产| 91福利在线看| 亚洲第一黄色网址| 色综合五月婷婷| 日本一本在线视频| 波多野结衣爽到高潮漏水大喷| 国产亚洲精品自在久久不卡| 欧美福利在线观看| 99精品伊人久久久大香线蕉| 成人国产小视频| 久久国产精品无码hdav| 在线a网站| 国产91小视频在线观看| 一区二区日韩国产精久久| 久久久国产精品免费视频| 久操线在视频在线观看| 五月天综合婷婷| 毛片久久网站小视频| 天天做天天爱夜夜爽毛片毛片| 久久亚洲综合伊人| 成色7777精品在线| 精品国产Ⅴ无码大片在线观看81| 蜜臀AVWWW国产天堂| 日韩在线成年视频人网站观看| 亚洲aaa视频| 91久久偷偷做嫩草影院电| 丁香五月婷婷激情基地| 国产va在线| 亚洲视频免费在线看| 天天色天天综合| 无码内射中文字幕岛国片 | 最新精品久久精品| 免费中文字幕在在线不卡| 亚洲av成人无码网站在线观看| 精品午夜国产福利观看| 成人免费视频一区二区三区 |