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

懵了!簡單的HTTP調用,時延竟如此大?

網絡 通信技術 開發工具
最近項目測試遇到個奇怪的現象,在測試環境通過 Apache HTTP Client 調用后端的 HTTP 服務,平均耗時居然接近 39.2ms。

 最近項目測試遇到個奇怪的現象,在測試環境通過 Apache HTTP Client 調用后端的 HTTP 服務,平均耗時居然接近 39.2ms。

[[278773]]

 

圖片來自 Pexels

可能乍一看覺得這不是很正常嗎,有什么好奇怪的?其實不然,我再來說下一些基本信息。

該后端的 HTTP 服務并沒有什么業務邏輯,只是將一段字符串轉成大寫然后返回,字符串長度也僅只有 100 字符,另外網絡 Ping 延時只有 1.9ms左右。

因此,理論上該調用耗時應該在 2-3ms 左右,但為什么平均耗時 39.2ms 呢?

 

調用時延

 

Ping 時延

由于工作原因,調用耗時的問題,對我來說,已經見怪不怪了,經常會幫業務解決內部 RPC 框架調用超時的相關問題,但是 HTTP 調用耗時是第一次遇到。

不過,排查問題的套路是一樣的。主要方法論無外乎由外而內、自上而下等排查方法。我們先來看看外圍的一些指標,看能否發現蛛絲馬跡。

外圍指標

系統指標

主要看外圍的一些系統指標(注意:調用與被調用的機器都要看)。例如負載、CPU。只需一個 Top 命令就能一覽無余。

因此,確認了下 CPU 和負載都很空閑。由于當時沒有截圖,這里就不放圖了。

進程指標

Java 程序進程指標主要看 GC、線程堆棧情況(注意:調用與被調用的機器都要看)。

Young GC 都非常少,而且耗時也在 10ms 以內,因此沒有長時間的 STW。

因為平均調用時間 39.2ms,比較大,如果耗時是代碼導致,線程堆棧應該能發現點啥。

看了之后一無所獲,服務的相關線程堆棧主要表現是線程池的線程在等任務,這就意味著線程并不忙。

是不是感覺黔驢技窮了,接下來該怎么辦呢?

本地復現

如果本地(本地是 MAC 系統)能復現,對排查問題也是極好的。

因此在本地使用 Apache HTTP Client 寫了個簡單 Test 程序,直接調用后端的 HTTP 服務,發現平均耗時在 55ms 左右。

咦,怎么跟測試環境 39.2ms 的結果有點區別。主要是本地與測試環境的后端的 HTTP 服務機器跨地區了,Ping 時延在 26ms 左右,所以延時增大了。

不過本地確實也是存在問題的,因為 Ping 時延是 26ms,后端 HTTP 服務邏輯簡單,幾乎不耗時,因此本地調用平均耗時應該在 26ms 左右,為什么是 55ms?

是不是越來越迷惑,一頭霧水,不知如何下手?期間懷疑過 Apache HTTP Client 是不是有什么地方使用的不對。

因此使用 JDK 自帶的 HttpURLConnection 寫了簡單的程序,做了測試,結果一樣。

診斷

定位

其實從外圍的系統指標、進程指標,以及本地復現來看,大致能夠斷定不是程序上的原因。那 TCP 協議層面呢?

有網絡編程經驗的同學一定知道 TCP 什么參數會引起這個現象。對,你猜的沒錯,就是 TCP_NODELAY。

那調用方和被調用方哪邊的程序沒有設置呢?調用方使用的是 Apache Http Client ,tcpNoDelay 默認設置的就是 True。

我們再來看看被調用方,也就是我們的后端 HTTP 服務,這個 HTTP 服務用的是 JDK 自帶的 HttpServer:

  1. HttpServer server = HttpServer.create(new InetSocketAddress(config.getPort()), BACKLOGS); 

居然沒看到直接設置 tcpNoDelay 接口,翻了下源碼。哦,原來在這里。

在 ServerConfig 的類中有這段靜態塊,用來獲取啟動參數,默認 ServerConfig.noDelay 為 false:

  1. static { 
  2.     AccessController.doPrivileged(new PrivilegedAction<Void>() { 
  3.         public Void run() { 
  4.             ServerConfig.idleInterval = Long.getLong("sun.net.httpserver.idleInterval", 30L) * 1000L; 
  5.             ServerConfig.clockTick = Integer.getInteger("sun.net.httpserver.clockTick", 10000); 
  6.             ServerConfig.maxIdleConnections = Integer.getInteger("sun.net.httpserver.maxIdleConnections", 200); 
  7.             ServerConfig.drainAmount = Long.getLong("sun.net.httpserver.drainAmount", 65536L); 
  8.             ServerConfig.maxReqHeaders = Integer.getInteger("sun.net.httpserver.maxReqHeaders", 200); 
  9.             ServerConfig.maxReqTime = Long.getLong("sun.net.httpserver.maxReqTime", -1L); 
  10.             ServerConfig.maxRspTime = Long.getLong("sun.net.httpserver.maxRspTime", -1L); 
  11.             ServerConfig.timerMillis = Long.getLong("sun.net.httpserver.timerMillis", 1000L); 
  12.             ServerConfig.debug = Boolean.getBoolean("sun.net.httpserver.debug"); 
  13.             ServerConfig.noDelay = Boolean.getBoolean("sun.net.httpserver.nodelay"); 
  14.             return null
  15.         } 
  16.     }); 

驗證

在后端 HTTP 服務,加上啟動"-Dsun.net.httpserver.nodelay=true"參數再試試。

效果很明顯,平均耗時從 39.2ms 降到 2.8ms:

 

優化后調用時延

問題是解決了,但是到這里如果你就此止步,那就太便宜了這個案例了,簡直暴殄天物。

因為還有一堆疑惑等著你呢:

  • 為什么加了 TCP_NODELAY ,時延就從 39.2ms 降低到 2.8ms?
  • 為什么本地測試的平均時延是 55ms,而不是 Ping 的時延 26ms?
  • TCP 協議究竟是怎么發送數據包的?

來,我們接著趁熱打鐵。

解惑

①TCP_NODELAY 何許人也?

在 Socket 編程中,TCP_NODELAY 選項是用來控制是否開啟 Nagle 算法。

在 Java 中,為 Ture 表示關閉 Nagle 算法,為 False 表示打開 Nagle 算法。你一定會問 Nagle 算法是什么?

②Nagle 算法是什么鬼?

Nagle 算法是一種通過減少通過網絡發送的數據包數量來提高 TCP/IP 網絡效率的方法。

它使用發明人 John Nagle 的名字來命名的,John Nagle 在 1984 年首次用這個算法來嘗試解決福特汽車公司的網絡擁塞問題。

試想如果應用程序每次產生 1 個字節的數據,然后這 1 個字節數據又以網絡數據包的形式發送到遠端服務器,那么就很容易導致網絡由于太多的數據包而過載。

在這種典型情況下,傳送一個只擁有 1 個字節有效數據的數據包,卻要花費 40 個字節長包頭(即 IP 頭部 20 字節+TCP 頭部 20 字節)的額外開銷,這種有效載荷(payload)的利用率是極其低下。

Nagle 算法的內容比較簡單,以下是偽代碼:

  1. if there is new data to send 
  2.   if the window size >= MSS and available data is >= MSS 
  3.     send complete MSS segment now 
  4.   else 
  5.     if there is unconfirmed data still in the pipe 
  6.       enqueue data in the buffer until an acknowledge is received 
  7.     else 
  8.       send data immediately 
  9.     end if 
  10.   end if 
  11. end if 

具體的做法就是:

  • 如果發送內容大于等于 1 個 MSS,立即發送。
  • 如果之前沒有包未被 ACK,立即發送。
  • 如果之前有包未被 ACK,緩存發送內容。
  • 如果收到 ACK,立即發送緩存的內容。(MSS 為 TCP 數據包每次能夠傳輸的最大數據分段)

③Delayed ACK 又是什么玩意?

大家都知道 TCP 協議為了保證傳輸的可靠性,規定在接受到數據包時需要向對方發送一個確認。

只是單純的發送一個確認,代價會比較高(IP 頭部 20 字節+TCP 頭部 20 字節)。

TCP Delayed ACK(延遲確認)就是為了努力改善網絡性能,來解決這個問題的。

它將幾個 ACK 響應組合合在一起成為單個響應,或者將 ACK 響應與響應數據一起發送給對方,從而減少協議開銷。

具體的做法是:

  • 當有響應數據要發送時,ACK 會隨響應數據立即發送給對方。
  • 如果沒有響應數據,ACK 將會延遲發送,以等待看是否有響應數據可以一起發送。在 Linux 系統中,默認這個延遲時間是 40ms。
  • 如果在等待發送 ACK 期間,對方的第二個數據包又到達了,這時要立即發送 ACK。

但是如果對方的三個數據包相繼到達,第三個數據段到達時是否立即發送 ACK,則取決于以上兩條。

④Nagle 與 Delayed ACK 一起會發生什么化學反應?

Nagle 與 Delayed ACK 都能提高網絡傳輸的效率,但在一起會好心辦壞事。

例如,以下這個場景,A 和 B 進行數據傳輸 : A 運行 Nagle 算法,B 運行 Delayed ACK 算法。

如果 A 向 B 發一個數據包,B 由于 Delayed ACK 不會立即響應。而 A 使用 Nagle 算法,A 就會一直等 B 的 ACK,ACK 不來一直不發送第二個數據包,如果這兩個數據包是應對同一個請求,那這個請求就會被耽誤了 40ms。

⑤抓個包玩玩吧

我們來抓個包驗證下吧,在后端 HTTP 服務上執行以下腳本,就可以輕松完成抓包過程。

  1. sudo tcpdump -i eth0 tcp and host 10.48.159.165 -s 0 -w traffic.pcap 

如下圖,這是使用 Wireshark 分析包內容的展示,紅框內是一個完整的 POST 請求處理過程。

 

測試環境數據包分析

看 130 序號和 149 序號之間相差 40ms(0.1859 - 0.1448 = 0.0411s = 41ms),這個就是 Nagle 與 Delayed ACK 一起發送的化學反應。

其中 10.48.159.165 運行的是 Delayed ACK,10.22.29.180 運行的是 Nagle 算法。

10.22.29.180 在等 ACK,而 10.48.159.165 觸發了 Delayed ACK,這樣傻傻等了 40ms。

這也就解釋了為什么測試環境耗時是 39.2ms,因為大部分都被 Delayed ACK 的 40ms 給耽誤了。

但是本地復現時,為什么本地測試的平均時延是 55ms,而不是 Ping 的時延 26ms?我們也來抓個包吧。

如下圖,紅框內是一個完整的 POST 請求處理過程,看 8 序號和 9 序號之間相差 25ms 左右,再減去網絡延時約是 Ping 延時的一半 13ms。

 

本地環境數據包分析

因此 Delayed Ack 約 12ms 左右(由于本地是 MAC 系統與 Linux 有些差異)。

  1. Linux 使用的是 /proc/sys/net/ipv4/tcp_delack_min 這個系統配置來控制 Delayed ACK 的時間,Linux 默認是 40ms; 
  2. 2. MAC 是通過 net.inet.tcp.delayed_ack 系統配置來控制 Delayed ACK 的。 
  3.   delayed_ack=0 responds after every packet (OFF
  4.   delayed_ack=1 always employs delayed ack, 6 packets can get 1 ack  
  5.   delayed_ack=2 immediate ack after 2nd packet, 2 packets per ack  (Compatibility Mode) 
  6.   delayed_ack=3 should auto detect when to employ delayed ack, 4packets per ack.  (DEFAULT
  7. 設置為 0 表示禁止延遲 ACK,設置為 1 表示總是延遲 ACK,設置為 2 表示每兩個數據包回復一個 ACK,設置為 3 表示系統自動探測回復 ACK 的時機。 

⑥為什么 TCP_NODELAY 能夠解決問題?

tcpNoDelay 關閉了 Nagle 算法,即使上個數據包的 ACK 沒有到達,也會發送下個數據包,進而打破 Delayed ACK 造成的影響。

一般在網絡編程中,強烈建議開啟 tcpNoDelay,來提升響應速度。

當然也可以通過 Delayed ACK 相關系統的配置來解決問題,但由于需要修改機器配置,很不方便,因此,這種方式不太推薦。

總結

本文是從一個簡單的 HTTP 調用,時延比較大而引發的一次問題排查過程。首先由外而內的分析了相關問題,然后定位問題并驗證解決方案。

最后刨根問底對 TCP 傳輸中的 Nagle 與 Delayed ACK 做了全面的講解,更加透徹的剖析了該問題案例。

責任編輯:武曉燕 來源: 滌生的博客
相關推薦

2019-07-16 16:00:31

HTTP時延服務

2019-07-15 10:22:40

HTTP分析CPU

2025-09-10 09:31:04

2017-05-03 16:36:32

Android圖片動畫

2018-04-11 10:07:09

大數據

2021-02-19 11:55:36

C語言MD5加密

2019-07-31 14:34:00

數據庫MySQLJava

2017-12-15 16:03:28

2015-07-06 10:52:19

BAT數據中心

2021-07-05 06:51:41

Nacos微服務源碼

2019-10-15 09:46:46

機器學習人工智能計算機

2017-12-25 09:30:00

互聯網視頻流量耗費成本

2020-03-03 15:40:51

開發技能代碼

2020-02-20 16:07:45

IT需求

2023-03-16 08:14:57

2019-09-02 22:17:01

英特爾

2023-11-15 14:34:05

MySQL悲觀鎖

2025-03-04 00:02:00

Python序列報錯

2016-12-26 18:16:41

戴爾成就篇
點贊
收藏

51CTO技術棧公眾號

人人妻人人澡人人爽精品日本| 亚洲综合久久av一区二区三区| а√在线中文在线新版| 99久久er热在这里只有精品15| 青青a在线精品免费观看| 中文字幕免费高清| 国产亚洲字幕| 欧美色道久久88综合亚洲精品| 日韩欧美一区二区三区四区 | 在线视频综合导航| 一区二区三区不卡在线| 人妻一区二区三区| 蜜臀av在线播放一区二区三区| 欧美二区在线播放| 无码人妻精品一区二区中文| 亚洲精品不卡在线观看| 色综合久久99| www国产无套内射com| 免费av在线电影| 国产a精品视频| 国产精品日韩久久久久| 免费日韩一级片| 中文字幕日韩一区二区不卡| 亚洲欧美中文字幕在线一区| 日本人dh亚洲人ⅹxx| 日韩a**中文字幕| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲电影网站| 日中文字幕在线| 成人综合在线观看| 国产欧美一区二区三区久久 | av在线免费网址| 国产清纯美女被跳蛋高潮一区二区久久w | 一道本在线观看视频| 国产在线视频网| 9久草视频在线视频精品| 91美女片黄在线观| 国产成人自拍偷拍| 性色一区二区| 51精品在线观看| 国产性一乱一性一伧一色| 久久一区91| 在线激情影院一区| 丁香花五月婷婷| 亚洲日产av中文字幕| 亚洲高清不卡av| 中文字幕久久久久久久| 91精品福利观看| 欧美日韩免费视频| 啊啊啊国产视频| 伊人久久高清| 在线亚洲精品福利网址导航| 91av俱乐部| 免费观看欧美大片| 一本一道波多野结衣一区二区| www.99热这里只有精品| 国产乱码在线| 亚洲成av人片在线| 美脚丝袜脚交一区二区| av中文资源在线资源免费观看| 一区二区三区四区精品在线视频| 永久免费网站视频在线观看| h网站久久久| 亚洲日本一区二区| 好吊色视频988gao在线观看| 最新日本在线观看| 一区二区免费在线| av无码久久久久久不卡网站| 2019中文字幕在线电影免费| 精品成人av一区| 国产男女激情视频| h1515四虎成人| 欧美日产国产精品| 宇都宫紫苑在线播放| 亚洲综合色婷婷在线观看| 欧美成人r级一区二区三区| 美女扒开腿免费视频| 精品女人视频| 亚洲一区二区精品| 强制高潮抽搐sm调教高h| 永久亚洲成a人片777777| 欧美黑人一区二区三区| 天天操天天干视频| 美女视频一区二区三区| 亚洲精品欧美日韩| 五月激情六月婷婷| 日本一区二区在线不卡| 在线丝袜欧美日韩制服| 懂色av一区| 色香蕉久久蜜桃| 亚洲最大天堂网| 久久精品福利| 一区二区三区www| 国产精品九九九九九九| 国产亚洲在线观看| 国产综合福利在线| 色综合视频在线| 中文字幕亚洲一区二区av在线| 99re6这里有精品热视频| 亚洲欧洲日本韩国| 欧美精品视频www在线观看| 日本69式三人交| 久久国产影院| 91精品国产高清久久久久久91 | 欧美人成免费网站| 少妇精品无码一区二区三区| 日韩精品二区| 91精品国产高清久久久久久91| 亚洲在线观看av| 99这里只有久久精品视频| 在线视频91| 台湾佬成人网| 亚洲电影av在线| 乱老熟女一区二区三区| 噜噜噜躁狠狠躁狠狠精品视频 | 国内精品伊人久久久| 欧美大片在线影院| 中文字幕日本人妻久久久免费 | 懂色av粉嫩av浪潮av| 国内精品福利| 国产精品永久在线| 亚洲成人一级片| 国产精品美女一区二区| 欧美牲交a欧美牲交| 一本一道久久a久久| www国产精品视频| 日韩中文字幕高清| 9i在线看片成人免费| 免费特级黄色片| 婷婷精品久久久久久久久久不卡| 国产视频在线一区二区| 久久久久久久久艹| 国产一区高清在线| 先锋在线资源一区二区三区| 婷婷午夜社区一区| 日韩hd视频在线观看| 亚洲国产综合久久| 国产精品1区二区.| 免费观看国产视频在线| 久久亚洲精品人成综合网| 亚洲欧美一区二区三区四区| 婷婷激情五月网| 99re这里只有精品6| 免费不卡av在线| www.神马久久| 久久久免费在线观看| 草逼视频免费看| 亚洲精品国产无套在线观| 性色av浪潮av| 一区二区在线影院| 97免费高清电视剧观看| 特级毛片在线| 亚洲国产精品久久91精品| 日本少妇激情视频| 成人激情动漫在线观看| 久久99中文字幕| 精品素人av| 欧美孕妇与黑人孕交| 亚洲aⅴ在线观看| 色综合中文字幕| 国产又粗又猛又爽又黄av | 亚洲成av人**亚洲成av**| 一本色道久久hezyo无码| 伊人成人在线视频| 久久亚洲国产精品日日av夜夜| 亚洲美女久久精品| 一区二区中文字幕| 99热精品在线播放| 亚洲制服丝袜在线| 久久偷拍免费视频| 日韩国产欧美在线视频| 亚洲三级一区| 视频一区视频二区欧美| 亚州精品天堂中文字幕| 国产原创av在线| 欧美精品一卡二卡| 日本中文字幕网| 久久久不卡影院| 亚洲精品成人在线播放| 国产综合亚洲精品一区二| 欧美精品一区二区视频| 欧美天堂一区二区| 欧美老女人在线视频| 性插视频在线观看| 欧美日韩一区不卡| 精品在线视频观看| 国产日本亚洲高清| 亚洲三级在线视频| 蜜桃av综合| 国产人妻互换一区二区| 日本亚洲不卡| 成人xxxx视频| 九色porny丨入口在线| 中文字幕一区二区精品| 亚洲国产精品欧美久久| 色噜噜狠狠色综合欧洲selulu| 后入内射无码人妻一区| 波多野结衣中文一区| www.涩涩涩| 夜夜嗨网站十八久久| 亚洲人成77777| 久久久免费毛片| 成人春色激情网| 成人动漫一区| 欧美成人在线影院| 国产高清视频在线| 亚洲国产精品va在线看黑人动漫| 国产一区二区小视频| 天天综合色天天综合色h| 波多野结衣久久久久| 91色在线porny| 亚洲区 欧美区| 日本色综合中文字幕| 日韩精品xxxx| 一区二区在线影院| 亚洲一区精彩视频| 亚洲区小说区| 国产激情一区二区三区在线观看 | 人人澡人人添人人爽一区二区| 国产视频综合在线| 日韩一级中文字幕| 欧美一区二区三区四区在线观看| 草莓视频18免费观看| 亚洲成人午夜影院| avove在线播放| 国产精品福利一区二区三区| 扒开jk护士狂揉免费| 99久久99久久精品国产片果冻| 亚洲天堂一区二区在线观看| 美女脱光内衣内裤视频久久网站| 欧洲av无码放荡人妇网站| 伊人久久大香线蕉综合热线| 国产三级中文字幕| 91视频综合| 亚洲一区bb| 日本a级不卡| 日本一区二区三区四区高清视频| 美女视频免费精品| 国产精品视频一区二区三区经| 免费精品一区二区三区在线观看| 国产日韩欧美日韩| 黄色日韩网站| 国产日产欧美a一级在线| 欧美18—19sex性hd| 日本欧美一二三区| 欧美7777| 国产精品十八以下禁看| 黄色精品视频| 国产精品免费一区| а_天堂中文在线| 欧美高清视频在线| 欧美寡妇性猛交xxx免费| 久久99精品视频一区97| segui88久久综合| 91国产美女视频| 在线中文字幕播放| 国产精品白嫩初高中害羞小美女| 亚洲精品在线影院| 国产精品老牛影院在线观看| 久久青草免费| 91视频免费进入| 欧美绝顶高潮抽搐喷水合集| 欧美精品尤物在线| 日本一区二区在线看| 在线无限看免费粉色视频| 重囗味另类老妇506070| 欧美人成在线观看| 老妇喷水一区二区三区| 老司机久久精品| 国产91精品精华液一区二区三区| 国产精品手机在线观看| 国产日韩精品一区二区三区在线| 免费看特级毛片| 亚洲午夜在线观看视频在线| 欧美一级视频免费观看| 欧美伊人久久久久久久久影院| 国产精品久久久久毛片| 欧美r级电影在线观看| 你懂得在线网址| 久久精品亚洲精品| 黄色漫画在线免费看| 国产精品羞羞答答| 成人线上播放| 小说区图片区图片区另类灬| 欧美.www| 欧美激情国产精品日韩| 麻豆精品一区二区三区| www精品久久| 美洲天堂一区二卡三卡四卡视频 | 欧美视频在线一区二区三区| 中文字幕 亚洲视频| 欧美疯狂性受xxxxx喷水图片| 亚洲欧美另类综合| 亚洲人成人99网站| 国产色在线 com| 美女精品久久久| 台湾佬中文娱乐网欧美电影| 国产一区二区香蕉| 成人在线超碰| 任我爽在线视频精品一| 欧美另类专区| 国产成人无码av在线播放dvd| 麻豆国产精品官网| 蜜桃精品成人影片| 亚洲日本在线a| 日韩av女优在线观看| 欧美精品乱码久久久久久| 黄色片网站免费在线观看| 日韩一区二区精品视频| 久久男人av资源站| 成人久久精品视频| 成人精品视频| 成人免费播放器| 国产在线精品一区二区三区不卡| jizz日本免费| 亚洲综合偷拍欧美一区色| 国产乱码77777777| 精品女同一区二区| 视频一区二区三区不卡| 青青草成人在线| 欧美一区在线观看视频| 在线视频亚洲自拍| 鲁大师影院一区二区三区| 在线播放第一页| 一区二区三区在线视频免费| 最近中文字幕在线视频| 欧美成人精品1314www| 在线观看电影av| 国产精品久久久一区| 欧美**字幕| 国产精品久久国产| 久久99国产精品免费| 亚洲欧美日韩第一页| 欧美视频二区36p| 手机看片福利在线| 欧美极品欧美精品欧美视频 | 成人免费在线一区二区三区| 91久久夜色精品国产按摩| 欧美 日韩 亚洲 一区| 国产成人精品免费一区二区| 日本乱子伦xxxx| 亚洲一区自拍偷拍| 国产女人18毛片水18精| 色偷偷噜噜噜亚洲男人| 亚洲电影有码| 欧美大陆一区二区| 天堂蜜桃91精品| 国产又粗又猛又爽视频| 日本韩国欧美一区| 毛片在线能看| 日本午夜人人精品| 成人免费av| 国产熟人av一二三区| 国产丝袜欧美中文另类| 国产成人综合欧美精品久久| 日韩午夜激情av| av毛片午夜不卡高**水| 国产伦精品一区二区三区视频孕妇 | 欧美成人中文字幕| 欧美专区视频| 亚洲精品在线视频观看| 韩国v欧美v亚洲v日本v| fc2ppv在线播放| 精品国产一区二区三区不卡 | 久久婷婷成人综合色| 日产精品久久久久久久| 欧美一区二区三区的| 丁香花高清在线观看完整版| 国产精品久久久久久免费观看| 亚洲少妇诱惑| 欧美性xxxx图片| 精品久久香蕉国产线看观看gif| 久草视频在线看| 国产精品久久视频| 欧美视频网站| 亚洲欧美日韩偷拍| 欧美在线free| 免费黄网站在线| 91深夜福利视频| 亚洲第一黄网| 欧美图片一区二区| 91精品国产综合久久久久久久久久 | 日韩电影大全免费观看2023年上| 日韩理论视频| 日本黄色a视频| 成人网页在线观看| 波多野结衣小视频| 精品国产依人香蕉在线精品| 亚洲aⅴ网站| 欧美高清中文字幕| 久久综合久久综合久久综合| 国产又大又粗又硬| 欧美激情一区二区三级高清视频| 神马电影久久| 亚洲精品免费一区亚洲精品免费精品一区| 中文字幕一区二区三区精华液| 色播色播色播色播色播在线| 国产精品88a∨| 伊人久久综合| 色欲AV无码精品一区二区久久 |