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

用 Arthas 定位 Spring Boot 接口的超時問題,讓應用起飛!

開發(fā) 前端
最近在優(yōu)化接口的響應時間,優(yōu)化了代碼之后,但是時間還是達不到要求;有一個詭異的100ms左右的耗時問題,在接口中打印了請求處理時間后,和調用方的響應時間還有差了100ms左右。比如程序里記錄150ms,但是調用方等待時間卻為250ms左右。

背景

公司有個渠道系統(tǒng),專門對接三方渠道使用,沒有什么業(yè)務邏輯,主要是轉換報文和參數(shù)校驗之類的工作,起著一個承上啟下的作用。

最近在優(yōu)化接口的響應時間,優(yōu)化了代碼之后,但是時間還是達不到要求;有一個詭異的100ms左右的耗時問題,在接口中打印了請求處理時間后,和調用方的響應時間還有差了100ms左右。比如程序里記錄150ms,但是調用方等待時間卻為250ms左右。

下面記錄下當時詳細的定位&解決流程(其實解決很簡單,關鍵在于怎么定位并找到解決問題的方法)。

定位過程

分析代碼

渠道系統(tǒng)是一個常見的spring-boot web工程,使用了集成的tomcat。分析了代碼之后,發(fā)現(xiàn)并沒有特殊的地方,沒有特殊的過濾器或者攔截器,所以初步排除是業(yè)務代碼問題。

分析調用流程

出現(xiàn)這個問題之后,首先確認了下接口的調用流程。由于是內(nèi)部測試,所以調用流程較少。

Nginx -反向代理-> 渠道系統(tǒng)

公司是云服務器,網(wǎng)絡走的也是云的內(nèi)網(wǎng)。由于不明確問題的原因,所以用排除法,首先確認服務器網(wǎng)絡是否有問題。

先確認發(fā)送端到Nginx Host是否有問題:

[jboss@VM_0_139_centos ~]$ ping 10.0.0.139
PING 10.0.0.139 (10.0.0.139) 56(84) bytes of data.
64 bytes from 10.0.0.139: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from 10.0.0.139: icmp_seq=2 ttl=64 time=0.041 ms
64 bytes from 10.0.0.139: icmp_seq=3 ttl=64 time=0.040 ms
64 bytes from 10.0.0.139: icmp_seq=4 ttl=64 time=0.040 ms

從ping結果上看,發(fā)送端到Nginx主機的延遲是無問題的,接下來查看Nginx到渠道系統(tǒng)的網(wǎng)絡。

# 由于日志是沒問題的,這里直接復制上面日志了
[jboss@VM_0_139_centos ~]$ ping 10.0.0.139
PING 10.0.0.139 (10.0.0.139) 56(84) bytes of data.
64 bytes from 10.0.0.139: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from 10.0.0.139: icmp_seq=2 ttl=64 time=0.041 ms
64 bytes from 10.0.0.139: icmp_seq=3 ttl=64 time=0.040 ms
64 bytes from 10.0.0.139: icmp_seq=4 ttl=64 time=0.040 ms

從ping結果上看,Nginx到渠道系統(tǒng)服務器網(wǎng)絡延遲也是沒問題的

既然網(wǎng)絡看似沒問題,那么可以繼續(xù)排除法,砍掉Nginx,客戶端直接再渠道系統(tǒng)的服務器上,通過回環(huán)地址(localhost)直連,避免經(jīng)過網(wǎng)卡/dns,縮小問題范圍看看能否復現(xiàn)(這個應用和地址是我后期模擬的,測試的是一個空接口):

[jboss@VM_10_91_centos tmp]$ curl -w "@curl-time.txt" http://127.0.0.1:7744/send
success
              http: 200
               dns: 0.001s
          redirect: 0.000s
      time_connect: 0.001s
   time_appconnect: 0.000s
  time_pretransfer: 0.001s
time_starttransfer: 0.073s
     size_download: 7bytes
    speed_download: 95.000B/s
                  ----------
        time_total: 0.073s 請求總耗時

從curl日志上看,通過回環(huán)地址調用一個空接口耗時也有73ms。這就奇怪了,跳過了中間所有調用節(jié)點(包括過濾器&攔截器之類),直接請求應用一個空接口,都有73ms的耗時,再請求一次看看:

[jboss@VM_10_91_centos tmp]$ curl -w "@curl-time.txt" http://127.0.0.1:7744/send
success
              http: 200
               dns: 0.001s
          redirect: 0.000s
      time_connect: 0.001s
   time_appconnect: 0.000s
  time_pretransfer: 0.001s
time_starttransfer: 0.003s
     size_download: 7bytes
    speed_download: 2611.000B/s
                  ----------
        time_total: 0.003s

更奇怪的是,第二次請求耗時就正常了,變成了3ms。經(jīng)查閱資料,linux curl是默認開啟http keep-alive的。就算不開啟keep-alive,每次重新handshake,也不至于需要70ms。

經(jīng)過不斷分析測試發(fā)現(xiàn),連續(xù)請求的話時間就會很短,每次請求只需要幾毫秒,但是如果隔一段時間再請求,就會花費70ms以上。

從這個現(xiàn)象猜想,可能是某些緩存機制導致的,連續(xù)請求因為有緩存,所以速度快,時間長緩存失效后導致時間長。

那么這個問題點到底在哪一層呢?tomcat層還是spring-webmvc呢?

光猜想定位不了問題,還是得實際測試一下,把渠道系統(tǒng)的代碼放到本地ide里啟動測試能否復現(xiàn)。

但是導入本地Ide后,在Ide中啟動后并不能復現(xiàn)問題,并沒有70+ms的延遲問題。這下頭疼了,本地無法復現(xiàn),不能Debug,由于問題點不在業(yè)務代碼,也不能通過加日志的方式來Debug。

這時候可以祭出神器Arthas了。

Arthas分析問題

Arthas 是Alibaba開源的Java診斷工具,深受開發(fā)者喜愛。當你遇到以下類似問題而束手無策時,Arthas可以幫助你解決:

  • 這個類從哪個 jar 包加載的?為什么會報各種類相關的 Exception?
  • 我改的代碼為什么沒有執(zhí)行到?難道是我沒 commit?分支搞錯了?
  • 遇到問題無法在線上 debug,難道只能通過加日志再重新發(fā)布嗎?
  • 線上遇到某個用戶的數(shù)據(jù)處理有問題,但線上同樣無法 debug,線下無法重現(xiàn)!
  • 是否有一個全局視角來查看系統(tǒng)的運行狀況?
  • 有什么辦法可以監(jiān)控到JVM的實時運行狀態(tài)?

上面是Arthas的官方簡介,這次我只需要用他的一個小功能trace。動態(tài)計算方法調用路徑和時間,這樣我就可以定位時間在哪個地方被消耗了。

  • trace 方法內(nèi)部調用路徑,并輸出方法路徑上的每個節(jié)點上耗時
  • trace 命令能主動搜索 class-pattern/method-pattern
  • 對應的方法調用路徑,渲染和統(tǒng)計整個調用鏈路上的所有性能開銷和追蹤調用鏈路。

有了神器,那么該追蹤什么方法呢?由于我對Tomcat源碼不是很熟,所以只能從spring mvc下手,先來trace一下spring mvc的入口:

圖片圖片

圖片圖片

圖片圖片

[jboss@VM_10_91_centos tmp]$ curl -w "@curl-time.txt" http://127.0.0.1:7744/send
success
              http: 200
               dns: 0.001s
          redirect: 0.000s
      time_connect: 0.001s
   time_appconnect: 0.000s
  time_pretransfer: 0.001s
time_starttransfer: 0.115s
     size_download: 7bytes
    speed_download: 60.000B/s
                  ----------
        time_total: 0.115s

本次調用,調用端時間花費115ms,但是從arthas trace上看,spring mvc只消耗了18ms,那么剩下的97ms去哪了呢?

本地測試后已經(jīng)可以排除spring mvc的問題了,最后也是唯一可能出問題的點就是tomcat。

可是本人并不熟悉tomcat中的源碼,就連請求入口都不清楚,tomcat里需要trace的類都不好找......

不過沒關系,有神器Arthas,可以通過stack命令來反向查找調用路徑,以org.springframework.web.servlet.DispatcherServlet作為參數(shù):

stack 輸出當前方法被調用的調用路徑。

很多時候我們都知道一個方法被執(zhí)行,但這個方法被執(zhí)行的路徑非常多,或者你根本就不知道這個方法是從那里被執(zhí)行了,此時你需要的是 stack 命令。

圖片圖片

圖片圖片

圖片圖片

圖片圖片

從stack日志上可以很直觀的看出DispatchServlet的調用棧,那么這么長的路徑,該trace哪個類呢(這里跳過spring mvc中的過濾器的trace過程,實際排查的時候也trace了一遍,但這詭異的時間消耗不是由這里過濾器產(chǎn)生的)?

有一定經(jīng)驗的老司機從名字上大概也能猜出來從哪里下手比較好,那就是org.apache.coyote.http11.Http11Processor.service,從名字上看,http1.1處理器,這可能是一個比較好的切入點。下面來trace一下:

圖片圖片

圖片圖片

日志里有一個129ms的耗時點(時間比沒開arthas的時候更長是因為arthas本身帶來的性能消耗,所以生產(chǎn)環(huán)境小心使用),這個就是要找的問題點。

打問題點找到了,那怎么定位是什么導致的問題呢,又如何解決呢?

繼續(xù)trace吧,細化到具體的代碼塊或者內(nèi)容。trace由于性能考慮,不會展示所有的調用路徑,如果調用路徑過深,只有手動深入trace,原則就是trace耗時長的那個方法:

圖片圖片

一段無聊的手動深入trace之后……

圖片圖片

發(fā)現(xiàn)了一個值得暫停思考的點:

+---[min=0.004452ms,max=34.479307ms,total=74.206249ms,count=31] org.apache.catalina.webresources.TomcatJarInputStream:getNextJarEntry() #117

這行代碼加載了31次,一共耗時74ms;從名字上看,應該是tomcat加載jar包時的耗時,那么是加載了31個jar包的耗時,還是加載了jar包內(nèi)的某些資源31次耗時呢?

TomcatJarInputStream這個類源碼的注釋寫到:

The purpose of this sub-class is to obtain references to the JarEntry objects for META-INF/ and META-INF/MANIFEST.MF that are otherwise swallowed by the JarInputStream implementation.

大概意思也就是,獲取jar包內(nèi)META-INF/,META-INF/MANIFEST的資源,這是一個子類,更多的功能在父類JarInputStream里。

其實看到這里大概也能猜到問題了,tomcat加載jar包內(nèi)META-INF/,META-INF/MANIFEST的資源導致的耗時,至于為什么連續(xù)請求不會耗時,應該是tomcat的緩存機制(下面介紹源碼分析)。

不著急定位問題,試著通過Arthas最終定位問題細節(jié),繼續(xù)手動深入trace:

[arthas@24851]$ trace org.apache.catalina.webresources.TomcatJarInputStream *
Press Q or Ctrl+C to abort.
Affect(class-cnt:1 , method-cnt:4) cost in 44 ms.
`---ts=2019-09-14 21:37:47;thread_name=http-nio-7744-exec-5;id=14;is_daemnotallow=true;priority=5;TCCL=org.springframework.boot.loader.LaunchedURLClassLoader@20ad9418
    `---[0.234952ms] org.apache.catalina.webresources.TomcatJarInputStream:createZipEntry()
        +---[0.039455ms] java.util.jar.JarInputStream:createZipEntry() #43
        `---[0.007827ms] java.lang.String:equals() #44

`---ts=2019-09-14 21:37:47;thread_name=http-nio-7744-exec-5;id=14;is_daemnotallow=true;priority=5;TCCL=org.springframework.boot.loader.LaunchedURLClassLoader@20ad9418
    `---[0.050222ms] org.apache.catalina.webresources.TomcatJarInputStream:createZipEntry()
        +---[0.001889ms] java.util.jar.JarInputStream:createZipEntry() #43
        `---[0.001643ms] java.lang.String:equals() #46
#這里一共31個trace日志,刪減了剩下的

從方法名上看,還是加載資源之類的意思。都已經(jīng)到jdk源碼了,這時候來看一下TomcatJarInputStream這個類的源碼:

/**
 * Creates a new <code>JarEntry</code> (<code>ZipEntry</code>) for the
 * specified JAR file entry name. The manifest attributes of
 * the specified JAR file entry name will be copied to the new
 * <CODE>JarEntry</CODE>.
 *
 * @param name the name of the JAR/ZIP file entry
 * @return the <code>JarEntry</code> object just created
 */
protected ZipEntry createZipEntry(String name) {
    JarEntry e = new JarEntry(name);
    if (man != null) {
        e.attr = man.getAttributes(name);
    }
    return e;
}

這個createZipEntry有個name參數(shù),從注釋上看,是jar/zip文件名,如果能得到文件名這種關鍵信息,就可以直接定位問題了;還是通過Arthas,使用watch命令,動態(tài)監(jiān)測方法調用數(shù)據(jù)。

watch方法執(zhí)行數(shù)據(jù)觀測

讓你能方便的觀察到指定方法的調用情況。能觀察到的范圍為:返回值、拋出異常、入?yún)ⅲㄟ^編寫 OGNL 表達式進行對應變量的查看。

watch 該方法的入?yún)?/h4>

圖片

這下直接看到了具體加載的資源名,這么熟悉的名字:swagger-ui,一個國外的rest接口文檔工具,又有國內(nèi)開發(fā)者基于swagger-ui做了一套spring mvc的集成工具,通過注解就可以自動生成swagger-ui需要的接口定義json文件,用起來還比較方便,就是侵入性較強。

刪除swagger的jar包后問題,詭異的70+ms就消失了。

<!--pom 里刪除這兩個引用,這兩個包時國內(nèi)開發(fā)者封裝的,swagger-ui并沒有提供java spring-mvc的支持包,swagger只是一個瀏覽器端的ui+editor -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

那么為什么swagger會導致請求耗時呢,為什么每次請求偶讀會加載swagger內(nèi)部的靜態(tài)資源呢?

其實這是tomcat-embed的一個bug吧,下面詳細介紹一下該Bug。

Tomcat embed Bug分析&解決

源碼分析過程實在太漫長,而且也不是本文的重點,所以就不介紹了, 下面直接介紹下分析結果:

順便貼一張tomcat處理請求的核心類圖:

圖片圖片

為什么每次請求會加載Jar包內(nèi)的靜態(tài)資源

關鍵在于org.apache.catalina.mapper.Mapper#internalMapWrapper這個方法,該版本下處理請求的方式有問題,導致每次都校驗靜態(tài)資源。

為什么連續(xù)請求不會出現(xiàn)問題

因為Tomcat對于這種靜態(tài)資源的解析是有緩存的,優(yōu)先從緩存查找,緩存過期后再重新解析。具體參考org.apache.catalina.webresources.Cache,默認過期時間ttl是5000ms。

為什么本地不會復現(xiàn)

其實確切的說,是通過spring-boot打包插件后不能復現(xiàn)。由于啟動方式的不同,tomcat使用了不同的類去處理靜態(tài)資源,所以沒問題。

如何解決

升級tomcat-embed版本即可;

當前出現(xiàn)Bug的版本為:

spring-boot:2.0.2.RELEASE,內(nèi)置的tomcat embed版本為8.5.31;

升級tomcat embed版本至8.5.40+即可解決此問題,新版本已經(jīng)修復了。

通過替換springboot pom properties方式

如果項目是maven是繼承的springboot,即parent配置為springboot的,或者dependencyManagement中import spring boot包的;

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

pom中直接覆蓋properties即可:

<properties>
    <tomcat.version>8.5.40</tomcat.version>
</properties>

升級spring boot版本

springboot 2.1.0.RELEASE中的tomcat embed版本已經(jīng)大于8.5.31了,所以直接將springboot升級至該版本及以上版本就可以解決此問題。

責任編輯:武曉燕 來源: 碼猿技術專欄
相關推薦

2024-06-13 09:17:41

2023-10-16 23:06:26

2024-11-29 07:42:47

2025-07-18 09:31:30

2023-11-10 08:18:27

JavaGraalVM

2025-08-06 01:44:00

2016-10-14 14:16:28

Spring BootJava應用

2018-05-25 16:32:45

Spring BootJava開發(fā)

2021-11-15 12:42:25

C# 定位gRPC

2022-09-20 10:41:32

接口優(yōu)化網(wǎng)絡

2025-02-12 08:47:07

SpringAPI接口

2025-04-10 00:25:00

Spring@JsonView注解

2025-09-29 02:11:00

接口SpringController

2023-10-20 07:29:16

框架模型Prompt

2017-12-05 23:45:23

物聯(lián)網(wǎng)無線充電智能

2017-09-20 09:46:38

Spring BootSpring Clou內(nèi)存

2023-10-16 11:12:29

2025-01-16 10:48:40

2024-10-18 08:00:00

SpringBoot框架開發(fā)

2023-12-08 12:12:21

點贊
收藏

51CTO技術棧公眾號

成人午夜免费av| 波多野结衣av在线观看| 日本中文字幕在线免费观看| 97欧美成人| 91色porny在线视频| 久久在线免费观看视频| 欧美久久久久久一卡四| 免费视频网站www| 亚洲二区av| 国产无人区一区二区三区| 久久久久久久久国产| 欧美视频亚洲图片| 黄色网在线播放| 色777狠狠狠综合伊人| 日韩欧美精品中文字幕| 99国精产品一二二线| 国产喷水在线观看| 日韩成人在线电影| 亚洲成人免费看| 91中文字精品一区二区| 一级黄色录像视频| 秋霞一区二区三区| 亚洲影视在线观看| 国产精品免费在线| 800av免费在线观看| 欧美人妖在线观看| 日韩欧美国产激情| 日韩精品一区二区免费| 亚洲毛片在线播放| 日韩视频精品在线观看| 日韩精品高清在线观看| 久久国产乱子伦免费精品| 欧美视频综合| 日韩经典一区二区| 色琪琪综合男人的天堂aⅴ视频| www.精品在线| 成人影院在线观看| 不卡的av网站| 国产成人欧美在线观看| 国产精品18在线| 久久丁香四色| 五月激情综合婷婷| 色噜噜狠狠色综合网| 一级特黄录像免费看| 午夜久久久久| 日韩久久免费电影| 第四色婷婷基地| 国产精品av一区二区三区| 亚洲国产精品精华液2区45| 91沈先生作品| 99久在线精品99re8热| 欧美精品日韩| 亚洲欧洲午夜一线一品| 岛国av免费在线| 丁香花在线高清完整版视频| 久久色视频免费观看| 成人黄色免费片| 日本一区二区欧美| 久久久影院免费| 精品国产百合女同互慰| 男人插女人下面免费视频| 91精品久久| 91久色porny| 久久99导航| 国产女人高潮毛片| 久久国产精品久久久久久电车| 久久精品国产清自在天天线| 欧美熟妇精品一区二区蜜桃视频 | 中文字幕在线亚洲| 日本一本在线视频| av日韩电影| 一本大道久久a久久精二百| 日本特级黄色大片| 午夜黄色小视频| 国产在线看一区| 日本一区二区三区在线播放| 免费在线观看黄视频| 国产精品hd| 2018国产精品视频| 亚洲熟女www一区二区三区| 综合久久99| 中文字幕在线亚洲| 成年人av电影| 国产精品免费看| 欧美寡妇偷汉性猛交| 在线观看日本黄色| 国产剧情一区| 亚洲国产精品美女| 国产xxx在线观看 | 亚洲xxxxx性| 看黄色一级大片| 日韩午夜电影| 国产精品三级久久久久久电影| 欧美成人精品欧美一级乱黄| 久色成人在线| 69精品小视频| 亚洲一卡二卡在线观看| 久久久精品日韩| 成人欧美一区二区三区黑人孕妇| 人妻一区二区三区免费| 国产91精品在线观看| 91精品国产自产在线观看永久| 欧产日产国产69| 国产精品免费看| 成人国产精品一区| 色就是色亚洲色图| 99精品国产91久久久久久| 超碰97网站| 国产毛片在线| 中文字幕欧美三区| 免费看毛片的网址| av资源网在线播放| 性欧美大战久久久久久久久| 日韩精品在线中文字幕| 日本h片久久| 欧美午夜视频网站| 一区二区三区国产免费| 999在线精品| 精品久久久影院| 午夜剧场免费看| 91精品秘密在线观看| 久久视频这里只有精品| 午夜婷婷在线观看| 日韩经典中文字幕一区| 国产精品亚洲不卡a| 性欧美精品男男| 国产精品一区二区三区美女| 欧美美女一区二区| 欧美在线a视频| 免费看成人哺乳视频网站| 亚洲小视频在线观看| 欧美福利第一页| 一本色道久久综合| www.一区二区三区| 搞黄网站在线观看| 欧美色精品在线视频| 手机在线国产视频| 欧美偷拍自拍| 欧美成人剧情片在线观看| 国产无精乱码一区二区三区| 国产亚洲激情| 99热在线播放| 国产在线一区二区视频| 欧美三区在线观看| 亚洲女同二女同志奶水| 免费在线看成人av| 国产精品国产亚洲精品看不卡15 | 国产欧美一区二区精品久导航| 日本一区精品| 1区2区在线观看| 欧美电影在线免费观看| 情侣偷拍对白清晰饥渴难耐| 蜜桃久久av一区| 夜夜爽99久久国产综合精品女不卡| 黄色网页在线看| 7777精品伊人久久久大香线蕉 | 国产特黄一级片| 亚洲国产成人私人影院tom| 三级在线视频观看| 久久要要av| 亚洲永久在线观看| 91美女主播在线视频| 亚洲国产成人精品女人久久久 | 亚洲免费成人在线| 亚洲福利视频一区二区| 亚洲国产第一区| 国产精品99在线观看| 久久久女女女女999久久| 久久青青草视频| 久久久亚洲午夜电影| 一区二区三区不卡在线观看 | 欧美成人免费一级人片100| 国产ts变态重口人妖hd| 久久网站最新地址| 久草综合在线观看| 中文在线免费一区三区| 伊人久久久久久久久久久| 久久一区二区三| 久久99久国产精品黄毛片色诱| 国产一区二区高清视频| av毛片在线看| 亚洲国产精品资源| 久久午夜鲁丝片| 91网站最新网址| 性生交免费视频| 欧美久久99| 久久久久欧美| 亚洲福利影视| 91精品91久久久久久| 波多野结衣在线网站| 狠狠躁夜夜躁人人躁婷婷91| 中文在线字幕观看| 一级aaaa毛片| 日韩av在线播放中文字幕| 国产精品伊人日日| 欧美momandson| 亚洲精品av在线| 综合久久中文字幕| 亚洲一区视频在线观看视频| 亚洲自拍偷拍图| 国产成人高清在线| 午夜dv内射一区二区| 欧美视频日韩| 日韩欧美一区二区三区四区| 日韩av大片站长工具| 久久国产精彩视频| 国产中文在线| 日本高清免费不卡视频| 国产呦小j女精品视频| 国产午夜久久| 小泽玛利亚av在线| 一区二区三区免费在线看| 浅井舞香一区二区| 成人午夜电影在线观看| 精品电影一区二区| 国产精品国产av| 国产精品午夜在线| 插我舔内射18免费视频| 精品综合免费视频观看| 777米奇影视第四色| 欧美日韩1080p| 亚洲人成影视在线观看| 亚洲人成网亚洲欧洲无码| 欧美在线一级va免费观看| 在线黄色网页| www.xxxx精品| 精品乱子伦一区二区| 亚洲综合在线第一页| 少妇高潮惨叫久久久久| 国产亚洲一区二区在线观看| 大尺度做爰床戏呻吟舒畅| 国产成人精品午夜视频免费| av日韩一区二区三区| 色88888久久久久久影院| 欧美亚洲国产日韩2020| 国产精品四虎| 亚洲精品成人免费| 国产日韩视频在线观看| 免费av网站在线观看| 欧美私模裸体表演在线观看| 成人片在线免费看| 亚洲av无码国产精品永久一区| 亚洲美女视频一区| 欲求不满的岳中文字幕| 国产成人精品免费视频网站| 欧美又黄又嫩大片a级| 美女国产一区二区| 一卡二卡三卡视频| 欧美日韩国产高清| 4444亚洲人成无码网在线观看| 欧洲精品一区| 久久99精品国产99久久| 日韩精品a在线观看91| 含羞草久久爱69一区| 成人在线观看免费视频| 国产精品欧美日韩久久| 99精品国自产在线| 成人h猎奇视频网站| 成人在线视频区| 91精品国产免费久久久久久 | 91淫黄看大片| 青青草国产成人av片免费| 少妇黄色一级片| 精品一区二区三区久久| 97超碰人人看| 成人妖精视频yjsp地址| 黄色网址在线视频| 久久久久久久久伊人| 成人午夜免费影院| 亚洲激情成人在线| 日本少妇高潮喷水xxxxxxx| 国产亚洲午夜高清国产拍精品 | 国产精品丝袜久久久久久高清| 50度灰在线| 久久久之久亚州精品露出| 国产www视频在线观看| 欧美在线播放视频| 成人福利片在线| 91在线视频成人| 国产精品jk白丝蜜臀av小说| 日韩动漫在线观看| 久久99国内| 三级网在线观看| 亚洲精品偷拍| 久久福利一区二区| 老鸭窝毛片一区二区三区 | 欧美高清免费| 97超级碰碰碰久久久| 日韩电影免费观| 91久久国产精品91久久性色| 国产精品白浆| 日韩欧美亚洲在线| 一区在线视频观看| 2022中文字幕| 亚洲在线一区| 国产精品无码人妻一区二区在线 | 亚洲精品久久久久久久蜜桃臀| 久久婷婷影院| 中文字幕在线视频一区二区| 久久亚洲精品小早川怜子| 999福利视频| 精品福利视频导航| 97免费观看视频| 亚洲欧美中文日韩在线v日本| www.欧美日本韩国| 日韩免费在线视频| 国产精伦一区二区三区| 中文字幕一区二区三区精彩视频| 欧美肉体xxxx裸体137大胆| 欧美黄色直播| 午夜日韩福利| 男人插女人下面免费视频| av不卡免费在线观看| 婷婷五月精品中文字幕| 北条麻妃一区二区三区| 波兰性xxxxx极品hd| 欧美日韩久久久久| 亚洲av无码一区二区三区性色| 尤物yw午夜国产精品视频| 日韩欧美精品一区二区三区| 亲爱的老师9免费观看全集电视剧| 欧美不卡在线观看| 亚洲国产精品久久久久久女王| 日韩国产在线| 亚洲精品乱码久久久久久自慰| 日韩av在线播放中文字幕| 国产黑丝在线观看| 亚洲一区免费观看| 99热这里只有精品在线观看| 中国日韩欧美久久久久久久久| 美女av在线免费看| 成人三级视频在线观看一区二区| 五月婷婷六月综合| 亚洲欧美视频二区| 国产欧美中文在线| 丰满少妇xoxoxo视频| 亚洲高清一区二| 成年人国产在线观看| 超碰97人人人人人蜜桃| 欧美精品啪啪| 国产精品19p| 久久久国产午夜精品| 91在线看视频| 日韩成人黄色av| 日韩av一卡| 日本高清不卡一区二区三| 另类天堂av| 老熟妇一区二区| 欧美三级日韩三级国产三级| 福利在线观看| 国产精品偷伦一区二区| 亚洲三级网址| 欧美一级黄色影院| 中文在线一区二区| 亚洲无码久久久久| 久久夜色精品国产| 午夜日韩影院| www.99热这里只有精品| 久久综合精品国产一区二区三区| 欧美日韩综合一区二区三区| 中国china体内裑精亚洲片| 亚洲天堂网站| 精品国产乱码久久久久久郑州公司| 激情五月***国产精品| 88av在线播放| 欧美性xxxxxx| 亚洲成人三级| 欧美亚洲另类视频| 欧美日韩123| 色免费在线视频| 亚洲女性喷水在线观看一区| 亚洲免费成人在线| 日韩美女视频免费看| 成人羞羞动漫| 亚洲午夜精品在线观看| 精品久久久久久久久久ntr影视| 你懂的在线视频| 亚洲人成在线观看一区二区| 欧美日韩国产综合一区二区 | 国产精品porn| 国产精品一区二区免费在线观看| 日韩二区三区在线观看| 色屁屁草草影院ccyy.com| 疯狂做受xxxx高潮欧美日本 | gogo久久日韩裸体艺术| 国产日韩一区二区在线观看| 国产精品欧美一区喷水| 欧美日韩精品区| 中文字幕精品av| 哺乳挤奶一区二区三区免费看| 黄色a级片免费| 亚洲三级在线免费观看| 亚洲色图另类小说| 国产这里只有精品| 99伊人成综合| 在线观看亚洲网站| 欧美精选一区二区| 2019中文字幕在线电影免费| 亚洲国产综合自拍| av在线不卡网|