精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

高并發服務優化篇:從RPC預熱轉發看服務端性能調優

開發 架構
本篇從RPC的預熱轉發功能,引出了其背后的理論依據--JIT優化。闡述了JIT的基本概念,并用一個實例說明了代碼編寫風格對JIT優化的實際影響。

[[413783]]

之前的文章中,我們詳細闡述了RPC的調用過程,分析了其耗時組成,為我們日常性能調優提供了理論支持。

為了更好的體驗和更優的性能,其實RPC悄悄的做了很多工作,本篇就帶大家來看下RPC的一些高級特性和其背后的原因。(還是以開源的dubbo和sofa為例來說明)

Part1 RPC為了性能做了哪些努力

1.1 Provider分組和直連

路由尋址,負載均衡是很好,可以保證流量均勻從而保護服務節點穩定。

但是,我們有的時候其實不希望我們的請求亂跑,最好能打到指定的機器上。比如聯調和測試的時候,直連功能就顯得很重要了。

只有經歷過多方合作聯調時請求到處亂跑的痛,才知道分組和直連的功能對開發是多么的友好。

  1. //以sofa為例 
  2. @Extension(value = "directUrl"order = -20000) 
  3. @AutoActive(consumerSide = true
  4. public class DirectUrlRouter extends Router { 
  5.   //... 

我們可以看到直連路由策略的order屬性,被賦予了一個極小的值,變成了優先級最高的路由策略,所以只要配置的直連列表,則會優先走配置中的列表地址。

摘自:www.sofastack.tech

1.2 異步調用

Future異步調用

異步調用對服務性能和并發的支持起到很大的作用。

一般異步調用有Futurn和callback等方式,這里我們說下Future的原理:

調用下游之后,先返回一個Future,上游通過Future.get()方法對結果進行獲取,如果結果未返回則會讓出CPU資源進入等待,直到結果到達或超時后觸發回調方法才被喚醒。由于篇幅問題,Future的核心邏輯的相關注釋就不放了,之前的消息消費順序保障的文章中也有敘述,有興趣的同學可以看下~

1.3 本地優先、遠程優先

很多時候,我們會遇到消費端和服務端可能都是自己的情況。這個時候,在常規的路由尋址之外,又提供給我們一種調用的可能性,就是直接調用當前服務器上的程序,這樣做的好處比較明顯,省去了網絡傳輸等時間損耗,效率更高。

  1. List<ProviderInfo> localProviderInfo = new ArrayList<ProviderInfo>(); 
  2. // 解析IP,看是否和本地一致 
  3. for (ProviderInfo providerInfo : providerInfos) {  
  4.     if (localhost.equals(providerInfo.getHost())) { 
  5.         localProviderInfo.add(providerInfo); 
  6.     } 
  7. // 命中本機的服務端 
  8. if (CommonUtils.isNotEmpty(localProviderInfo)) {  
  9.     return super.doSelect(invocation, localProviderInfo); 
  10. else {  
  11.   // 沒有命中本機上的服務端 
  12.    return super.doSelect(invocation, providerInfos); 

當然,也需要看業務和內部服務路由的實際情況,比如在阿里的單元化部署下,需要根據用戶ID路由到對應的zone進行處理,如果還是優先本機,那就可能在操作數據庫的時候涉及到跨zone調用,比走遠程rpc更加耗時。因此這種情況下就需要禁用本機優先策略。

1.4 延遲暴露

很多時候,我們的服務需要依賴一些其他內容才可以正常提供服務,比如緩存預熱、線程池預熱等等,所以,在服務真正就緒之后再注冊到配置中心是很有必要的。

  1. //服務注冊之前,先延遲 
  2. public void export() { 
  3.     // 根據配置延遲加載 
  4.     if (providerConfig.getDelay() > 0) {  
  5.         Thread thread = factory.newThread(new Runnable() { 
  6.          @Override 
  7.          public void run() { 
  8.              try { 
  9.                   Thread.sleep(providerConfig.getDelay()); 
  10.              } catch (Throwable ignore) {  
  11.              } 
  12.               //真正的服務注冊邏輯 
  13.               doExport(); 
  14.          } 
  15.       }); 
  16.       thread.start(); 
  17.    } else { 
  18.        doExport(); 
  19.    } 

1.5 粘滯連接

問: 我們需要每次都進行路由尋址和負載均衡來確定服務地址么?

答: 大部分情況是有利的,不過有些特殊的場景,更希望多次請求連接到同一臺服務器。

比如,有狀態的服務(很多帶數據功能的服務都是有狀態的,比如很久之前的帶登陸session的Tomcat服務、存儲集群服務等),其實希望每次請求都連接到相同的服務器。

這就用到了粘滯連接功能。

  1. protected ProviderInfo select(...)throws SofaRpcException { 
  2.     // 判斷isSticky 粘滯連接配置 
  3.     if (consumerConfig.isSticky()) { 
  4.         //如果最后一次使用的provider不為空,則使用 
  5.         if (lastProviderInfo != null) { 
  6.             ProviderInfo providerInfo = lastProviderInfo;         
  7.             //獲取對應連接 
  8.             ClientTransport lastTransport = connectionHolder.getAvailableClientTransport(providerInfo); 
  9.             if (lastTransport != null && lastTransport.isAvailable()) { 
  10.                checkAlias(providerInfo, message); 
  11.                return providerInfo; 
  12.             } 
  13.         } 
  14.     } 
  15.     ... 

1.6 預熱轉發

前面扯了那么多,其實,這個才是我們今天想說的重點。

預熱轉發是針對服務節點的負載均衡來說的。因為在服務剛啟動的時候,如果請求過多可能會影響機器性能和正常業務,如果將處于預熱期的機器的請求轉發到集群內其它機器,過了預熱期之后再恢復正常,則可以保證服務節點的性能和服務整體的可用性。

那么這個功能是怎么實現的呢?--帶權重的隨機負載均衡。

摘自sofastack:權重隨機的原理

  1.  //累加總權重totalWeight,代碼忽略。。。 
  2.   
  3.  //在總權重內隨機得到一個值 
  4.  int offset = random.nextInt(totalWeight); 
  5.   
  6.  //確定隨機值落在哪個片斷上 
  7.  for (int i = 0; i < size; i++) { 
  8.      offset -= getWeight(providerInfos.get(i)); 
  9.      if (offset < 0) { 
  10.         providerInfo = providerInfos.get(i); 
  11.         break; 
  12.      } 

配置示例:

  1. core_proxy_url=weightStarting:0.2,during:60,weightStarted:0.2,address:x.x.x.x,uniqueId:core_unique 

如上,預熱權重20%,預熱持續時長60s。這樣,按照上述計算方式,權重小的服務節點被選到的幾率就相對小,以此達到權重隨機的效果。

那么,為什么剛發布的服務需要預熱呢?預熱可以起到什么作用呢?

Part2 什么是JIT優化

都說C++快,Java慢,都是高級語言,是什么導致了運行速度的差別呢?

這個涉及到了兩種執行方式:解釋執行 和 編譯執行。

相對于C++直接將代碼編譯成機器碼運行的方式,Java為了實現跨平臺、高度抽象等特性,增加了虛擬機層來實現Java代碼到機器碼的轉換,Java程序先是被編譯成符合虛擬機規范的.class字節碼逐條將字節碼翻譯成機器碼然后執行,所以,速度上就慢一些。

雖然,JVM的加入,給Java的運行速度增加了不少損耗,但是好處也很多,除了跨平臺,還為我們實現了諸如內存管理、垃圾回收等容器級通用功能,讓研發人員可以更加聚焦業務。

不過,Java也是要面子的,我允許自己慢,但我不允許自己慢那么多!

怎么辦呢?遵循二八原則,是不是可以找尋程序當中的貢獻了大部分調用量的核心代碼,把這部分編譯成機器碼,提升其速度,不就把整體的速度提上去了么,JVM也是這么做的~

所以,JVM兼容了解釋執行和編譯執行兩種方式,也就是我們常說的即時編譯。

前面的問題到這里其實就可以回答了。為什么需要預熱轉發呢?是為了用小流量對程序進行預熱,目的是為了讓核心代碼進行及時編譯,提高峰值運行速率,提升服務響應~

下面讓我們詳細看下JIT。

2.1 即時編譯器

為了權衡編譯時間和執行效率,JVM設置了多種即時編譯器:

  • C1(Client 編譯器):基于字節碼完成部分優化,如方法內聯、常量傳遞,相對于C2,速度快,但性能稍差。
  • C2(Server 編譯器):耗時較長的全局優化,如無用代碼消除、重排序、循環展開、公共子表達式替代、常量傳播等等。
  • Graal(新的JIT編譯器):側重于性能和語言操作性。在一些負載上提供比傳統編譯器更好的峰值性能;用 Graal 執行的語言可以互相調用,可以使用來自其他語言的庫。

2.2 JIT優化觸發條件

前面我們說過,JVM其實是希望找到承擔更多調用請求的代碼塊進行優化,那,怎么來確認哪些代碼時優化目標呢?--熱點探測

基于采樣的熱點探測:

周期采樣,檢測各線程棧頂方法,經常出現的方法即為熱點方法。好處是簡單高效,缺點是不精確,容易受線程運行狀態的影響。

基于計數的熱點探測:

(包括方法調用計數器和回邊計數器)每個方法建立計數器,用來統計調用次數。如果該方法執行次數超過閾值,則該方法被認定為熱點方法。好處是足夠精確。缺點是空間損耗大,且實現較難。

另外,可以通過如XX:CompileThreshold等參數來修改閾值,不過,沒有絕對把握,還是不要動為好。

Part3 JIT指導代碼優化

3.1 方法內聯

為什么我們在剛寫代碼的時候,總是被建議不要寫很大的方法體?方法內聯的JIT優化策略就是其中一個重要的原因。(還有GC友好等原因)

JVM內的每一次方法調用,都是棧幀在內存中出棧入棧的過程,方法多了性能損耗自然大,所以要進行方法內聯,即把方法執行邏輯直接復制到調用方內部,避免方法調用。

但是,方法內聯是有方法大小限制的,超過了一定大小的方法,沒法做內聯優化。所以,平常應該注意,盡量避免寫很大很冗長的方法。

讓我們來舉個栗子實際感受一下~

兩種書寫風格的大數相加。

如上圖所示,兩個字符串型整數相加,都能實現功能,前一種寫法,把中間過程全都拆開,羅列在的方法內,整個方法雖然理解起來稍微方便些,但整體顯得冗長;第二種方法,把各個條件都囊括在了for循環條件內,三行代碼完成整體操作。

如果要去評價,我覺得大部分人都會說第二種寫的好,但是,第二種的好難道真的局限于優雅么?

  1. //添加JVM啟動參數,用于打印代碼執行過程中的編譯詳情 
  2. //-XX:+PrintCompilation 
  3. String num1 = "12345"
  4. String num2 = "23456"
  5. //循環15000次,因為1.8分層編譯下,各層閾值不一樣,我們取最大閾值 
  6. for (int i=0;i<15001;i++) { 
  7.     rejectionLB1.stringAdd(num1, num2); 
  8.     //rejectionLB1.stringAdd2(num1, num2); 
  9.  } 

執行15000次寫法1

(圖中編譯層次這一列中,3代表C1編譯,4代表C2編譯)

我們看到,隨著代碼的執行次數的增加,一些方法,進行了C1編譯,如我們的主方法stringAdd,而少數方法,從C1編譯提升到了C2編譯,如AbstractStringBuilder::append方法。

執行15000次寫法2

我們看到了什么,stringAdd2 居然在進行到運行后期執行了C2編譯,而且很明顯,方法二的C2編譯的方法,比方法一要多不少。所以,平常寫代碼該注意些什么,是不是顯而易見了。。。

3.2 其他優化

方法內聯雖然只是一種簡單優化,但是,是后續其他優化的基石。

而JVM的分層優化涉及的點非常多[1]:

局部優化:關注局部數據流分析,數組越界檢查消除;寄存器優化,優化跳轉、循環、異常處理等;代碼簡化,如公共表達式提取等等等。

控制流優化:專注于代碼重排序、循環縮減、循環展開、異常定位優化等等等。

全局優化:主要關注冗余消除,如方法調用、鎖;逃逸分析;GC和內存分配優化等等等。

Part4 總結

本篇從RPC的預熱轉發功能,引出了其背后的理論依據--JIT優化。闡述了JIT的基本概念,并用一個實例說明了代碼編寫風格對JIT優化的實際影響。

JIT相關的優化實現起來非常難,不過其原理和作用對我們普通研發也不是特別難理解,學習JIT優化的目的,在于了解JVM底層的運行邏輯和實現,讓我們可以更加信任托管,聚焦業務邏輯,同時在編寫代碼時,盡量用JVM友好的方式進行,從而達到更好看、更高效的目的。

本文轉載自微信公眾號「Coder的技術之路」,可以通過以下二維碼關注。轉載本文請聯系Coder的技術之路公眾號。

 

責任編輯:武曉燕 來源: Coder的技術之路
相關推薦

2017-11-27 14:58:01

MySQL高并發優化性能調優

2020-10-16 16:40:26

Linux高并發命令

2018-07-18 12:12:20

Spark大數據代碼

2020-08-18 13:50:04

Tomcat高并發Java

2023-08-16 11:39:19

高并發調優

2021-03-04 08:39:21

SparkRDD調優

2019-12-17 11:18:37

高并發分布式架構

2019-09-25 09:01:53

高并發架構分布式

2020-02-10 19:16:52

服務端高并發架構

2020-09-03 14:30:40

Tomcat 拆解調優

2022-09-14 22:58:58

Push 推薦Java 開發vivo

2022-04-03 19:51:38

linux服務性能

2021-01-13 05:27:02

服務器性能高并發

2025-05-08 07:03:11

2019-06-28 10:55:04

預熱高并發并發高

2022-05-17 11:46:48

高并發服務數據庫

2020-06-15 08:25:35

Linux 系統 數據

2020-06-15 08:13:42

Linux服務端并發數

2012-03-09 09:51:35

2012-06-01 09:54:03

點贊
收藏

51CTO技術棧公眾號

狼人综合视频| 色哟哟免费网站| 国产一级黄色av| 久久夜色精品国产噜噜av小说| 亚洲一区二区不卡免费| 麻豆av一区| 中文字幕亚洲精品一区| 色播一区二区| 一本色道亚洲精品aⅴ| 在线看无码的免费网站| 三级小视频在线观看| 视频一区二区三区入口| 久久av在线看| 国产一区二区在线观看免费视频| 黄上黄在线观看| 国产麻豆精品久久一二三| 国内精品美女av在线播放| 欧美一区二区三区粗大| 成人香蕉社区| 欧美一区二区视频在线观看2020 | 电影在线一区| 成人涩涩免费视频| 午夜精品国产精品大乳美女| 综合 欧美 亚洲日本| 中文字幕区一区二区三| 亚洲一区视频在线| 手机成人av在线| 国产精品久久一区二区三区不卡| 日本欧美久久久久免费播放网| 亚洲午夜女主播在线直播| 中文字幕av一区二区三区人妻少妇| 成人美女大片| 五月婷婷综合激情| 青青草原成人| 伊人亚洲综合网| 国产精品毛片久久| 日韩女优av电影在线观看| 精品久久久久久无码国产| av在线网页| 久久理论电影网| 国产精品亚洲一区二区三区| 5566中文字幕| 老汉色老汉首页av亚洲| 日韩免费成人网| 一区二区免费av| 久久xxx视频| 欧洲日韩一区二区三区| 在线视频一二三区| 久热国产在线| 亚洲欧美激情插| 自拍偷拍视频在线| 午夜成人免费影院| www.欧美日韩国产在线| 国产精品国产一区二区| 超碰在线观看91| 中文在线日韩| 欧美精品免费播放| 真实国产乱子伦对白在线| 你懂的在线观看一区二区| 欧美tk丨vk视频| 日本精品一二三| 国产精品香蕉| 91精品国产91久久综合桃花| 日韩av黄色网址| 蜜桃视频在线观看播放| 亚洲欧美激情在线| 日本精品一区二区三区高清 久久| 香蕉视频成人在线| 国产成人亚洲综合a∨婷婷| 亚洲一区二区少妇| 日韩精品在线一区二区三区| 狠狠入ady亚洲精品| 欧美丰满老妇厨房牲生活| 久久久久久久久久99| 亚洲午夜精品久久久久久app| 在线亚洲欧美视频| 国产在线免费看| 欧美人与物videos另类xxxxx| 91精品欧美一区二区三区综合在| 欧美一级片中文字幕| 欧洲成人一区| 日韩欧美中文字幕公布| 国产毛片毛片毛片毛片毛片毛片| 精品在线99| www.欧美三级电影.com| 美女被到爽高潮视频| 手机亚洲手机国产手机日韩| 欧美精品日韩三级| 日韩成人av毛片| 狠狠入ady亚洲精品经典电影| xvideos亚洲| 久久久.www| 亚洲精品国产首次亮相| 久久频这里精品99香蕉| 亚洲成人生活片| 一二三区精品| 91久久在线观看| 亚洲人成色777777精品音频| 99精品欧美一区二区三区综合在线| 欧美第一黄网| 青青久草在线| 伊人色综合久久天天人手人婷| 香港三级韩国三级日本三级| 国内欧美日韩| 日韩av中文在线| 成人高潮免费视频| 美女久久一区| 国产精品日本一区二区| 1769视频在线播放免费观看| 亚洲第一久久影院| 一女被多男玩喷潮视频| 亚洲欧洲二区| 日韩女优电影在线观看| 99久久久无码国产精品衣服| 亚洲午夜av| 热久久免费视频精品| 国产伦精品一区二区三区免.费 | 色一情一交一乱一区二区三区| 视频精品在线观看| 一区二区三区视频在线| 91麻豆制片厂| 中文字幕午夜精品一区二区三区| 蜜臀久久99精品久久久无需会员 | 国产午夜精品一区二区三区| 中文字幕第24页| 四虎成人av| 全亚洲最色的网站在线观看| 欧美一区二区三区黄片 | 日韩av无码中文字幕| 国产一区二区日韩精品| 国产精品推荐精品| 国产原创视频在线观看| 欧美午夜片在线观看| theav精尽人亡av| 影音先锋久久| 国产精品入口夜色视频大尺度 | 一区二区三区美女xx视频| 日韩精品视频免费播放| 国产999精品久久久久久绿帽| 国产系列第一页| 国产亚洲成av人片在线观看| 日本道色综合久久| 波多野结衣福利| 性8sex亚洲区入口| 久久久久久国产精品一区| а√天堂8资源在线| 精品视频免费在线| 丰满人妻一区二区三区53视频| 三区四区不卡| 777777777亚洲妇女| 老牛影视av牛牛影视av| 日本一区二区三区视频视频| 国产精品乱码久久久久| 日本亚洲视频| 九九热精品视频国产| 亚洲国产精品久久久久久久| 一区二区三区精品在线| 精品人妻一区二区乱码| 精品美女视频| 国内外成人免费激情在线视频 | 一区二区成人av| 男人天堂视频在线| 成人avav影音| 国产精品亚洲αv天堂无码| 伊人成综合网yiren22| 国产97在线播放| 欧美一级视频免费| 一区在线观看免费| 亚洲精品一二三四| 久久综合国产| 91影院未满十八岁禁止入内| 国产精品69xx| 日韩精品久久久久久福利| 精品人妻一区二区色欲产成人| 国产盗摄视频一区二区三区| www.好吊操| 成人亚洲精品| 久久久久久久亚洲精品| 日av在线播放| 欧美欧美午夜aⅴ在线观看| 在线观看美女av| 成人免费毛片嘿嘿连载视频| 欧美黄网站在线观看| 国产成人高清精品免费5388| 欧美一区二区.| 成年人在线观看网站| 色欧美片视频在线观看| 成人信息集中地| 成人一区二区视频| 欧洲熟妇精品视频| 欧美在线网站| 日本不卡二区| 中文一区二区三区四区| 国产91在线高潮白浆在线观看| 日韩一二三四| 欧美日韩免费在线观看| 91精品国自产在线| 国产99一区视频免费| 中文字幕第36页| 欧美日韩水蜜桃| 国产精品久久91| 国产视频网站在线| 欧美tickling网站挠脚心| 强乱中文字幕av一区乱码| 国产一区二区导航在线播放| 欧美视频第一区| 欧美亚洲国产激情| 成人永久免费| 亚洲欧洲专区| 欧美黑人一级爽快片淫片高清| www.国产三级| 亚洲福利国产精品| 色婷婷粉嫩av| 国产午夜精品一区二区三区四区| 国产成人综合一区| 日本一区二区在线看| 国产日产欧美a一级在线| а√在线中文网新版地址在线| 深夜福利国产精品| 黄色影院在线播放| 日韩电影中文字幕av| 波多野结衣日韩| 精品久久香蕉国产线看观看gif| 大地资源高清在线视频观看| 久久精品欧美一区二区三区麻豆| 亚洲高清无码久久| 日产国产高清一区二区三区| 国产精品久久中文字幕| 午夜电影亚洲| 欧美日韩亚洲一区二区三区四区| 综合久久成人| aa成人免费视频| 大胆人体一区| 午夜精品福利视频| 日韩黄色影院| 中文国产亚洲喷潮| 国产中文字幕在线观看| 制服丝袜日韩国产| 日本熟妇毛耸耸xxxxxx| 亚洲久本草在线中文字幕| 成人一级黄色大片| 99国产麻豆精品| 污污污www精品国产网站| 日韩二区在线观看| 久久福利一区二区| 国产精品羞羞答答在线观看| 91最新在线免费观看| 日韩精品一级毛片在线播放| 午夜精品www| heyzo高清在线| 国产91|九色| 羞羞电影在线观看www| 久久成人国产精品| 国产一二在线观看| 亚洲日韩欧美视频一区| 亚洲精品综合网| 精品国产露脸精彩对白| 欧美亚洲精品在线观看| 欧美一区日韩一区| 国产浮力第一页| 欧美性一二三区| 国产精品久久久午夜夜伦鲁鲁| 日韩欧美精品免费在线| 欧产日产国产69| 欧美日韩国产片| 中文字幕精品无| 亚洲电影第三页| 69国产精品视频免费观看| 色欧美乱欧美15图片| 在线观看免费黄色小视频| 欧美一级高清大全免费观看| a片在线免费观看| 欧美性xxxx极品hd满灌| 日本久久综合网| 91精品免费观看| 一区二区国产欧美| 日韩欧美高清一区| 日本不卡视频一区二区| 亚洲国产中文字幕久久网| 国产情侣av在线| 欧美情侣在线播放| 曰批又黄又爽免费视频| 91精品国产乱码久久蜜臀| 少妇荡乳情欲办公室456视频| 欧美一区二区免费视频| 手机看片1024日韩| 中文字幕国内精品| 黑人另类精品××××性爽| 欧美大胆a视频| 日本天码aⅴ片在线电影网站| 久久久精品在线| 国产精品原创| 91精品国产91久久久久久吃药| 第四色男人最爱上成人网| 日本精品久久久| 国产美女精品视频免费播放软件| 国产精品自拍网| 欧美大胆a级| 久久婷婷国产综合尤物精品| 麻豆一区二区| 制服诱惑一区| 男女精品网站| 亚洲av无码一区东京热久久| 中文字幕av一区二区三区免费看 | 青草在线视频| 国产精品一区二区电影| 风间由美中文字幕在线看视频国产欧美 | 久久偷看各类女兵18女厕嘘嘘| 免费网站成人| 伦理中文字幕亚洲| 欧美wwww| 国产91精品久久久久| 久久影院一区二区三区| 91视频在线免费观看| 高清一区二区三区| 国模一区二区三区私拍视频| 亚洲国产精品嫩草影院久久av| 欧美综合激情| 国产精品成人a在线观看| 国产淫片av片久久久久久| 国产91丝袜在线观看| 一区二区三区在线播放视频| 色天使色偷偷av一区二区| 在线免费看av片| 亚洲色图校园春色| 在线看的毛片| 成人激情在线观看| 精品国产一级毛片| 黑森林福利视频导航| 精品中文字幕一区二区小辣椒| 国产精品免费无码| 亚洲精品中文在线| 国产精品视频久久久久久久| 精品国产一区二区三区不卡 | 国产欧美日韩视频在线| 日韩精品 欧美| 波波电影院一区二区三区| 久久久久久久久久久久久久久久久| 91精品国产综合久久久久| 天堂网av2014| 自拍视频国产精品| 国产精品国精产品一二| 99re热精品| 欧美日韩亚洲三区| 国产乱国产乱老熟300部视频| 亚洲欧美日韩中文字幕一区二区三区| 日本少妇裸体做爰| 亚洲精品ady| 韩国av网站在线| 91视频国产精品| 欧美在线国产| 五月天丁香社区| 欧美日韩国产精品一区二区三区四区 | 图片区亚洲欧美小说区| 男人的天堂狠狠干| fc2成人免费人成在线观看播放| 日本系列第一页| 亚洲人成网站免费播放| 暖暖在线中文免费日本| 国产精品视频免费在线观看| 久久精品高清| 中文字幕avav| 午夜欧美在线一二页| www.成人精品| 日韩视频免费观看| 国产精选久久| 日韩av高清在线看片| 久久久蜜臀国产一区二区| 丰满人妻一区二区三区四区| www.久久久久| 欧美另类激情| 日韩av电影免费播放| 麻豆国产一区二区| 青娱乐国产盛宴| 欧美丰满嫩嫩电影| 在线āv视频| 欧美不卡三区| 韩国成人精品a∨在线观看| 国产网友自拍视频| 日韩精品一区二区三区中文不卡 | av无码一区二区三区| 日本高清无吗v一区| 国产精品刘玥久久一区| 国产欧美日韩一区| 青青草国产成人av片免费| 一区二区在线观看免费视频| 日韩精品高清视频| 成人亚洲精品| 青春草在线视频免费观看| 国产99精品在线观看| 久久久久久av无码免费网站| 亚洲精品一区二区网址| 无遮挡爽大片在线观看视频 | 在线播放日韩| 中文字幕第3页| 欧美色涩在线第一页| av第一福利在线导航| 亚洲日本无吗高清不卡| 波多野结衣中文字幕一区| 国产一区二区小视频|