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

Java優(yōu)化策略在鐵路互聯(lián)網(wǎng)售票系統(tǒng)中的應(yīng)用研究

2016-02-16 05:15:30楊立鵬劉卓華
鐵路計算機應(yīng)用 2016年8期
關(guān)鍵詞:系統(tǒng)

楊立鵬,王 拓,劉卓華,李 雯

(1.北京經(jīng)緯信息技術(shù)公司,北京 100081;2.中國鐵道科學研究院,北京 100081;3.中國鐵道科學研究院 電子計算技術(shù)研究所,北京 100081;4.中鐵程科技有限責任公司,北京 100081)

Java優(yōu)化策略在鐵路互聯(lián)網(wǎng)售票系統(tǒng)中的應(yīng)用研究

楊立鵬1,2,王 拓2,3,劉卓華2,3,李 雯4

(1.北京經(jīng)緯信息技術(shù)公司,北京 100081;2.中國鐵道科學研究院,北京 100081;3.中國鐵道科學研究院 電子計算技術(shù)研究所,北京 100081;4.中鐵程科技有限責任公司,北京 100081)

為了使鐵路互聯(lián)網(wǎng)售票系統(tǒng)穩(wěn)定性和高效性能夠得到更好的保證,結(jié)合分布式內(nèi)存數(shù)據(jù)庫的系統(tǒng)特性和鐵路互聯(lián)網(wǎng)售票系統(tǒng)的業(yè)務(wù)特性,對各種Java虛擬機(JVM)內(nèi)存管理策略和垃圾回收機制進行了分析和研究,以余票查詢業(yè)務(wù)系統(tǒng)模塊為例對JVM參數(shù)調(diào)優(yōu)過程進行了簡要測試和分析,測試結(jié)果表明,優(yōu)化后的系統(tǒng)具有更好的穩(wěn)定性和高效性。

鐵路互聯(lián)網(wǎng)售票系統(tǒng);分布式內(nèi)存數(shù)據(jù)庫;Java虛擬機; Java調(diào)優(yōu)策略

在鐵路互聯(lián)網(wǎng)售票系統(tǒng)中,分布式內(nèi)存數(shù)據(jù)庫承擔著一些并發(fā)請求多、實時性要求高的業(yè)務(wù),比如余票查詢、訂單查詢、常用聯(lián)系人查詢等。它的構(gòu)成包括以下2個重要角色:(1)2個Locator作為控制節(jié)點,主要負責作業(yè)調(diào)度、負載均衡。一般部署在2臺服務(wù)器上,雙活機制,互為備份,分配少量資源即可。(2)多個DataStore作為服務(wù)節(jié)點,主要負責數(shù)據(jù)存儲、邏輯運算。一般部署在多臺服務(wù)器上,每臺服務(wù)器上的DataStore大小和數(shù)量保持一致。物理上數(shù)據(jù)分散存儲在不同的DataStore上;邏輯上,所有數(shù)據(jù)仍是統(tǒng)一的整體。

本質(zhì)上來說,組成分布式內(nèi)存數(shù)據(jù)庫的每一個Locator和DataStore都是一個Java虛擬機(JVM,Java Virtual Machine)。JVM專門為Java應(yīng)用的運行提供環(huán)境,用于分配執(zhí)行任務(wù)和執(zhí)行內(nèi)存操作。

JVM中頻繁的全量垃圾回收(FGC,F(xiàn)ull Garbage Collection)導致的短暫停頓將會造成糟糕的用戶體驗。更嚴重的情況下,如果發(fā)生JVM崩潰,導致售票系統(tǒng)某一模塊無法正常提供服務(wù),甚至會引發(fā)停售的事故。因此,JVM的穩(wěn)定性和高效性必須得到最大的保證,JVM的調(diào)優(yōu)顯得尤為重要。

本文將對JVM的各種調(diào)優(yōu)參數(shù)進行研究,結(jié)合分布式內(nèi)存數(shù)據(jù)庫的系統(tǒng)特性和鐵路互聯(lián)網(wǎng)售票系統(tǒng)的業(yè)務(wù)特性,對各種JVM內(nèi)存管理策略、垃圾回收機制進行分析和研究,最終找出適合特定業(yè)務(wù)模塊的JVM參數(shù)。

1 JVM調(diào)優(yōu)策略

自Java誕生以來,市場上涌現(xiàn)出多款優(yōu)秀的具有特色的JVM產(chǎn)品,比如HotSpot VM,JRockit,J9等。在生產(chǎn)環(huán)境中,我們使用了相對比較穩(wěn)定的HotSpot VM作為分布式內(nèi)存數(shù)據(jù)庫所使用的JVM。

JVM將它所管理的內(nèi)存空間劃分為若干個不同的區(qū)域,這些區(qū)域各司其職,維護著對象或者線程的生命周期。如果分配給某個對象的內(nèi)存地址空間不再被任何對象引用所指向時,那么這塊內(nèi)存地址空間就成了“垃圾”,占用著寶貴的內(nèi)存。此時JVM會啟動垃圾回收器,釋放垃圾內(nèi)存空間,并進行內(nèi)存整理。

1.1 JVM內(nèi)存分配策略

Java虛擬機的基本結(jié)構(gòu)如圖1所示。

圖1 Java虛擬機的基本結(jié)構(gòu)示意圖

從線程角度來看,Java運行時數(shù)據(jù)區(qū)域分為全部線程共享數(shù)據(jù)區(qū)域(圖1中綠色部分)和各個線程私有數(shù)據(jù)區(qū)域(圖1中藍色部分)。

(1)程序計數(shù)器:Java程序運行時,通過改變這個計數(shù)器的值來選取下一條需要執(zhí)行的字節(jié)碼指令。包括程序中的分支、循環(huán)、異常處理等基礎(chǔ)功能。

(2)虛擬機棧:執(zhí)行Java方法時,主要用于存儲棧幀(Stack Frame),棧幀內(nèi)保存有局部變量表(基本數(shù)據(jù)類型和對象引用等)、動態(tài)鏈接、方法出口等信息。

(3)本地方法棧:與虛擬機棧的功能類似,但本地方法棧是虛擬機執(zhí)行本地方法時所使用的內(nèi)存區(qū)域。

(4)方法區(qū):可將其稱為Non-Heap,即非堆內(nèi)存區(qū)域。虛擬機加載成功的類信息、常量、靜態(tài)變量等數(shù)據(jù)存儲在這里。

(5)堆:Java堆(Heap)是Java虛擬機管理的內(nèi)存區(qū)域中最大的一塊,用于存放所有對象實例和數(shù)組。

對JVM的調(diào)優(yōu)主要集中在Java堆上,它的構(gòu)成主要包括以下3部分[1]:

(1)年輕代區(qū)域:包括Eden空間、FromSurvivor空間、ToSurvivor空間。所有新生成的對象首先都是放在年輕代。年輕代的目標就是盡可能快速地對生命周期短的對象進行垃圾回收。

(2)年老代區(qū)域:主要是指Tenured空間。在年輕代中經(jīng)歷了N次垃圾回收后仍然存活的對象,就會被放到年老代中。因此,可以認為年老代中存放的都是一些生命周期較長的對象。

(3)持久代區(qū)域:主要是指Perm空間。用于存放靜態(tài)文件,如Java類、方法等。持久代對垃圾回收沒有顯著影響。

1.2 垃圾收集算法

(1)Mark-Sweep標記清除算法:該算法是其他算法的理論基礎(chǔ)。可分為“標記”和“清除”兩個階段,首先從根節(jié)點開始,標記上所有可達對象,那么剩余的就是未被引用的垃圾對象,這些是要清除的對象。該算法最大的缺陷是會產(chǎn)生大量的內(nèi)存空間碎片,導致以后在程序運行過程中需要分配較大對象時,無法找到足夠的連續(xù)內(nèi)存而不得不提前觸發(fā)另一次垃圾收集動作[2~3]。

(2)Copying復制算法:該算法的核心思想是將內(nèi)存控件劃分為大小相等的兩塊,每次只使用其中一塊。在進行垃圾回收時,將存活對象復制到另外一塊中,再把已使用過的內(nèi)存空間全部清空。雖然這種算法效率很高,也避免了內(nèi)存空間碎片,但將系統(tǒng)內(nèi)存折半使用的代價太大了,所以不能單純使用這種算法[2~3]。

(3)Mark-Compact標記壓縮算法:該算法垃圾回收的目標主要是年老代的未被引用對象。它是對Mark-Sweep算法的優(yōu)化,標記可達對象之后,并不是直接清理未被標記對象,而是將所有存活對象壓縮移動到內(nèi)存的另一端,之后清理邊界之外的所有內(nèi)存空間。最終效果與Mark-Sweep相同,但進行了一次內(nèi)存碎片整理[2~3]。

(4)Generation Collection分代收集算法:該算法根據(jù)對象生命周期的不同將內(nèi)存空間劃分為幾塊不同的區(qū)域,使用上述不同的算法。例如,年輕代適合使用復制算法,年老代適合使用標記壓縮算法[2~3]。

1.3 垃圾收集器

垃圾收集器是垃圾收集算法的具體實現(xiàn)[4~5]。

(1)Serial串行收集器:這是最早的垃圾收集器,是單線程的,獨占式的,運行時需要暫停所有線程,直到它運行結(jié)束。

(2)ParNew并行收集器:該垃圾收集器適用于年輕代,將串行收集器多線程化。在收集過程中,引用程序會全部暫停,但是在處理能力較強的CPU上,由于使用了多線程,它的停頓時間較短。

(3)CMS(Concurrent-Mark-Sweep)收集器:該收集器是基于Mark-Sweep標記清除算法的使用多線程并發(fā)回收的垃圾收集器。CMS收集器的內(nèi)存回收過程是與用戶線程一起并發(fā)執(zhí)行的,包括4個階段:初始標記(CMS initial mark)、并發(fā)標記(CMS concurrent mark)、重新標記(CMS remark)、并發(fā)清除(CMS concurrent sweep)。可以通過調(diào)整-XX:CM SInitiatingOccupancyFraction參數(shù)的值來改變觸發(fā)收集動作時年老代空間使用的百分比,這樣就使垃圾回收次數(shù)變得可控,應(yīng)用性能也在一定程度上得到了保證。它的優(yōu)點是并發(fā)收集,停頓較低。但是,在并發(fā)收集過程中,會占用一部分CPU資源,導致應(yīng)用程序變慢,系統(tǒng)吞吐量下降。

(4)G1(Gabbage-First)收集器:該收集器出現(xiàn)在JDK 1.7中,主要就是為了替代1.6時代的CMS。G1收集器也是分代垃圾收集器的一種,但它不要求年輕代和年老代都連續(xù)。G1和CMS都可以降低應(yīng)用停頓時間,但G1建立了可預(yù)測時間模型,可以指定最大停頓時間,如果停頓超過這個時間,則G1會嘗試調(diào)整年輕代、年老代的比例,調(diào)整堆大小等手段進行優(yōu)化。G1可以避免在整個Java堆中進行全區(qū)域的垃圾收集,它在后臺維護一個垃圾收集價值優(yōu)先列表,保證了G1收集器在有限的時間內(nèi)可以獲取盡可能高的收集效率。

2 優(yōu)化過程分析

2.1 JVM監(jiān)控工具

2.1.1 JDK性能監(jiān)控工具

在JDK的開發(fā)包中,有一些輔助工具可以幫助我們查看JVM進程的運行狀態(tài)、Java線程的詳細信息、垃圾回收(GC,Garbage Collection)情況的詳細信息等。

(1)jstat命令。用于查看虛擬機實時運行信息。常用參數(shù)如下:

-gc:顯示與GC相關(guān)的Heap信息;

-gccapacity:顯示各個代的容量和使用情況;

-gccause:顯示最近一次或正在進行的垃圾收集的原因;

-gcutil:顯示垃圾收集的詳細信息。

(2)jmap命令。這個命令有很多功能,可以導出Heap到文件,即生成Heap內(nèi)存區(qū)域的Dump文件,可以查看Heap內(nèi)對象實例的統(tǒng)計信息,還可以查看類加載器ClassLoader的詳細信息等。例如,在Linux環(huán)境下,生成PID為12345的JVM進程對象統(tǒng)計信息,將結(jié)果輸出到文件pid_12345_dump.txt中,可以使用如下命令:

jmap –histo 12345 > pid_12345_dump.txt

(3)jstack命令。用于查看線程堆棧,導出JVM的線程堆棧,經(jīng)常用來檢查程序的死鎖問題。在實際運行中,往往一次dump的信息無法全面的定位問題,一般需要進行3次線程dump,結(jié)合起來進行分析。

2.1.2 可視化性能監(jiān)控工具VisulVM

VisulVM是一款適用于Java虛擬機且功能十分強大的故障診斷和性能分析可視化工具。VisulVM具有以下優(yōu)點:(1)它支持擴展插件,用戶可以根據(jù)自己Java應(yīng)用的實際情況進行個性化定制;(2)它同時支持Windows環(huán)境下本地啟動的JVM進程,也支持遠程訪問Linux環(huán)境下的JVM進程;(3)可進行Thread Dump、內(nèi)存SnapShot分析、垃圾收集情況分析;(4)界面直觀清晰,通常會有多個視圖分別實時地顯示CPU使用情況、內(nèi)存使用情況、線程狀態(tài)以及其他一些有用信息。

2.2 優(yōu)化過程

不同業(yè)務(wù)或不同環(huán)境都會對Java應(yīng)用的運行產(chǎn)生不同影響。以余票查詢業(yè)務(wù)為例,該業(yè)務(wù)具有如下幾個主要特點:

(1)全部數(shù)據(jù)量約有4 000萬條記錄,每次查詢得到的結(jié)果集少則幾條,多則200~300條;

(2)業(yè)務(wù)邏輯十分復雜,涉及多個子模塊,多個表的數(shù)據(jù),余票查詢結(jié)果中包含車次、席位、預(yù)售期等復雜信息;

(3)業(yè)務(wù)代碼運行頻繁,售票高峰日期時,單日查詢請求數(shù)量可達上億次。

由此可以歸納出:業(yè)務(wù)運行期間會有大量的對象生成、銷毀;對CPU、內(nèi)存、網(wǎng)絡(luò)等資源比較敏感;生產(chǎn)環(huán)境的應(yīng)用必須盡可能減少FGC導致的Stop The World的影響,不能影響用戶體驗,不能影響鐵路售票。

下面將結(jié)合服務(wù)器硬件、軟件環(huán)境和業(yè)務(wù)應(yīng)用情況進行調(diào)優(yōu)分析和研究,對各個參數(shù)的選取作出說明。

分布式內(nèi)存數(shù)據(jù)庫服務(wù)器硬件環(huán)境如表1所示。

表1 分布式內(nèi)存數(shù)據(jù)庫服務(wù)器硬件環(huán)境

JVM啟動參數(shù)如表2所示。

表2 JVM啟動參數(shù)列表

在鐵路互聯(lián)網(wǎng)售票系統(tǒng)分布式內(nèi)存數(shù)據(jù)庫中,根據(jù)不同的業(yè)務(wù)場景,對JVM的啟動參數(shù)有定制化的配置。通過對業(yè)務(wù)場景和系統(tǒng)運行環(huán)境的深入分析和充分測試,所選用的參數(shù)適用于余票查詢業(yè)務(wù)和分布式內(nèi)存數(shù)據(jù)庫。具體調(diào)優(yōu)思路如下:

(1)-Xmx和-Xms參數(shù):這兩個值設(shè)置為相同,以避免每次GC之后JVM重新分配內(nèi)存。目的是為了讓Heap區(qū)域靜態(tài)分配,否則Java的堆是動態(tài)變化的。經(jīng)過對余票查詢原始數(shù)據(jù)量以及業(yè)務(wù)運行過程中產(chǎn)生對象的數(shù)量進行精密測算,這里Heap區(qū)域的大小固定為102 400 MB。

(2)-Xmn參數(shù):年輕代大小對系統(tǒng)性能影響比較大,這里我們?nèi)≌麄€Heap區(qū)域的3/8左右,符合Hotspot VM官方推薦的配置。

(3)-Xss參數(shù):由于余票查詢業(yè)務(wù)邏輯十分復雜,涉及數(shù)據(jù)較多,不同車站間的車次數(shù)量不同,最多的可達300多趟列車,再考慮到服務(wù)器的CPU情況,為保證這種余票查詢請求能夠正常進行,這里將每個線程棧設(shè)置為1 024 KB。在相同物理內(nèi)存下,減小這個值能生成更多的線程。

(4)-XX:PermSize參數(shù):余票查詢業(yè)務(wù)并沒有相當大量的class需要動態(tài)載入或卸載,所以這里設(shè)置為128 MB即可。

(5)-XX:+UseParNewGC和-XX:+UseConc-MarkSweepGC參數(shù):使用較為通用的配置。

(6)-XX:CMSInitiatingOccupancyFraction參數(shù):生產(chǎn)環(huán)境實際應(yīng)用中,年老代增長速度并不是很快,而且不允許系統(tǒng)頻繁進行CMS垃圾收集,所以這里將參數(shù)值設(shè)置較高,為80。

(7)-XX:ParallelGCThreads=4參數(shù):允許有4個線程同時進行垃圾回收。生產(chǎn)環(huán)境中,一臺服務(wù)器有32個Core,4個JVM,每個JVM分到8個Core,一般可將這個參數(shù)設(shè)置為8/2=4,如果設(shè)置為8個,可能會產(chǎn)生業(yè)務(wù)線程和GC線程之間的資源競爭。

2.3 優(yōu)化結(jié)果

為了能夠清晰直觀地展現(xiàn)優(yōu)化效果,采用JDK性能監(jiān)控工具jstat等命令,將JVM關(guān)鍵指標記錄到表格,進行分析。采用對分布式內(nèi)存數(shù)據(jù)庫進行壓力測試的方法作為驗證手段,選取具有代表性的垃圾回收操作用時作為觀察指標。

以此為基礎(chǔ),分別對優(yōu)化前、優(yōu)化后的分布式內(nèi)存數(shù)據(jù)庫進行壓力測試,每次持續(xù)時長1 h,各進行15次,使用jstat命令記錄垃圾回收的頻率(即JVM間隔多少秒進行垃圾回收),取1 h之內(nèi)的平均值,結(jié)果如圖2所示。

圖2 多次壓力測試時垃圾回收用時示意圖

在進行優(yōu)化之前,進行了15次相同場景的壓力測試,JVM進行垃圾回收的平均時間間隔為1.77 s。而做過優(yōu)化之后,這一時間間隔提升至7.84 s。系統(tǒng)進行垃圾回收的頻率得到大幅降低,系統(tǒng)能夠更加穩(wěn)定、更加高效地提供服務(wù)。

3 結(jié)束語

分布式內(nèi)存數(shù)據(jù)庫的主要存儲介質(zhì)是內(nèi)存,業(yè)務(wù)數(shù)據(jù)和代碼存儲在各個JVM上,同時,為適應(yīng)鐵路互聯(lián)網(wǎng)售票系統(tǒng)的業(yè)務(wù)場景和高并發(fā)訪問需求,我們必須將JVM的調(diào)優(yōu)工作做到精益求精。本文結(jié)合生產(chǎn)環(huán)境實踐經(jīng)驗以及其他類似系統(tǒng)的參考信息,對承載余票查詢業(yè)務(wù)的分布式內(nèi)存數(shù)據(jù)庫JVM參數(shù)調(diào)優(yōu)過程進行了簡要測試和分析。以此結(jié)論為依據(jù)的配置,在生產(chǎn)環(huán)境取得了穩(wěn)定且良好的應(yīng)用效果。

類似的調(diào)優(yōu)思想在其他系統(tǒng)中也得到了良好應(yīng)用。例如,在用戶行為分析系統(tǒng)中,用戶在使用互聯(lián)網(wǎng)售票系統(tǒng)購票過程中,鍵盤錄入等事件均會產(chǎn)生旅客的行為操作數(shù)據(jù),對此類數(shù)據(jù)的分析要求JVM組成的系統(tǒng)能夠承載較大的吞吐量,對實時性要求較低,可以在一定程度上容忍垃圾回收帶來的負面影響。

另外,還有一些調(diào)優(yōu)工作值得進行嘗試,例如,對JDK 1.7中G1垃圾回收器進行充分測試,以論證其在生產(chǎn)系統(tǒng)中使用的可行性。

[1]楊文超.Java虛擬機內(nèi)存管理與優(yōu)化策略[J].電子測試,2013(19):43-44.

[2]嵇智源,潘 巍.面向大數(shù)據(jù)的內(nèi)存數(shù)據(jù)管理研究現(xiàn)狀與展望[J].計算機工程與設(shè)計,2014(10):3499-3506.

[3]李永遠.JAVA虛擬機相關(guān)技術(shù)研究與實踐[J].信息通信,2015(5):120-120.

[4]吳志軍,何加銘,曾興斌,等.基于嵌入式Java虛擬機的垃圾收集優(yōu)化算法[J].計算機工程,2012,38(7):46-48.

[5]曾天慧,於時才,董榮輝,等.Java垃圾收集機制及性能調(diào)節(jié)[J].計算機工程與設(shè)計,2006,27(17):3242-3244.

責任編輯 付 思

Java tuning strategy in Railway Internet Ticketing and Reservation System

YANG Lipeng1,2,WANG Tuo2,3,LIU Zhuohua2,3,LI Wen4
( 1.Beijing Jingwei Information Technology Co.,Beijing 100081,China;2.China Academy of Railway Sciences,Beijing 100081,China;3.Institute of Computing Technologies,China Academy of Railway Sciences,Beijing 100081,China;4.China Rails Travel Technology,Co.Ltd., Beijing 100081,China)

In order to make the Railway Internet Ticketing and Reservation System be better guaranteed,combining with the system characteristics of the distributed memory database and the operational characteristics of the Railway Internet Ticketing and Reservation System,this article analyzed and studied on the memory management strategy and garbage collection mechanism of various JVM ( Java virtual machine).Taken remaining ticket query service system model as an example,the JVM parameter tuning process was briefy tested and analyzed.The test result showed that the optimized system had better stability and high effciency.

Railway Internet Ticketing and Reservation System;distributed memory data base;Java virtual machine;Java tuning strategy

U293.22:TP39

A

1005-8451(2016)08-0021-05

2015-12-17

楊立鵬,在讀博士研究生;王 拓,助理研究員。

猜你喜歡
系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無人機系統(tǒng)
ZC系列無人機遙感系統(tǒng)
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統(tǒng)
基于UG的發(fā)射箱自動化虛擬裝配系統(tǒng)開發(fā)
半沸制皂系統(tǒng)(下)
FAO系統(tǒng)特有功能分析及互聯(lián)互通探討
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統(tǒng) 德行天下
PLC在多段調(diào)速系統(tǒng)中的應(yīng)用
主站蜘蛛池模板: 亚洲av片在线免费观看| 好紧好深好大乳无码中文字幕| 97久久精品人人| 亚洲第一香蕉视频| 22sihu国产精品视频影视资讯| 亚洲精品视频免费观看| 久久亚洲日本不卡一区二区| 精品一区二区三区自慰喷水| 国产精品极品美女自在线网站| www中文字幕在线观看| 91青青草视频| 国产美女91视频| 国产成人毛片| 亚洲中文无码h在线观看| 国产尤物jk自慰制服喷水| 国产成人精品在线1区| 制服无码网站| 国产成人久久综合777777麻豆| 国产精品久久久精品三级| 国产毛片不卡| 亚洲天堂啪啪| 三上悠亚在线精品二区| 青青青国产视频| 全免费a级毛片免费看不卡| 亚洲国产精品一区二区第一页免 | 久久久久亚洲av成人网人人软件| 日韩在线成年视频人网站观看| 国产尤物视频网址导航| 无码日韩视频| 色哟哟国产精品| 亚洲视频一区| 狂欢视频在线观看不卡| 免费AV在线播放观看18禁强制| 老司国产精品视频91| 国产一区二区三区免费观看| 欧美综合成人| 热99精品视频| 亚洲高清无码精品| 久久无码高潮喷水| 国产精品太粉嫩高中在线观看| 久久亚洲精少妇毛片午夜无码| 亚洲日本中文字幕天堂网| 黄色网址免费在线| 亚洲自偷自拍另类小说| 欧美精品成人| 欧美黄网站免费观看| 亚洲欧美一区二区三区麻豆| 无码一区二区波多野结衣播放搜索| 欧美精品亚洲精品日韩专区va| 91九色视频网| 日韩精品久久无码中文字幕色欲| 高清色本在线www| 毛片最新网址| 91美女在线| 日本欧美午夜| 色综合久久88| 国产男人的天堂| 亚洲无码在线午夜电影| 亚洲美女视频一区| 日韩成人在线网站| 性色一区| 亚洲三级a| 日韩毛片在线播放| 无码'专区第一页| 国产视频欧美| 国产在线自揄拍揄视频网站| 午夜精品一区二区蜜桃| 丁香五月婷婷激情基地| 亚洲天堂成人| 午夜视频日本| 国产欧美日韩91| 在线看片免费人成视久网下载| 这里只有精品在线| 中文字幕调教一区二区视频| 成人精品视频一区二区在线 | 久久激情影院| 青草精品视频| 内射人妻无套中出无码| 国产毛片久久国产| 免费高清毛片| 国产va在线观看免费| 亚洲人成亚洲精品|