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

一起 goroutine 泄漏問題的排查

開發 前端
在 golang 中創建 goroutine 是一件很容易的事情,但是不合理的使用可能會導致大量 goroutine 無法結束,資源也無法被釋放,隨著時間推移造成了內存的泄漏。

 在 golang 中創建 goroutine 是一件很容易的事情,但是不合理的使用可能會導致大量 goroutine 無法結束,資源也無法被釋放,隨著時間推移造成了內存的泄漏。避免 goroutine 泄漏的關鍵是要合理管理 goroutine 的生命周期,通過導出 runtime 指標和利用 pprof 可以發現和解決 goroutine 泄漏問題。

[[311742]]

筆者維護了一個通過 SSH 連接到目標機器并執行命令的服務,這是一個內部小服務,平時沒有問題的時候一般也不會關注。大約 4 個月前,最后一次更新的時候,增加了一個任務計數器并且導出到 prometheus 中監控起來。近期發現這個計數器在穩步增加。

 

第一反應是,好事!調用量穩步增長了!!但是一想不對啊,這內部小服務哪兒來這么多調用量。于是再看看 goroutine 的監控情況(這個數據從 runtime.NumGoroutine()獲取的)

 

goroutine 的數量也是穩步增加的,單位時間請求量增加,goroutine 數量也增進,沒毛病。但是又再轉念一想,內部小服務,不可能不可能。

于是再看一下所有請求在 mm 系統的視圖:

 

可以看出,每 5 分鐘請求量在 2000 左右,平均下來每分鐘 400 的請求量,上面 prometheus 監控圖中,每個曲線是一個實例,實際上部署了 4 個實例,因此 400 還要除以 4 得到單個實例(曲線)的請求量應該在 100/min 左右,在服務剛啟動的時候該計數器也確實在 100/min 左右,隨著時間推移慢慢泄漏了。

Goroutine 泄漏 (Goroutine leak)

雖然心里想著 99%是泄漏了,但是也要看點詳細的信息。之前在服務里已經啟用了 net/http/pprof,因此直接請求 pprof 暴露出來的 HTTP 接口。

# goroutines摘要curl http://service:port/debug/pprof/goroutine?debug=1# goroutines詳情curl http://service:port/debug/pprof/goroutine?debug=2

先看一下導出的 goroutine 摘要:

 

有 1000+個 goroutine 處于同一個狀態,簡單看是等待讀數據,再看下導出的 goroutine 詳情:

 

不看不知道,一看嚇一跳,詳情里有 goroutine 阻塞的時間超過了 20w 分鐘(4 個月)……

可以肯定是 goroutine 泄漏無疑了。為什么會泄漏?只有順著 pprof 導出的 goroutine 信息去排查了。處于 IO wait 狀態最多的這 1000 多 goroutine 的調用棧都打出來了,根據這段調用棧內容來看,找到對應代碼的位置,從 ssh.Dial 開始一直到某個地方進行 io.ReadFull 便阻塞住了。

這個服務進行 ssh 連接使用的是 golang.org/x/crypto/ssh 這個包。先看一下在這個服務里調用 ssh.Dial 的地方:

  1. clientConfig := &ssh.ClientConfig{ 
  2.     ... 
  3.     Timeout: 3 * time.Second
  4.     ... 
  5. // connet to ssh 
  6. client, err := ssh.Dial("tcp", fmt.Sprintf("%s:%d", s.Host, 36000), clientConfig) 

看起來是沒啥問題的,畢竟傳入了一個 Timeout 參數,不應該會阻塞。接著繼續看下去發現了一些問題。直接來到調用棧中阻塞的地方(先不看 library 和 runtime,這兩個一般沒問題),是在進行 SSH Handshake 的第一個步驟,交換 SSH 版本這步。

  1. // Sends and receives a version line.  The versionLine string should 
  2. // be US ASCII, start with "SSH-2.0-"and should not include a 
  3. // newline. exchangeVersions returns the other side's version line. 
  4. func exchangeVersions(rw io.ReadWriter, versionLine []byte) (them []byte, err error) { 
  5.     ... 
  6.     if _, err = rw.Write(append(versionLine, '\r''\n')); err != nil { 
  7.         return 
  8.     } 
  9.  
  10.     them, err = readVersion(rw) 
  11.     return them, err 
  12.  
  13. // maxVersionStringBytes is the maximum number of bytes that we'll 
  14. // accept as a version string. RFC 4253 section 4.2 limits this at 255 
  15. // chars 
  16. const maxVersionStringBytes = 255 
  17.  
  18. // Read version string as specified by RFC 4253, section 4.2. 
  19. func readVersion(r io.Reader) ([]byte, error) { 
  20.     versionString := make([]byte, 0, 64) 
  21.     var ok bool 
  22.     var buf [1]byte 
  23.  
  24.     for length := 0; length < maxVersionStringBytes; length++ { 
  25.         _, err := io.ReadFull(r, buf[:]) // 阻塞在這里 
  26.         if err != nil { 
  27.             return nil, err 
  28.         } 
  29.         ... 
  30.     } 
  31.  
  32.     ... 
  33.     return versionString, nil 

看邏輯是在給對端發送完自己的版本信息后,等待對端回復,但是一直沒有收到回復。但是為什么會沒回復,為什么沒有超時,剛開始看到這里的我是懵逼的。我只能想到既然這些都阻塞在等待對端回復上,那么一定有對應的連接存在,我先看看機器上的連接有什么問題。

TCP 連接的半打開狀態 (TCP half-open)

在機器上執行了一下 netstat 命令看了下連接數。

  1. # netstat -anp|grep :36000|awk '{print $6}'|sort|uniq -c 
  2.  2110 ESTABLISHED 
  3.       1 LISTEN 
  4.      41 TIME_WAIT 

有大量處于 ESTABLISHED 的進程,數量和 goroutine 數能大致對上。先把注意力放到這些連接上,選其中一兩個看看有什么問題吧。

接著便發現,有些連接,在本機有 6 個連接:

 

但是,對端一個也沒有(圖上那一個連接是我登錄到目標機器的 ssh 連接):

 

google 查了下,發現這種情況屬于 TCP 半打開狀態,出現這種情況應該是建立連接后對端掛掉了或者其他網絡無法連通的原因,而連接又沒有啟動 KeepAlive,導致一端無法發現這種情況,繼續顯示 ESTABLISHED 的連接,而另一端在機器掛掉重新啟動后便不存在這條鏈接了。現在要確認一下是否真的沒用啟用 KeepAlive:

  1. # ss -aeon|grep :36000|grep -v time|wc -l 
  2. 2110 

全部沒開……這里不帶 KeepAlive 的連接數和上面 netstat 顯示出來狀態為 ESTABLISHED 狀態的連接數一致,實際上在執行這兩條命令的間隙肯定有新請求進來,這兩個數字對上不能說完全匹配,只能說大多數是沒有開啟的。這里能 Get 到點就行。

再看一下 ssh.Dial 的邏輯,建立連接用的是 net.DialTimeout,而現網發生泄漏的版本是用 go1.9.2 編譯的,這個版本的 net.DialTimeout 返回的 net.Conn 結構體的 KeepAlive 是默認關閉的(go1.9.2/net/client.go )。

golang.org/x/crypto/ssh 包在調用 net.DialTimeout 時不會顯式啟用 KeepAlive,完全依賴于當前 go 版本的默認行為。在最新版的 go 里面已經把建立 TCP 連接時啟動 KeepAlive 作為默認行為了,于是這里我把代碼遷移到 go1.13.3 重新編譯了一次發到現網了,以為問題就塵埃落定了。

SSH 握手阻塞 (SSH Handshake hang)

實際上不是的。用 go1.13.3 編譯的版本,運行一段時間后,用 pprof 看 goroutine 情況,還是存在不少處于 IO wait 狀態的,并且看調用棧還是原來的味道(SSH handshake 時交換版本信息)。再看一下機器上的連接情況:

  1. # netstat -anp|grep :36000|awk '{print $6}'|sort|uniq -c 
  2.      81 ESTABLISHED 
  3.       1 LISTEN 
  4.       1 SYN_SENT 
  5.      23 TIME_WAIT 
  6. # ss -aeon|grep :36000|grep time|wc -l 
  7. 110 
  8. # ss -aeon|grep :36000|grep -v time|wc -l 
  9. # ss -aeon|grep :36000|grep -v time 
  10. LISTEN     0      128         100.107.1x.x6:36000                    *:*      ino:2508898466 s 

不帶 KeepAlive 那個連接是本機監聽 36000 端口的 sshd,其他都帶上了,那沒什么問題。說明這些阻塞住的應該不是因為 TCP 半打開導致阻塞的,選其中一個 IP 出來看看。

 

用 telnet 可以連上,但是無法斷開連接。說明 TCP 連接是可以建立的,對端卻因為一些不可知的原因不響應。再看看這個 IP 的連接存在多久了

  1. # netstat -atnp|grep 10.100.7x.x9 
  2. tcp        0      0 100.107.1x.x6:8851        10.100.7x.x9:36000         ESTABLISHED 33027/ssh_tunnel_se 
  3. # lsof -p 33027|grep 10.100.7x.x9 
  4. ssh_tunne 33027  mqq   16u  IPv4 3069826111      0t0        TCP 100-107-1x-x6:8504->10.100.7x.x9:36000 (ESTABLISHED) 
  5. # ls -l /proc/33027/fd/16 
  6. lrwx------ 1 mqq mqq 64 Dec 23 15:44 /proc/33027/fd/16 -> socket:[3069826111] 

執行這個命令的時間是 24 日 17 時 25 分,已經阻塞一天多了。那這里的問題就是應用層沒有超時控制導致的。再回過去看 ssh.Dial 的邏輯,Timeout 參數在 SSH handshake 的時候并沒有作為超時控制的參數使用。net.Conn 的 IO 等待在 Linux 下是用非阻塞 epoll_pwait 實現的,進入等待的 goroutine 會被掛起直到有事件進來,超時是通過設置 timer 喚醒 goroutine 進行處理的,暴露出來的接口便是 net.Conn 的 SetDeadline 方法,于是重寫了 ssh.Dial 的邏輯,給 SSH

handshake 階段添加超時:

  1. // DialTimeout starts a client connection to the given SSH server. Differ from 
  2. // ssh.Dial function, this function will be timeout when doing SSH handshake. 
  3. // total timeout = ( 1 + timeFactor ) * config.Timeout 
  4. // refs: https://github.com/cybozu-go/cke/pull/81/files 
  5. func DialTimeout(network, addr string, config *ssh.ClientConfig) (*ssh.Client, error) { 
  6.     conn, err := net.DialTimeout(network, addr, config.Timeout) 
  7.     if err != nil { 
  8.         return nil, err 
  9.     } 
  10.  
  11.     // set timeout for connection 
  12.     timeFactor := time.Duration(3) 
  13.     err = conn.SetDeadline(time.Now().Add(config.Timeout * timeFactor)) 
  14.     if err != nil { 
  15.         conn.Close() 
  16.         return nil, err 
  17.     } 
  18.  
  19.     // do SSH handshake 
  20.     c, chans, reqs, err := ssh.NewClientConn(conn, addr, config) 
  21.     if err != nil { 
  22.         return nil, err 
  23.     } 
  24.  
  25.     // cancel connection read/write timeout 
  26.     err = conn.SetDeadline(time.Time{}) 
  27.     if err != nil { 
  28.         conn.Close() 
  29.         return nil, err 
  30.     } 
  31.     return ssh.NewClient(c, chans, reqs), nil 

用這個函數替換了 ssh.Dial 后,編譯上線,看下連接情況,恢復正常了。(恢復到一個小服務應該有的樣子)

  1. # netstat -anp|grep :36000|awk '{print $6}'|sort|uniq -c 
  2.       3 ESTABLISHED 
  3.       1 LISTEN 
  4.      86 TIME_WAIT 

到這里會發現,其實本文解決的問題是對端如果出現各種異常了,如何及時關閉連接,而不是去解決對端的異常問題。畢竟 SSH 都異常了,誰還能上去查問題呢。現網服務器數量巨大,運行情況各不相同,因此出現異常也屬情理之中,一一解決不太現實。

結尾

剛開始發現泄漏的時候到機器上 top 看了下,當時被 50G 的 VIRT 占用給嚇著了,在咨詢了組內大佬(zorro)的后,實際上這個值大多數時候都不用關心,只需關心 RES 占用即可。因為 RES 是實際占用的物理內存。

 

只看這一個時間點的 VIRT 和 RES 也是看不出到底有多少是泄漏的。只能和不同的時間點的內存占用對比,比如解決問題以后的版本,運行了三四天的情況下,VIRT 占用是 3.9G,而 RES 只占用了 16M。這樣比下來看,還是釋放了不少內存。或者說可以見得泄漏的那些 goroutine 占據了多少內存。

在 golang 中創建 goroutine 是一件很容易的事情,但是不合理的使用可能會導致大量 goroutine 無法結束,資源也無法被釋放,隨著時間推移造成了內存的泄漏。

避免 goroutine 泄漏的關鍵是要合理管理 goroutine 的生命周期,通過 prometheus/client_golang 導出 runtime 指標和利用 net/http/pprof 可以發現和解決 goroutine 泄漏問題。

【本文為51CTO專欄作者“騰訊技術工程”原創稿件,轉載請聯系原作者(微信號:Tencent_TEG)】

 

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2022-07-29 08:17:46

Java對象內存

2023-05-29 09:07:10

SQLpageSize主鍵

2023-10-26 08:38:43

SQL排名平分分區

2025-01-13 00:00:00

配置Redis腦裂

2024-02-28 08:41:51

Maven沖突版本

2010-08-24 09:32:41

2021-10-11 10:25:33

排列nums數組

2022-05-10 08:17:03

goroutine泄漏

2022-11-29 16:35:02

Tetris鴻蒙

2022-12-02 14:20:09

Tetris鴻蒙

2024-06-27 08:54:22

Go模塊團隊

2022-02-08 17:17:27

內存泄漏排查

2014-10-21 15:07:04

2023-03-30 09:32:27

2022-11-14 17:01:34

游戲開發畫布功能

2019-12-17 10:01:40

開發技能代碼

2017-01-22 15:09:08

架構閉環演進

2023-04-26 07:30:00

promptUI非結構化

2023-04-26 07:42:16

WebGL圖元的類型

2022-10-08 00:00:05

SQL機制結構
點贊
收藏

51CTO技術棧公眾號

亚洲人吸女人奶水| 亚洲色图欧美日韩| 欧美巨胸大乳hitomi| 综合久久2o19| av一区二区在线播放| 亚洲免费观看高清| 成人亲热视频网站| 国产网站免费在线观看| 国产老妇伦国产熟女老妇视频| 精品国产视频| 91精品国产色综合久久| 神马影院午夜我不卡| 992在线观看| 波多野结衣乳巨码无在线观看| 激情五月播播久久久精品| 亚洲福利在线播放| 一级日韩一区在线观看| 国产情侣在线视频| 精品久久免费| 亚洲欧洲日韩综合一区二区| 97精品国产91久久久久久| 亚州精品一二三区| 高h调教冰块play男男双性文| 国产一区不卡| 亚洲精品少妇30p| 国产综合av一区二区三区| 麻豆精品一区二区三区视频| 欧美电影免费观看高清完整| 国产精品一区专区| 伊人久久精品视频| 六月婷婷在线视频| av网站免费播放| 欧美日韩老妇| 日韩午夜在线观看| 亚洲成年人专区| 亚洲男人天堂网址| 亚洲尤物av| 日韩欧美一区二区久久婷婷| 中文字幕一区二区三区乱码| 中文字幕免费高清网站| 国内揄拍国内精品久久| 欧美主播一区二区三区美女| 激情久久av| 久久免费精彩视频| 麻豆精品国产| 色综合欧美在线| 精品国产一二| aaaa一级片| 久久精品国产免费| 精品国产一区二区三区久久久狼 | 91精品国产乱码久久久| 亚洲人成网77777色在线播放| 91精品综合久久久久久| 神马影院我不卡| 色视频在线观看福利| 大美女一区二区三区| 91在线国产电影| 久久久综合久久| 97精品国产一区二区三区| 欧美性xxxxxxxx| 亚洲不卡1区| 五月天中文字幕| 成人影视亚洲图片在线| 欧美狂野另类xxxxoooo| 最新视频 - x88av| 国产99久久九九精品无码免费| 日本不卡视频在线观看| 日韩女在线观看| 精品亚洲aⅴ无码一区二区三区| av一区在线| 国产精品久久久久久久久快鸭| 精品综合久久| 亚洲欧美日韩精品永久在线| 成人av免费在线| 国产伦精品一区二区三区高清版| 国产一级特黄aaa大片| 国产主播性色av福利精品一区| 91麻豆精品国产综合久久久久久 | 日本一不卡视频| 911国产网站尤物在线观看| 亚洲人人夜夜澡人人爽| 久久青青视频| 国产日韩欧美a| 国产成人在线一区| 在线观看污污网站| 国内精品久久久久久久影视麻豆 | 99热在线观看精品| 18国产精品| 欧美大片国产精品| 国产精品成人99一区无码| 色综合天天色| 精品免费在线观看| 欧美亚洲精品日韩| 一本一道精品欧美中文字幕| 狠狠色丁香婷综合久久| caoporen国产精品| 天天摸天天碰天天爽天天弄| 国产亚洲欧美激情| 亚洲啪啪av| 狂野欧美性猛交xxxxx视频| 91免费观看视频在线| 国产精品久久一| 国产一区二区三区视频免费观看| 国产精品69毛片高清亚洲| 欧美在线播放视频| 青青青视频在线播放| 亚洲最大av| 最近2019年好看中文字幕视频| 在线免费播放av| 精品毛片免费观看| 久久夜色精品国产欧美乱| 麻豆精品免费视频| 婷婷六月综合| 奇米四色中文综合久久| 国产精品高潮呻吟av| 成人av免费观看| 久久天天狠狠| 国产伦精品一区二区三区四区| 国产一区二区按摩在线观看| 国产精品成人在线| 黄网在线观看视频| 亚洲免费播放| 91视频国产高清| 婷婷丁香花五月天| 国产精品精品国产色婷婷| 成人免费播放器| 五月天色综合| 亚洲欧美综合图区| 久久国产精品波多野结衣| 人人精品人人爱| 激情小说综合网| 黄色av电影在线观看| 富二代精品短视频| 91成人在线观看喷潮蘑菇| 最新日韩一区| 日韩电影免费观看中文字幕 | 亚洲精品日产精品乱码不卡| 国产精品一线二线三线| 成人在线免费电影| 欧美日韩免费看| 羞羞的视频在线| 老牛精品亚洲成av人片| 欧美视频一区在线| 美女又黄又免费的视频| 欧美手机视频| 91精品国产沙发| 日韩中文字幕观看| 一区二区三区四区在线| 中文字幕在线综合| 国产日本久久| 91精品国产综合久久久久久漫画| 成人黄色免费网址| 我不卡手机影院| 国产脚交av在线一区二区| 天堂资源最新在线| 91色九色蝌蚪| 大地资源第二页在线观看高清版| 日韩三级影视| 国产婷婷色综合av蜜臀av| 日韩欧美激情视频| 暴力调教一区二区三区| www.亚洲视频.com| www.亚洲一二| 久久久中文字幕| 免费观看黄色av| 亚洲大型综合色站| 日韩av无码一区二区三区不卡| 黄色成人在线网址| 翡翠波斯猫1977年美国| 黑人精品视频| 日韩成人av在线播放| 青青草成人av| 久久久久久麻豆| 777精品久无码人妻蜜桃| 欧美**字幕| 日韩天堂在线视频| 国产精品乱码久久久| 综合电影一区二区三区 | 精品久久久三级丝袜| 捆绑裸体绳奴bdsm亚洲| 影音国产精品| 欧美洲成人男女午夜视频| 青青操在线视频| 欧美性淫爽ww久久久久无| 亚洲精品电影院| 狠狠狠色丁香婷婷综合激情| 日韩欧美一级在线| 97青娱国产盛宴精品视频| 久久久久亚洲精品国产| 看电影就来5566av视频在线播放| 国产精品福利一区二区三区| 亚洲一区二区在线视频观看| 婷婷国产精品| 国产精品成人一区二区| 尤物yw193can在线观看| 精品日韩欧美在线| av网站中文字幕| 成人高清视频在线| 乱子伦视频在线看| 久久精品久久久| 午夜免费久久久久| 国产九九在线| 日韩一区二区三区视频| 成人精品免费在线观看| 国产精品午夜在线| 国产伦精品一区二区三区88av| 亚久久调教视频| 99热在线国产| 亚洲精品成人图区| 亚洲国产精品久久| 中文字幕 国产精品| 自拍偷拍国产精品| 日本japanese极品少妇| 久久爱www久久做| 日韩a∨精品日韩在线观看| 性欧美video另类hd尤物| 国内精品伊人久久| 亚洲麻豆精品| 日韩av一区在线| av免费在线不卡| 欧美制服丝袜第一页| 美女的奶胸大爽爽大片| 久久色中文字幕| 人妻互换一二三区激情视频| 久久91精品国产91久久小草| 成人综合视频在线| 午夜日韩福利| 亚洲国产婷婷香蕉久久久久久99| 久久综合社区| 亚洲最大的成人网| 国产在线观看网站| 精品国产百合女同互慰| 国产精品成人av久久| 国产成人丝袜美腿| 午夜精品在线免费观看| 国产欧美在线| 日韩av一区二区三区在线| 成人盗摄视频| 91精品国产99久久久久久红楼 | 亚洲影视一区二区三区| 亚洲一区不卡在线| 国产精品美女久久久久久不卡| 古典武侠综合av第一页| 国产美女视频一区二区| 国产欧美日韩精品丝袜高跟鞋| 五月激情久久| 97涩涩爰在线观看亚洲| 麻豆影视在线观看_| 亚洲天堂免费观看| 日韩精品手机在线| 性感美女极品91精品| 久久高清无码视频| 一区二区日韩电影| 久久久久亚洲av无码麻豆| 蜜桃视频在线观看一区| 黄色录像特级片| 欧美成人直播| 一区二区三区视频| 国产精品久久久久久| 宅男在线精品国产免费观看| 久久神马影院| 伊人情人网综合| 香蕉精品视频在线观看| 三年中国中文在线观看免费播放| 99久久99久久精品国产片桃花| 中文字幕日韩一区二区三区| 亚洲国产精品成人| 欧美另类videosbestsex日本| 午夜日韩福利| 日韩伦理在线免费观看| 亚洲一区久久| 一本久道中文无码字幕av| 国产日韩欧美三级| 久久精品视频16| 一区二区三区国产盗摄| 国产一级片黄色| 美女mm1313爽爽久久久蜜臀| 国产无色aaa| 国产成人高清在线| 久久久久亚洲AV成人无码国产| 久久久国际精品| 成人午夜免费影院| 1区2区3区精品视频| 成年人av电影| 欧美日韩国产色| 最新国产中文字幕| 91精品国产一区二区人妖| 成人免费视频国产| 亚洲人成电影网站色xx| 日本激情视频在线观看| 欧美高清自拍一区| 中文字幕高清在线播放| 国产精品久久中文| 日韩一区免费| 国产成人a亚洲精品| 日本电影久久久| 国产在线欧美日韩| 成人女性视频| 成人小视频在线观看免费| 亚洲综合精品| 亚洲va在线va天堂va偷拍| 99热99精品| 粉嫩精品久久99综合一区| 一卡二卡欧美日韩| 超碰在线观看91| 777a∨成人精品桃花网| 精品久久久无码中文字幕| 精品日韩一区二区三区| 欧美一区二区三区| 97在线观看免费| 天堂久久一区| 欧洲一区二区在线观看| 欧美激情aⅴ一区二区三区| 一级在线免费视频| 成人午夜看片网址| 亚洲aaa视频| 日韩欧美在线国产| 日本熟女一区二区| 欧美丝袜丝nylons| 日韩一卡二卡在线| 久久亚洲影音av资源网| 日韩网站中文字幕| 好吊妞www.84com只有这里才有精品| 国产一卡不卡| 精品国产av无码一区二区三区| 久久99精品国产麻豆不卡| 极品白嫩丰满美女无套| 一区二区三区免费在线观看| 亚洲最大成人av| 亚洲欧美制服第一页| 性欧美1819sex性高清大胸| 国产精品91视频| 青青草这里只有精品| 国产黄色激情视频| 国产在线视频不卡二| 日韩不卡av在线| 色综合婷婷久久| 婷婷婷国产在线视频| 欧美成人免费网| 精品国产欧美| 资源网第一页久久久| 日本不卡免费在线视频| 亚洲自拍偷拍一区二区| 亚洲成人福利片| 亚洲av无码国产精品久久不卡| 日韩在线观看免费av| 亚洲欧美在线成人| 日本黑人久久| 美女久久一区| 亚欧洲乱码视频| 欧美丝袜一区二区| 亚洲乱码国产乱码精品精软件| 日韩中文字幕视频在线| 亚洲天堂网站| 一区高清视频| 精品一二三四区| 国产精品嫩草影院俄罗斯| 欧美丰满高潮xxxx喷水动漫| 亚洲精品自拍视频在线观看| 色综合久久中文字幕综合网| 欧美一区二区黄片| 欧美激情视频一区二区三区不卡| 免费观看性欧美大片无片| 精品少妇人妻av一区二区| 久草热8精品视频在线观看| 亚洲综合图片一区| 欧美疯狂做受xxxx富婆| a视频在线观看免费| 国产精品天天狠天天看| 精品国产乱码久久久| 97公开免费视频| 中文字幕亚洲电影| 国内毛片毛片毛片毛片| 欧美国产激情18| 久久aimee| 日批视频在线免费看| 欧美激情成人在线| 99re6在线观看| 亚洲欧美电影一区二区| 亚洲精品久久久久久无码色欲四季| 欧美极品在线播放| 婷婷精品在线观看| 人人干人人视频| 18成人在线视频| www.国产麻豆| 午夜伦理精品一区| 精品久久精品| 99九九99九九九99九他书对| 亚洲免费在线看| 亚洲色大成网站www| 国产精品日韩电影| 午夜亚洲福利| 亚洲欧美日韩色| 欧美三级电影在线看| 日本无删减在线| 欧美一区二区三区在线播放| 激情综合一区二区三区| 免费无码毛片一区二区app| 亚洲精品日韩在线| 国产一区二区三区亚洲综合|