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

HttpClient 在vivo內(nèi)銷瀏覽器的高并發(fā)實踐優(yōu)化

系統(tǒng) 瀏覽器
HttpClient作為Java程序員最常用的Http工具,其對Http連接的管理能簡化開發(fā),并且提升連接重用效率;在正常情況下,HttpClient能幫助我們高效管理連接,但在一些并發(fā)高,報文體較大的情況下,如果再遇到網(wǎng)絡(luò)波動,如何保證連接被高效利用,有哪些優(yōu)化空間。

?作者|vivo 互聯(lián)網(wǎng)服務(wù)器團隊- Zhi Guangquan

HttpClient作為Java程序員最常用的Http工具,其對Http連接的管理能簡化開發(fā),并且提升連接重用效率;在正常情況下,HttpClient能幫助我們高效管理連接,但在一些并發(fā)高,報文體較大的情況下,如果再遇到網(wǎng)絡(luò)波動,如何保證連接被高效利用,有哪些優(yōu)化空間。

一、問題現(xiàn)象

北京時間X月X日,瀏覽器信息流服務(wù)監(jiān)控出現(xiàn)異常,主要表現(xiàn)在以下三個方面:

從某個時間點開始,云監(jiān)控顯示部分Http接口的熔斷器被打開,而且從明細列表可以發(fā)現(xiàn)問題機器:

圖片

圖片

2. 從PAAS平臺Hystrix熔斷管理界面中可以進一步確認問題機器的所有Http接口調(diào)用均出現(xiàn)了熔斷:

3. 日志中心有大量從Http連接池獲取連接的異常:

  • org.apache.http.impl.execchain.RequestAbortedException: Request aborted。

二、問題定位

綜合以上三個現(xiàn)象,大概可以推測出問題機器的TCP連接管理出了問題,可能是虛擬機問題,也可能是物理機問題;與運維與系統(tǒng)側(cè)溝通后,發(fā)現(xiàn)虛擬機與物理機均無明顯異常,第一時間聯(lián)系運維重啟了問題機器,線上問題得到解決。

2.1 臨時解決方案

幾天以后,線上部分其他機器也陸續(xù)出現(xiàn)了上述現(xiàn)象,此時基本可以確認是服務(wù)本身有問題;既然問題與TCP連接相關(guān),于是聯(lián)系運維在問題機器上建立了一個作業(yè)查看TCP連接的狀態(tài)分布:

netstat -ant|awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}'

?結(jié)果如下:

圖片

如上圖,問題機器的CLOSE_WAIT狀態(tài)的連接數(shù)已經(jīng)接近200左右(該服務(wù)Http連接池最大連接數(shù)設(shè)置的250),那問題直接原因基本可以確認是CLOSE_WAIT狀態(tài)的連接過多導致的;本著第一時間先解決線上問題的原則,先把連接池調(diào)整到500,然后讓運維重啟了機器,線上問題暫時得到解決。

2.2 原因分析

調(diào)整連接池大小只是暫時解決了線上問題,但是具體原因還不確定,按照以往經(jīng)驗,出現(xiàn)連接無法正常釋放基本都是開發(fā)者使用不當,在使用完成后沒有及時關(guān)閉連接;但很快這個想法就被否定了,原因顯而易見:當前的服務(wù)已經(jīng)在線上運行了一周左右,中間沒有經(jīng)歷過發(fā)版,以瀏覽器的業(yè)務(wù)量,如果是連接使用完沒有及時關(guān)。

閉,250的連接數(shù)連一分鐘都撐不到就會被打爆。那么問題就只能是一些異常場景導致的連接沒有釋放;于是,重點排查了下近期上線的業(yè)務(wù)接口,尤其是那種數(shù)據(jù)包體較大,響應時間較長的接口,最終把目標鎖定在了某個詳情頁優(yōu)化接口上;先查看處于CLOSE_WAIT狀態(tài)的IP與端口連接對,確認對方服務(wù)器IP地址。

netstat-tulnap|grep CLOSE_WAIT

圖片

經(jīng)過與合作方確認,目標IP均來自該合作方,與我們的推測是相符的。

2.3 TCP抓包

在定位問題的同時,也讓運維同事幫忙抓取了TCP的數(shù)據(jù)包,結(jié)果表明確實是客戶端(瀏覽器服務(wù)端)沒返回ACK結(jié)束握手,導致?lián)]手失敗,客戶端處于了CLOSE_WAIT狀態(tài),數(shù)據(jù)包的大小也與懷疑的問題接口相符。

圖片

為了方便大家理解,我從網(wǎng)上找了一張圖,大家可以作為參考:

圖片

CLOSE_WAIT是一種被動關(guān)閉狀態(tài),如果是SERVER主動斷開的連接,那么就會在CLIENT出現(xiàn)CLOSE_WAIT的狀態(tài),反之同理;

通常情況下,如果客戶端在一次http請求完成后沒有及時關(guān)閉流(tcp中的流套接字),那么超時后服務(wù)端就會主動發(fā)送關(guān)閉連接的FIN,客戶端沒有主動關(guān)閉,所以就停留在了CLOSE_WAIT狀態(tài),如果是這種情況,很快連接池中的連接就會被耗盡。

所以,我們今天遇到的情況(處于CLOSE_WAIT狀態(tài)的連接數(shù)每天都在緩慢增長),更像是某一種異常場景導致的連接沒有關(guān)閉。

2.4 獨立連接池

為了不影響其他業(yè)務(wù)場景,防止出現(xiàn)系統(tǒng)性風險,我們先把問題接口連接池進行了獨立管理。

2.5 深入分析

帶著2.3的疑問我們仔細查看一下業(yè)務(wù)調(diào)用代碼:

try {
httpResponse = HttpsClientUtil.getHttpClient().execute(request);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}catch (Exception e){
log.error("");
}finally {
IOUtils.closeQuietly(is);
IOUtils.closeQuietly(httpResponse);
}

這段代碼存在一個明顯的問題:既關(guān)閉了數(shù)據(jù)傳輸流( IOUtils.closeQuietly(is)),也關(guān)閉了整個連接(IOUtils.closeQuietly(httpResponse)),這樣我們就沒辦法進行連接的復用了;但是卻更讓人疑惑了:既然每次都手動關(guān)閉了連接,為什么還會有大量CLOSE_WAIT狀態(tài)的連接存在呢?

如果問題不在業(yè)務(wù)調(diào)用代碼上,那么只能是這個業(yè)務(wù)接口具有的某種特殊性導致了問題的發(fā)生;通過抓包分析發(fā)現(xiàn)該接口有一個明顯特征:接口返回報文較大,平均在500KB左右。那么問題就極有可能是報文過大導致了某種異常,造成了連接不能被復用也不能被釋放。

2.6 源碼分析

開始分析之前,我們需要了解一個基礎(chǔ)知識:Http的長連接和短連接。所謂長連接就是建立起連接之后,可以復用連接多次進行數(shù)據(jù)傳輸;而短連接則是每次都需要重新建立連接再進行數(shù)據(jù)傳輸。

而通過對接口的抓包我們發(fā)現(xiàn),響應頭里有Connection:keep-live字樣,那我們就可以重點從HttpClient對長連接的管理入手來進行代碼分析。

2.6.1 連接池初始化 

初始化方法:

圖片

進入PoolingHttpClientConnectionManager這個類,有一個重載構(gòu)造方法里包含連接存活時間參數(shù):

圖片

順著繼續(xù)向下查看:圖片

manager的構(gòu)造方法到此結(jié)束,我們不難發(fā)現(xiàn)validityDeadline會被賦值給expiry變量,那我們接下來就要看下HttpClient是在哪里使用expiry這個參數(shù)的;

通常情況下,實例對象被構(gòu)建出來的時候會初始化一些策略參數(shù),此時我們需要查看構(gòu)建HttpClient實例的方法來尋找答案:

圖片

此方法包含一系列的初始化操作,包括構(gòu)建連接池,給連接池設(shè)置最大連接數(shù),指定重用策略和長連接策略等,這里我們還注意到,HttpClient創(chuàng)建了一個異步線程,去監(jiān)聽清理空閑連接。

當然,前提是你打開了自動清理空閑連接的配置,默認是關(guān)閉的。

圖片

圖片

接著我們就看到了HttpClient關(guān)閉空閑連接的具體實現(xiàn),里面有我們想要看到的內(nèi)容:

圖片

圖片

此時,我們可以得出第一個結(jié)論:可以在初始化連接池的時候,通過實現(xiàn)帶參的PoolingHttpClientConnectionManager構(gòu)造方法,修改validityDeadline的值,從而影響HttpClient對長連接的管理策略。

2.6.2 執(zhí)行方法入口

先找到執(zhí)行入口方法:

org.apache.http.impl.execchain.MainClientExec.execute,看到了keepalive相關(guān)代碼實現(xiàn):

圖片

我們來看下默認的策略:

圖片

圖片

由于中間的調(diào)用邏輯比較簡單,就不在這里一一把調(diào)用的鏈路貼出來了,這邊直接給結(jié)論:HttpClient對沒有指定連接有效時間的長連接,有效期設(shè)置為永久(Long.MAX_VALUE)。

綜合以上分析,我們可以得出最終結(jié)論:

HttpClient通過控制newExpiry和validityDeadline來實現(xiàn)對長連接的有效期的管理,而且對沒有指定連接有效時間的長連接,有效期設(shè)置為永久。

至此我們可以大膽給出一個猜測:長連接的有效期是永久,而因為某種異常導致長連接沒有被及時關(guān)閉,而永久存活了下來,不能被復用也不能被釋放。(只是根據(jù)現(xiàn)象的猜測,雖然最后被證實并不完全正確,但確實提高了我們解決問題的效率)。

基于此,我們也可以通過改變這兩個參數(shù)來實現(xiàn)對長連接的管理:

圖片

這樣簡單修改上線后,處于close_wait狀態(tài)的連接數(shù)沒有再持續(xù)增長,這個線上問題也算是得到了徹底的解決。

但此時相信大家也都存在一個疑問:作為被廣泛使用的開源框架,HttpClient難道對長連接的管理這么粗糙嗎?一個簡單的異常調(diào)用就能導致整個調(diào)度機制徹底崩潰,而且不會自行恢復;

于是帶著疑問,再一次詳細查看了HttpClient的源碼。

三、關(guān)于HttpClient

3.1 前言

開始分析之前,先簡單介紹下幾個核心類:

  • 【PoolingHttpClientConnectionManager】:連接池管理器類,主要作用是管理連接和連接池,封裝連接的創(chuàng)建、狀態(tài)流轉(zhuǎn)以及連接池的相關(guān)操作,是操作連接和連接池的入口方法;
  • 【CPool】:連接池的具體實現(xiàn)類,連接和連接池的具體實現(xiàn)均在CPool以及抽象類AbstractConnPool中實現(xiàn),也是分析的重點;
  • 【CPoolEntry】:具體的連接封裝類,包含連接的一些基礎(chǔ)屬性和基礎(chǔ)操作,比如連接id,創(chuàng)建時間,有效期等;
  • 【HttpClientBuilder】:HttpClient的構(gòu)造器,重點關(guān)注build方法;
  • 【MainClientExec】:客戶端請求的執(zhí)行類,是執(zhí)行的入口,重點關(guān)注execute方法;
  • 【ConnectionHolder】:主要封裝釋放連接的方法,是在PoolingHttpClientConnectionManager的基礎(chǔ)上進行了封裝。

3.2 兩個連接

  • 最大連接數(shù)(maxTotal)
  • 最大單路由連接數(shù)(maxPerRoute)
  • 最大連接數(shù),顧名思義,就是連接池允許創(chuàng)建的最大連接數(shù)量;

  • 最大單路由連接數(shù)可以理解為同一個域名允許的最大連接數(shù),且所有maxPerRoute的總和不能超過maxTotal。以瀏覽器為例,瀏覽器對接了頭條和一點,為了做到業(yè)務(wù)隔離,不相互影響,可以把maxTotal設(shè)置成500,而defaultMaxPerRoute設(shè)置成400,主要是因為頭條的業(yè)務(wù)接口量遠大于一點,defaultMaxPerRoute需要滿足調(diào)用量較大的一方。

3.3 三個超時

  • connectionRequestTimout
  • connetionTimeout
  • socketTimeout

【connectionRequestTimout】:指從連接池獲取連接的超時時間;

【connetionTimeout】:指客戶端和服務(wù)器建立連接的超時時間,超時后會報

  • ConnectionTimeOutException異常;

【socketTimeout】:指客戶端和服務(wù)器建立連接后,數(shù)據(jù)傳輸過程中數(shù)據(jù)包之間間隔的最大時間,超出后會拋出SocketTimeOutException。

一定要注意:這里的超時不是數(shù)據(jù)傳輸完成,而只是接收到兩個數(shù)據(jù)包的間隔時間,這也是很多線上詭異問題發(fā)生的根本原因。

3.4 四個容器

  • free
  • leased
  • pending
  • available

【free】:空閑連接的容器,連接還沒有建立,理論上freeSize=maxTotal -leasedSize

  • - availableSize(其實HttpClient中并沒有該容器,只是為了描述方便,特意引入的一個容器)。

【leased】:租賃連接的容器,連接創(chuàng)建后,會從free容器轉(zhuǎn)移到leased容器;也可以直接從available容器租賃連接,租賃成功后連接被放在leased容器中,此種場景主要是連接的復用,也是連接池的一個很重要的能力。

【pending】:等待連接的容器,其實該容器只是在等待連接釋放的時候用作阻塞線程,下文也不會再提到,感興趣的可以參考具體實現(xiàn)代碼,其與connectionRequestTimout相關(guān)。

【available】:可復用連接的容器,通常直接從leased容器轉(zhuǎn)移過來,長連接的情況下完成通信后,會把連接放到available列表,一些對連接的管理和釋放通常都是圍繞該容器進行的。

注:由于存在maxTotal和maxPerRoute兩個連接數(shù)限制,下文在提到這四種容器時,如果沒有帶前綴,都代表是總連接數(shù),如果是r.xxxx則代表是路由連接里的某個容器大小。

圖片

maxTotal的組成

3.5 連接的產(chǎn)生與管理

  1. 循環(huán)從available容器中獲取連接,如果該連接未失效(根據(jù)上文提到的expiry字段判斷),則把該連接從available容器中刪除,并添加到leased容器,并返回該連接;
  2. 如果在第一步中沒有獲取到可用連接,則判斷r.available + r.leased是否大于maxPerRoute,其實就是判斷是否還有free連接;如果不存在,則需要把多余分配的連接釋放掉(r. available + r.leased - maxPerRoute),來保證真實的連接數(shù)受maxPerRoute控制(至于為什么會出現(xiàn)r.leased+r.available>maxPerRoute的情況其實也很好理解,雖然在整個狀態(tài)流轉(zhuǎn)過程都加了鎖,但是狀態(tài)的流轉(zhuǎn)并不是原子操作,存在一些異常的場景都會導致狀態(tài)短時間不正確);所以我們可以得出結(jié)論,maxPerRoute只是一個理論上的最大數(shù)值,其實真實產(chǎn)生的連接數(shù)在短時間內(nèi)是可能大于這個值的;
  3. 在真實的連接數(shù)(r .leased+ r .available)小于maxPerRoute且maxTotal>leased的情況下:如果free>0,則重新創(chuàng)建一個連接;如果free=0,則把available容器里的最早創(chuàng)建的一個連接關(guān)閉掉,然后再重新創(chuàng)建一個連接;看起來有點繞,其實就是優(yōu)先使用free容器里的連接,獲取不到再釋放available容器里的連接;
  4. 如果經(jīng)過上述過程仍然沒有獲取到可用連接,那就只能等待一個connectionRequestTimout時間,或者有其他線程的信號通知來結(jié)束整個獲取連接的過程。

圖片

3.6 連接的釋放

  1. 如果是長連接(reusable),則把該連接從leased容器中刪除,然后添加到available容器的頭部,設(shè)置有效期為expiry;
  2. 如果是短連接(non-reusable),則直接關(guān)閉該連接,并且從released容器中刪除,此時的連接被釋放,處于free容器中;
  3. 最后,喚醒“連接的產(chǎn)生與管理“第四部中的等待線程。

整個過程分析完,了解了httpclient如何管理連接,再回頭來看我們遇到的那個問題就比較清晰了:

正常情況下,雖然建立了長連接,但是我們會在finally代碼塊里去手動關(guān)閉,此場景其實是觸發(fā)了“連接的釋放”中的步驟2,連接直接被關(guān)閉;所以正常情況下是沒有問題的,長連接其實并沒有發(fā)揮真正的作用;

那問題自然就只能出現(xiàn)在一些異常場景,導致了長連接沒有被及時關(guān)閉,結(jié)合最初的分析,是服務(wù)端主動斷開了連接,那大概率出現(xiàn)在一些超時導致連接斷開的異常場景,我們再回到

org.apache.http.impl.execchain.MainClientExec這個類,發(fā)現(xiàn)這樣幾行代碼:

圖片

connHolder.releaseConnection()對應“連接的釋放”中提到的步驟1,此時連接只是被放入了available容器,并且有效期是永久;

return new HttpResponseProxy(response, null)返回的ConnectionHolder是null,結(jié)合IOUtils.closeQuietly(httpResponse)的具體實現(xiàn),連接并沒有及時關(guān)閉,而是永久的放在了available容器里,并且狀態(tài)為CLOSE_WAIT,無法被復用;

圖片

根據(jù) “連接的產(chǎn)生與管理”的步驟3的描述,在free容器為空的時候httpclient是能夠主動釋放available里的連接的,即使連接永久的放在了available容器里,理論上也不會造成連接永遠無法釋放;

然而再結(jié)合“連接的產(chǎn)生與管理”的步驟4,當free容器為空了以后,從連接池獲取連接時需要等待available容器里的連接被釋放掉,整個過程是單線程的,效率極低,勢必會造成擁堵,最終導致大量等待獲取連接超時報錯,這也與我們線上看到的場景相吻合。

四、總結(jié)

  1. 連接池的主要功能有兩個:連接的管理和連接的復用,在使用連接池的時候一定要注意只需關(guān)閉當前數(shù)據(jù)流,而不要每次都關(guān)閉連接,除非你的目標訪問地址是完全隨機的;
  2. maxTotal和maxPerRoute的設(shè)置一定要謹慎,合理的分配參數(shù)可以做到業(yè)務(wù)隔離,但如果無法準確做出評估,可以暫時設(shè)置成一樣,或者用兩個獨立的httpclient實例;
  3. 一定記得要設(shè)置長連接的有效期,用PoolingHttpClientConnectionManager(60, TimeUnit.SECONDS)構(gòu)造函數(shù),尤其是調(diào)用量較大的情況,防止發(fā)生不可預知的問題;
  4. 可以通過設(shè)置evictIdleConnections(5, TimeUnit.SECONDS)定時清理空閑連接,尤其是http接口響應時間短,并發(fā)量大的情況下,及時清理空閑連接,避免從連接池獲取連接的時候發(fā)現(xiàn)連接過期再去關(guān)閉連接,能在一定程度上提高接口性能。

五、寫在最后

HttpClient作為當前使用最廣泛的基于Java語言的Http調(diào)用框架,在筆者看來其存在兩點明顯不足:

  1. 沒有提供監(jiān)控連接狀態(tài)的入口,也沒有提供能外部介入動態(tài)影響連接生命周期的擴展點,一旦線上出現(xiàn)問題可能就是致命的;
  2. 此外,其獲取連接的方式是采用同步鎖的方式,在并發(fā)較高的情況下存在一定的性能瓶頸,而且其對長連接的管理方式存在問題,稍不注意就會導致建立大量異常長連接而無法及時釋放,造成系統(tǒng)性災難。
責任編輯:未麗燕 來源: vivo互聯(lián)網(wǎng)技術(shù)
相關(guān)推薦

2022-04-28 09:36:47

Redis內(nèi)存結(jié)構(gòu)內(nèi)存管理

2025-09-25 10:42:46

2025-03-31 10:42:31

2023-10-07 08:54:28

項目httpPost對象

2019-06-25 09:32:16

Redis海量數(shù)據(jù)高并發(fā)

2010-04-05 21:57:14

Netscape瀏覽器

2016-11-09 21:09:54

mysqlmysql優(yōu)化

2022-06-01 09:04:58

Kafka運維副本遷移

2023-12-05 07:51:54

2018-01-19 14:39:53

瀏覽器頁面優(yōu)化

2017-10-09 13:39:26

瀏覽器渲染服務(wù)器

2021-04-21 07:12:08

微軟Edge瀏覽器

2025-11-18 05:00:00

2017-03-03 16:50:01

2012-03-20 11:31:58

移動瀏覽器

2012-03-19 17:25:22

2012-03-20 11:41:18

海豚瀏覽器

2012-03-20 11:07:08

2023-08-29 08:28:43

React并發(fā)更新

2023-03-15 21:38:43

短視頻服務(wù)器
點贊
收藏

51CTO技術(shù)棧公眾號

成人一区二区三区四区| 亚洲欧洲一区二区三区久久| 懂色av粉嫩av蜜臀av| 国产手机视频在线| 日韩天天综合| 亚洲欧美成人网| 免费精品99久久国产综合精品应用| 麻豆网在线观看| 成人免费视频视频在线观看免费 | 色欧美日韩亚洲| 一区二区三区在线视频111 | 亚洲男人天堂久| 欧美成人三级在线播放| 日本高清在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 国产精品精品视频| 精品无码久久久久| 欧美亚洲精品在线| 精品国产乱码久久久久久久| 亚洲五月天综合| 超碰在线caoporn| 久久尤物电影视频在线观看| 成人做爽爽免费视频| 亚洲另类欧美日韩| 中国成人一区| 一区二区三区美女xx视频| 91性高潮久久久久久久| 日本乱码一区二区三区不卡| 成人欧美一区二区三区白人| 欧美日韩一区二区三| 99精品视频免费看| 日韩av在线播放中文字幕| 欧美激情综合色| 国产主播av在线| 美女一区二区在线观看| 制服丝袜激情欧洲亚洲| 日韩手机在线观看视频| 国产不卡人人| 亚洲黄色片在线观看| 亚洲精品一区二区三| 亚洲色图欧美视频| 国产91丝袜在线播放0| 国产日本欧美一区二区三区| 国语对白永久免费| 一本一本久久| 国内精品一区二区三区| 无码人妻精品一区二区三区夜夜嗨| 国产成人一区| 国产偷亚洲偷欧美偷精品| 亚洲午夜久久久久久久久| 国内不卡的一区二区三区中文字幕| 色综合激情五月| 男人操女人免费软件| 国模雨婷捆绑高清在线| 亚洲黄色小视频| 亚洲精品天堂成人片av在线播放 | 精品视频91| 69堂国产成人免费视频| www.久久91| 国产欧美在线观看免费| 欧美日韩三级视频| 日韩大片一区二区| 四虎精品永久免费| 欧美欧美欧美欧美| 中文av字幕在线观看| 麻豆久久久久| 4438成人网| 欧美国产在线一区| 精品久久亚洲| 欧美成人r级一区二区三区| 最好看的中文字幕| 成人精品毛片| 精品中文视频在线| 亚洲久久久久久久| 精品视频亚洲| 久久天天躁狠狠躁老女人| 亚洲欧美卡通动漫| 欧美1区免费| 欧美激情综合色| 黑人精品无码一区二区三区AV| 亚洲一区日本| 国产精品激情自拍| 国产精品一级二级| 国产成人亚洲精品狼色在线 | 自拍偷拍一区| 中文字幕亚洲专区| www深夜成人a√在线| 欧美三级乱码| 欧美洲成人男女午夜视频| 日韩欧美国产另类| 精品无人区卡一卡二卡三乱码免费卡| 91久久久久久| 女人18毛片水真多18精品| 91视频免费观看| 日本一区免费观看| 成人免费网站在线观看视频| 亚洲午夜电影网| 妺妺窝人体色www在线观看| 亚洲爽爆av| 亚洲国产精久久久久久久| 国产精品扒开腿做爽爽| 久久性感美女视频| 久久男人av资源网站| 日韩综合在线观看| 精东粉嫩av免费一区二区三区| 国产精品手机视频| 成人p站proumb入口| 亚洲美女区一区| 苍井空浴缸大战猛男120分钟| 日韩免费在线电影| 亚洲国产欧美在线成人app| 天天干天天舔天天操| 欧美日韩a区| 国产成人小视频在线观看| 99久久精品免费看国产交换| 2023国产精品视频| 免费成人进口网站| 亚洲高清黄色| 亚洲成人精品久久| 日韩在线一卡二卡| 性8sex亚洲区入口| 99re6在线| www亚洲人| 精品久久久久久中文字幕大豆网| 天堂av在线8| 国产精品欧美在线观看| 久久久免费高清电视剧观看| 91精品在线视频观看| 久久蜜桃av一区二区天堂| 国内少妇毛片视频| 国产激情综合| 日韩网站免费观看| 国产精品午夜一区二区| 91小视频在线| 日本欧美视频在线观看| 日韩欧乱色一区二区三区在线 | 欧美高清性xxxx| 欧美极品一区二区三区| 国产一区视频在线播放| 黄色的视频在线免费观看| 亚洲午夜久久久久久久久电影院| 日韩在线一区视频| 日本精品黄色| 国产精品美女久久| 国产香蕉视频在线看| 欧美网站在线观看| 成人网站免费观看| 亚洲理论在线| 国产伦一区二区三区色一情| 在线观看中文| 日韩精品中文字幕一区二区三区| wwwww黄色| 日韩av在线发布| 日韩精品一区二区三区外面| 欧美精品日日操| 亚洲区在线播放| 激情网站在线观看| 国产农村妇女毛片精品久久麻豆 | 国产激情一区二区三区在线观看| a级片国产精品自在拍在线播放| 3d成人动漫网站| www.毛片com| 国产精品一区二区黑丝| 国产人妻人伦精品| jizz性欧美23| 538国产精品一区二区在线| 亚洲色偷精品一区二区三区| 一本色道久久综合精品竹菊| 少妇无套高潮一二三区| 欧美96一区二区免费视频| 亚洲免费不卡| 精品一区二区三区中文字幕视频 | 精品国产免费一区二区三区| 手机av在线| 亚洲人成在线观看| 一区二区视频播放| 亚洲精品视频在线看| av不卡中文字幕| 国产欧美一区二区色老头 | 亚洲乱色熟女一区二区三区| 亚洲v日本v欧美v久久精品| 中文精品在线观看| 免费久久精品视频| 800av在线免费观看| 天天躁日日躁狠狠躁欧美| 国产精品xxxxx| 99在线视频观看| 国产丝袜一区视频在线观看 | 国产美女一区| 亚洲欧洲一区二区在线观看| 免费看一区二区三区| 亚洲**2019国产| 91亚洲精选| 精品久久久久久久久久久久久久久久久| 日韩免费黄色片| 国产日韩高清在线| 熟妇女人妻丰满少妇中文字幕 | 五月天婷婷激情视频| 天天操夜夜操国产精品| 国产高清精品一区二区三区| 亚洲伦理影院| 欧美精品久久久久久久| 欧美扣逼视频| 日韩欧美国产一区在线观看| 亚洲精品中文字幕乱码三区91| 中文字幕中文字幕中文字幕亚洲无线| 日本人妻一区二区三区| 蜜桃视频在线观看一区| 国产精品成人久久电影| 91精品国产自产拍在线观看蜜| 精品国产乱码久久久久| 二区三区精品| 国产成人一区二区在线| 国产嫩草在线视频| 色噜噜亚洲精品中文字幕| 天天综合天天综合| 欧美一区二区在线观看| 国产熟妇一区二区三区四区| 一区二区三区在线视频播放| 中文字幕免费在线看线人动作大片| 国产**成人网毛片九色| 久久撸在线视频| 午夜在线一区| 很污的网站在线观看| 97精品国产| 日韩av一区二区三区美女毛片| 都市激情亚洲| 91精品网站| 日韩一区二区三免费高清在线观看| 欧美最顶级的aⅴ艳星| 欧美xxxbbb| 久久精品久久久久| 一级日本在线| 在线色欧美三级视频| 精品资源在线看| 精品视频在线导航| 天天干免费视频| 日韩欧美国产一区二区在线播放 | 欧美日韩在线观看首页| 色综合久综合久久综合久鬼88| 美女国产在线| 日韩亚洲欧美中文在线| 超碰国产在线观看| 亚洲欧洲美洲在线综合| 男人久久精品| 亚洲天堂网站在线观看视频| 欧美一区二区视频| 日韩精品极品毛片系列视频| 污视频网站免费观看| 亚洲爱爱爱爱爱| 高清乱码毛片入口| 精品99一区二区三区| 免费观看毛片网站| 亚洲高清久久久久久| 欧美性猛交 xxxx| 亚洲国产精品va| 天堂网在线资源| 亚洲丁香婷深爱综合| 天堂成人在线观看| 日韩精品丝袜在线| 久蕉在线视频| 中文国产成人精品久久一| 99re热久久这里只有精品34| 中国人与牲禽动交精品| 里番在线观看网站| 久热99视频在线观看| 丝袜美女在线观看| 97香蕉久久超级碰碰高清版| 三级在线看中文字幕完整版| 热草久综合在线| 日韩毛片一区| 91天堂在线视频| 精品三级av| 欧美资源一区| 五月激情综合| 国产精品999视频| 六月丁香综合| 亚洲欧美日韩三级| 国产成人啪免费观看软件 | 日韩免费高清视频网站| 狠狠色狠狠色综合人人| 国产日产一区| 国产又粗又爽又黄的视频| 精品电影一区| 欧美一级黄色影院| 国产中文一区二区三区| 国模私拍在线观看| 欧美经典一区二区三区| 91视频综合网| 欧美午夜无遮挡| 国产欧美久久久| 亚洲精品成人免费| 四虎久久免费| 久久人人爽人人爽人人片av高请| 日韩免费福利视频| 91久久综合亚洲鲁鲁五月天| 任你躁在线精品免费| 亚洲欧美日韩国产yyy| 国精品一区二区三区| 热久久精品免费视频| 高清国产一区二区| 中文字幕有码在线播放| 亚洲一区中文在线| 狠狠躁夜夜躁人人爽视频| 欧美成人r级一区二区三区| eeuss影院www在线播放| 久久久视频在线| 婷婷激情成人| 女女同性女同一区二区三区91| 亚洲无中文字幕| 乱子伦视频在线看| 狠狠色综合日日| 色婷婷在线影院| 亚洲一区二区视频在线观看| 最好看的日本字幕mv视频大全| 亚洲福利视频网| v片在线观看| 国产精品一区二区三区久久| 欧美美女在线直播| 亚洲精品天堂成人片av在线播放 | 91精品国产91久久久久福利| 成人97精品毛片免费看| 欧美色欧美亚洲另类七区| 影音先锋亚洲电影| 亚洲午夜精品在线观看| 国产精品国产三级国产普通话99 | 91精品国产综合久久香蕉最新版| 网曝91综合精品门事件在线| 男人添女人下部视频免费| 激情亚洲综合在线| 懂色av蜜桃av| 一本久久a久久精品亚洲| 色欲av永久无码精品无码蜜桃 | 密臀av在线| 91免费电影网站| 久久精品国产亚洲夜色av网站| 37pao成人国产永久免费视频| 波多野结衣91| 国产一级免费av| 日韩视频一区二区在线观看| 欧美成人xxx| 国产欧美亚洲精品| 色综合五月天| 午夜在线观看av| 中文一区在线播放 | 91精品国产91久久久久久最新毛片| 国产精品一区二区三区四区色| 日本一区二区不卡| 亚洲丝袜美腿一区| 岳毛多又紧做起爽| 91亚洲午夜精品久久久久久| 日本熟女一区二区| 亚洲二区中文字幕| 少妇在线看www| 欧美午夜精品理论片a级大开眼界| 夜夜夜久久久| 97超碰在线资源| 91福利小视频| 在线观看麻豆| 亚洲在线免费视频| 欧美a级片一区| 中文字幕第九页| 亚洲高清免费视频| 天堂网在线资源| 日韩av电影中文字幕| 全球成人免费直播| 手机av在线网| 亚洲精品国产一区二区精华液 | 日精品一区二区| 一区二区三区在线播放视频| 制服.丝袜.亚洲.另类.中文 | 伊人久久综合影院| 天堂中文视频在线| 日韩理论片一区二区| а√天堂资源在线| 91国内揄拍国内精品对白| 九一亚洲精品| 天天影视色综合| 亚洲国产另类av| 精品av中文字幕在线毛片| 国产精品自拍网| 国产一区日韩一区| 中文精品在线观看| 69堂精品视频| sqte在线播放| 色综合久久av| 国产精品亚洲专一区二区三区 | 五十路六十路七十路熟婆| 欧洲一区在线电影| 182tv在线播放| 美女亚洲精品| 精品一区二区免费在线观看| 国产精品第二十页| 一区二区三区视频免费在线观看| 成人在线啊v| 欧美色图另类小说| 亚洲色图欧洲色图| 三级在线电影| 亚洲综合社区网| 狂野欧美性猛交xxxx巴西|