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

Go Flight Recorder 終于來(lái)了,線上問(wèn)題可以“回放”了!

開(kāi)發(fā) 前端
簡(jiǎn)單來(lái)說(shuō),F(xiàn)light Recorder(飛行記錄器)就像是給你的程序裝了個(gè)行車記錄儀,出了事故可以回放錄像。比起傳統(tǒng)的 trace 方式,既節(jié)省資源,又能精準(zhǔn)定位問(wèn)題。這個(gè)特性在 Go1.25 正式可用了,配合之前幾個(gè)版本對(duì) tracing 的優(yōu)化(Go1.21 降低了開(kāi)銷,Go1.22 改進(jìn)了 trace 格式),整個(gè)診斷工具鏈越來(lái)越成熟了。

不知道大家在生產(chǎn)環(huán)境排查問(wèn)題的時(shí)候,有沒(méi)有遇到過(guò)這樣的窘境:服務(wù)突然慢了,等你反應(yīng)過(guò)來(lái)想抓個(gè) trace 看看,問(wèn)題已經(jīng)過(guò)去了。就像開(kāi)車遇到異響,等你停下來(lái)檢查,聲音又沒(méi)了。

今天給大家分享 Go1.25 的一個(gè)重磅特性:Flight Recorder(飛行記錄器)。這玩意兒真的是救命神器,能讓你在問(wèn)題發(fā)生后,回溯幾秒鐘前的執(zhí)行狀態(tài)。

圖片圖片

背景

先說(shuō)說(shuō)為什么需要這個(gè)東西。

Go 的 execution trace 功能其實(shí)一直都有,通過(guò)runtime/trace包就能收集程序執(zhí)行時(shí)的各種事件。

這對(duì)于調(diào)試延遲問(wèn)題特別有用,能清楚地看到 goroutine 什么時(shí)候在執(zhí)行,更重要的是,什么時(shí)候沒(méi)在執(zhí)行。

但問(wèn)題來(lái)了。

對(duì)于短期運(yùn)行的程序,比如測(cè)試、基準(zhǔn)測(cè)試或者命令行工具,你可以從頭到尾收集完整的 trace。但對(duì)于長(zhǎng)期運(yùn)行的 Web 服務(wù),這就不現(xiàn)實(shí)了。服務(wù)器可能要運(yùn)行好幾天甚至幾周,你總不能一直開(kāi)著 trace 收集數(shù)據(jù)吧?那數(shù)據(jù)量得多恐怖。

更尷尬的是,往往是某個(gè)請(qǐng)求超時(shí)了,或者健康檢查失敗了,等你意識(shí)到問(wèn)題,想調(diào)用trace.Start()的時(shí)候,早就晚了。

有人說(shuō),那我隨機(jī)采樣不就行了?這個(gè)思路是對(duì)的,但需要一大堆基礎(chǔ)設(shè)施支撐。你得存儲(chǔ)、分類、處理海量的 trace 數(shù)據(jù),而且大部分?jǐn)?shù)據(jù)其實(shí)都沒(méi)啥用。更關(guān)鍵的是,當(dāng)你想排查某個(gè)具體問(wèn)題的時(shí)候,這種方式基本幫不上忙。

Flight Recorder 是什么

這就是 Flight Recorder 要解決的問(wèn)題。

核心思路很簡(jiǎn)單:程序通常能感知到出問(wèn)題了,但根因可能早就發(fā)生了。Flight Recorder 讓你能收集問(wèn)題發(fā)生前幾秒鐘的 trace 數(shù)據(jù)。

它的工作原理是這樣的:正常收集 trace 數(shù)據(jù),但不是寫到文件或 socket 里,而是在內(nèi)存里緩存最近幾秒的數(shù)據(jù)。

一旦程序檢測(cè)到問(wèn)題,隨時(shí)可以把緩沖區(qū)的內(nèi)容快照下來(lái),精準(zhǔn)定位到問(wèn)題窗口。

實(shí)戰(zhàn)案例

我們用一個(gè)實(shí)際例子來(lái)看看怎么用。

假設(shè)有這么一個(gè) HTTP 服務(wù),實(shí)現(xiàn)了一個(gè)"猜數(shù)字"的游戲。它暴露了一個(gè)/guess-number端點(diǎn),接收一個(gè)整數(shù),告訴調(diào)用者猜得對(duì)不對(duì)。

同時(shí)還有個(gè) goroutine 每分鐘發(fā)送一次統(tǒng)計(jì)報(bào)告。

核心代碼大概是這樣:

type bucket struct {
    mu      sync.Mutex
    guesses int
}

func main() {
    buckets := make([]bucket, 100)

    // 每分鐘發(fā)送報(bào)告
    gofunc() {
        forrange time.Tick(1 * time.Minute) {
            sendReport(buckets)
        }
    }()

    answer := rand.Intn(len(buckets))

    http.HandleFunc("/guess-number", func(w http.ResponseWriter, r *http.Request) {
        start := time.Now()

        guess, err := strconv.Atoi(r.URL.Query().Get("guess"))
        if err != nil || !(0 <= guess && guess < len(buckets)) {
            http.Error(w, "invalid 'guess' value", http.StatusBadRequest)
            return
        }

        b := &buckets[guess]
        b.mu.Lock()
        b.guesses++
        b.mu.Unlock()

        fmt.Fprintf(w, "guess: %d, correct: %t", guess, guess == answer)

        log.Printf("HTTP request: endpoint=/guess-number guess=%d duratinotallow=%s",
            guess, time.Since(start))
    })

    log.Fatal(http.ListenAndServe(":8090", nil))
}

發(fā)送報(bào)告的函數(shù)是這樣寫的:

func sendReport(buckets []bucket) {
    counts := make([]int, len(buckets))

    for index := range buckets {
        b := &buckets[index]
        b.mu.Lock()
        defer b.mu.Unlock()

        counts[index] = b.guesses
    }

    b, err := json.Marshal(counts)
    if err != nil {
        log.Printf("failed to marshal report data: error=%s", err)
        return
    }

    url := "http://localhost:8091/guess-number-report"
    if _, err := http.Post(url, "application/json", bytes.NewReader(b)); err != nil {
        log.Printf("failed to send report: %s", err)
    }
}

上線后,用戶開(kāi)始反饋有些請(qǐng)求特別慢。

看日志發(fā)現(xiàn),大部分請(qǐng)求都是微秒級(jí)的,但偶爾會(huì)有超過(guò) 100 毫秒的:

2025/09/19 16:52:02 HTTP request: endpoint=/guess-number guess=69 duratinotallow=625ns
2025/09/19 16:52:02 HTTP request: endpoint=/guess-number guess=42 duratinotallow=1.417μs
2025/09/19 16:52:02 HTTP request: endpoint=/guess-number guess=86 duratinotallow=115.186167ms
2025/09/19 16:52:02 HTTP request: endpoint=/guess-number guess=0 duratinotallow=127.993375ms

問(wèn)題來(lái)了,能看出哪里有 bug 嗎?

用 Flight Recorder 排查

先別急著看答案,我們用 Flight Recorder 來(lái)排查。

首先,在 main 函數(shù)里配置并啟動(dòng) recorder:

// 配置Flight Recorder
fr := trace.NewFlightRecorder(trace.FlightRecorderConfig{
    MinAge:   200 * time.Millisecond,
    MaxBytes: 1 << 20, // 1 MiB
})
fr.Start()

這里 MinAge 設(shè)置為 200 毫秒,大概是問(wèn)題窗口的 2 倍。

MaxBytes 限制緩沖區(qū)大小,避免內(nèi)存爆炸。一般來(lái)說(shuō),每秒會(huì)產(chǎn)生幾 MB 的 trace 數(shù)據(jù),繁忙的服務(wù)可能達(dá)到 10MB/s。

接下來(lái)寫個(gè)輔助函數(shù)來(lái)捕獲快照:

var once sync.Once

func captureSnapshot(fr *trace.FlightRecorder) {
    once.Do(func() {
        f, err := os.Create("snapshot.trace")
        if err != nil {
            log.Printf("opening snapshot file %s failed: %s", f.Name(), err)
            return
        }
        defer f.Close()

        _, err = fr.WriteTo(f)
        if err != nil {
            log.Printf("writing snapshot to file %s failed: %s", f.Name(), err)
            return
        }

        fr.Stop()
        log.Printf("captured a flight recorder snapshot to %s", f.Name())
    })
}

然后在請(qǐng)求處理函數(shù)里,當(dāng)響應(yīng)時(shí)間超過(guò) 100 毫秒時(shí)觸發(fā)快照:

if fr.Enabled() && time.Since(start) > 100*time.Millisecond {
    go captureSnapshot(fr)
}

重新運(yùn)行服務(wù),等到觸發(fā)慢請(qǐng)求,我們就能拿到快照文件了。

分析 trace

拿到 trace 文件后,用 Go 自帶的工具分析:

go tool trace snapshot.trace

這個(gè)工具會(huì)啟動(dòng)一個(gè)本地 Web 服務(wù)器,然后在瀏覽器里打開(kāi)。點(diǎn)擊"View trace by proc"可以看到時(shí)間線視圖。

在這個(gè)視圖里,我們能看到 goroutine 的執(zhí)行情況。重點(diǎn)關(guān)注右側(cè)那個(gè)巨大的空白期——大概 100 毫秒,啥都沒(méi)干!

圖片圖片

放大這個(gè)區(qū)域后,可以看到很多 goroutine 都在等待一個(gè)特定的 goroutine。點(diǎn)擊這個(gè) goroutine,查看它的棧信息,發(fā)現(xiàn)它在執(zhí)行sendReport函數(shù)。

圖片圖片

再仔細(xì)看那些"Outgoing flow"事件,它們都指向了sendReport里的Unlock操作。

圖片圖片

問(wèn)題找到了!

看這段代碼:

for index := range buckets {
    b := &buckets[index]
    b.mu.Lock()
    defer b.mu.Unlock()

    counts[index] = b.guesses
}

我們本想給每個(gè) bucket 加鎖,拷貝完值就解鎖。但defer的執(zhí)行時(shí)機(jī)是函數(shù)返回時(shí),不是循環(huán)結(jié)束時(shí)。

所以這些鎖一直被持有,直到整個(gè) HTTP 請(qǐng)求完成后才釋放。

這就是典型的 defer 誤用場(chǎng)景。正確的寫法應(yīng)該是:

for index := range buckets {
    b := &buckets[index]
    b.mu.Lock()
    counts[index] = b.guesses
    b.mu.Unlock()
}

總結(jié)

Flight Recorder 真的是個(gè)好東西。它讓我們能在問(wèn)題發(fā)生后,回過(guò)頭去看發(fā)生了什么,而不需要一直開(kāi)著 trace 收集海量數(shù)據(jù)。

簡(jiǎn)單來(lái)說(shuō),它就像是給你的程序裝了個(gè)行車記錄儀,出了事故可以回放錄像。比起傳統(tǒng)的 trace 方式,既節(jié)省資源,又能精準(zhǔn)定位問(wèn)題。

這個(gè)特性在 Go1.25 正式可用了,配合之前幾個(gè)版本對(duì) tracing 的優(yōu)化(Go1.21 降低了開(kāi)銷,Go1.22 改進(jìn)了 trace 格式),整個(gè)診斷工具鏈越來(lái)越成熟了。

如果你經(jīng)常需要排查生產(chǎn)環(huán)境的性能問(wèn)題,強(qiáng)烈建議試試這個(gè)新特性。

責(zé)任編輯:武曉燕 來(lái)源: 腦子進(jìn)煎魚(yú)了
相關(guān)推薦

2023-11-02 08:43:08

protocgo兼容

2021-12-13 20:09:33

GoElasticsearJava

2021-07-29 20:29:36

Linux c 代碼Java

2024-07-16 16:53:09

2021-04-19 11:45:31

Pythonswitch編程語(yǔ)言

2021-04-16 15:02:38

Python 開(kāi)發(fā)編程語(yǔ)言

2025-06-06 08:13:47

2021-08-10 09:02:37

NumPy視圖內(nèi)存

2025-10-31 09:01:37

2021-04-20 08:03:26

單播協(xié)議TCP

2024-08-15 11:37:05

2017-04-17 09:01:39

科技新聞早報(bào)

2013-07-12 09:59:58

Android 5.0

2023-05-29 08:38:56

popover控制懸浮層

2009-10-22 08:50:33

Windows 7上市新聞

2022-11-08 08:29:43

Goslog 庫(kù)工具

2024-03-12 09:10:21

GoarenaAPI

2021-01-24 08:20:55

微信微信8.0.1移動(dòng)應(yīng)用

2013-08-28 10:27:14

騰訊云百度云

2021-10-22 15:45:32

開(kāi)發(fā)技能React
點(diǎn)贊
收藏

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

手机看片福利在线| 亚洲国产天堂久久国产91| 亚洲免费一级电影| 亚洲欧洲一二三| 人人干人人干人人干| 亚洲午夜剧场| 亚洲一区二区三区免费在线观看| 欧美日韩一区二区三区高清| 国产乱码精品一区二区三区中文 | 免费成人动漫| 久久99国产精品久久99果冻传媒| 亚洲国产日韩欧美在线图片| 在线电影中文日韩| 精品裸体舞一区二区三区| 免费一区二区三区在在线视频| 亚洲一二三四五六区| 国产高潮在线| 日韩精品免费一区二区在线观看| 亚洲高清视频中文字幕| 成人免费高清完整版在线观看| 女人又爽又黄免费女仆| 2018av在线| 国产99一区视频免费| 久热精品视频在线观看| 国模私拍视频在线观看| 中文字幕在线免费| 久久91精品久久久久久秒播| 久久久亚洲成人| 黄色av电影网站| 日本一本在线免费福利| 国产精品69毛片高清亚洲| 久久九九亚洲综合| 亚洲一区二区在线视频观看| 在线观看美女网站大全免费| 床上的激情91.| 久久久久久久久久久久久久久久久久av| 少妇欧美激情一区二区三区| 1区2区在线观看| 国产一区二区中文字幕| 久久好看免费视频| 91网站免费视频| 果冻天美麻豆一区二区国产| 亚洲成人午夜影院| 亚洲AV无码成人精品一区| 国产精品无码天天爽视频| 久久久久久久久丰满| 91精品国产综合久久精品app| 亚洲一区 在线播放| 亚洲成人久久精品| 亚洲国产片色| 国产视频亚洲精品| 另类小说色综合| 国产在线1区| 高清国产午夜精品久久久久久| 国产欧美va欧美va香蕉在线| 2025国产精品自拍| 加勒比视频一区| 在线观看日韩av先锋影音电影院| 亚洲一区二区精品在线| www.xxx国产| 国产日韩亚洲| 性欧美xxxx交| 三年中国中文观看免费播放| 国产精品xnxxcom| 精品女厕一区二区三区| 欧美日韩精品综合| 97人人爽人人爽人人爽| 日韩精品久久理论片| 久热爱精品视频线路一| 欧美三级黄色大片| 欧美福利网址| 亚洲桃花岛网站| 伊人国产精品视频| 理论不卡电影大全神| 中文字幕av免费专区久久| 3d蒂法精品啪啪一区二区免费| 91香蕉在线视频| 国产一区二区三区的电影| 欧美做受高潮电影o| 九九精品视频免费| 中文字幕免费一区二区| 亚洲午夜未删减在线观看 | 久久精选视频| xxxx欧美18另类的高清| 白嫩情侣偷拍呻吟刺激| 91伊人久久| 亚洲摸摸操操av| 日产国产精品精品a∨| 亚洲免费视频网| 久久国产生活片100| 欧美在线视频观看免费网站| 中文字幕在线欧美| 一区在线视频| 久久久精品国产亚洲| 亚洲成人生活片| 清纯唯美亚洲综合一区| 日韩成人在线播放| 国产麻豆剧传媒精品国产| 成人在线观看免费播放| 欧美绝品在线观看成人午夜影视| 欧美极品欧美精品欧美图片| 免费毛片网站在线观看| 国产无码精品久久久| 欧美码中文字幕在线| 精品国产一区二区三区不卡| 欧美美女一级片| 91亚洲无吗| 欧美一级二级在线观看| 视频在线观看免费高清| 欧美momandson| 精品久久久久久中文字幕一区奶水 | 日韩 欧美 亚洲| 亚洲精品国产成人影院| 97精品免费视频| 91激情在线观看| 日韩高清不卡在线| 动漫美女被爆操久久久| www.黄色国产| 久久久91精品国产一区二区精品| 久久99精品久久久久久久久久| 亚洲av无码国产精品久久不卡| 91丨porny丨蝌蚪视频| 久久99精品久久久久久水蜜桃| 91最新在线| 午夜欧美大尺度福利影院在线看| 91.com在线| 女同一区二区免费aⅴ| 亚洲免费在线视频| caopor在线视频| 涩涩在线视频| xxxxx.日韩| 亚洲激情第一区| 精品日韩在线播放| 影院在线观看全集免费观看| 色综合久久99| 国产精品入口免费软件| 91大神在线观看线路一区| 亚洲第一中文字幕| 一级特黄a大片免费| 色狠狠久久av综合| 亚洲一级黄色片| 日韩三级小视频| 国产一区二区三区黄视频 | 国产欧美日韩视频一区二区 | 91视频免费版污| 日韩欧美美女在线观看| 欧美夫妻性视频| 国产一级在线视频| 国产一区二区三区四区五区入口 | 色综合久久88色综合天天免费| 日韩黄色一区二区| 欧美日本国产| 97视频色精品| 亚洲精品人妻无码| 一区二区三区蜜桃网| 霍思燕三级露全乳照| 秋霞影院一区| 精品亚洲夜色av98在线观看| 日本一二三区视频| 成人av免费网站| 欧美一进一出视频| 欧美激情办公室videoshd| 一区二区三区免费在线观看| 在线a免费观看| 中文字幕日韩一区二区不卡| 亚洲一区二区中文字幕| 偷拍25位美女撒尿视频在线观看| 国产视频一区二区三区在线观看| 秋霞在线一区二区| 秋霞一区二区三区| 国内精品久久久久久| 无码国产精品96久久久久| 91porn在线视频| 无码一区二区三区视频| 午夜精品一区二区三区视频免费看| 精品黑人一区二区三区国语馆| 亚洲激情综合网| a级片在线观看视频| 国产日韩欧美| 午夜午夜精品一区二区三区文| 黄页在线观看免费| 欧美视频在线不卡| 伊人网综合视频| 一区二区三区在线电影| 91精品国产99久久久久久红楼| 欧美卡一卡二| 亚洲精品视频中文字幕| 中文在线免费看视频| eeuss国产一区二区三区| 亚洲永久激情精品| 欧美亚洲人成在线| 亚洲一级黄色av| 国产美女主播在线观看| 国产亚洲一区二区三区在线观看 | www.国产视频| 欧美日韩亚洲国产一区| 91动漫免费网站| 久久久夜精品| 国产女主播一区二区三区| 日本中文字幕伦在线观看| 色综合天天综合网国产成人综合天 | 欧美一区二区三区系列电影| 国产在线免费视频| 日本a一级在线免费播放| 中文字幕一区二区三区欧美日韩| 国产成人av一区二区三区| 92国产精品| 久久久精品免费视频| 欧洲伦理片一区 二区 三区| 欧美高清精品3d| 日韩视频在线观看一区| 丁香一区二区三区| 蜜臀av免费观看| 亚洲人人精品| 一本—道久久a久久精品蜜桃| 欧美变态网站| 91精品国产高清自在线看超| 亚洲精品国产av| 欧洲一区二区三区在线| 久久亚洲精品大全| 成人免费视频免费观看| 乌克兰美女av| 国产日韩一区二区三区在线| 国产成人生活片| 欧美艳星介绍134位艳星| 国产一区二区不卡视频| 精品国产不卡一区二区| 欧美黑人视频一区| 在线观看完整版免费| 亚洲精品美女久久久| www.97av.com| 91精品国产91久久综合桃花 | 免费在线看黄色| 国产一区二区日韩| 日本免费一区二区三区最新| 精品成人私密视频| www.久久伊人| 欧美一区二区三区免费观看视频| 伊人网视频在线| 91国产成人在线| 网爆门在线观看| 久久久久久久久久美女| 免费成人蒂法网站| caoporen国产精品视频| 国产精品果冻传媒| 高清免费成人av| 国产高潮失禁喷水爽到抽搐| 国产麻豆91精品| 免费高清一区二区三区| 免费久久久久久久久| 国产精品久久二区| 91麻豆国产福利在线观看宅福利| 色妞一区二区三区| 欧美特级特黄aaaaaa在线看| 一本一本大道香蕉久在线精品 | 国产视频网站在线| 6080亚洲精品一区二区| 妺妺窝人体色www在线下载| 白白色亚洲国产精品| 免费观看一区二区三区| 国产成人在线看| 又大又长粗又爽又黄少妇视频| 国产精品91xxx| 人妻互换一二三区激情视频| 成人av网址在线| 久久久久久久久免费看无码 | 亚洲精品国产视频| 全程偷拍露脸中年夫妇| 亚洲夂夂婷婷色拍ww47| 国产精品成人aaaa在线| 欧美日韩国产精品一区| 秋霞av一区二区三区| 一区二区三区美女视频| 亚洲精品午夜久久久久久久| 欧美日韩激情网| 无码人妻精品一区二区三区蜜桃91| 色噜噜狠狠成人中文综合| 中文字幕乱码一区二区 | 日本高清视频网站| 亚洲免费中文字幕| 日本天堂在线观看| 久久99精品久久久久久青青91| 裸体xxxx视频在线| 亚洲成人教育av| 三级理论午夜在线观看| 在线观看国产精品日韩av| 成人影院在线看| 中文字幕精品在线| 欧洲亚洲精品视频| 中文综合在线观看| 污污的视频在线观看| 国产91精品视频在线观看| 欧美xxxx少妇| 欧美中文字幕在线播放| 日本免费在线一区| 国产女人水真多18毛片18精品| 欧美精品久久久久久| 久久视频免费在线| 免费在线欧美黄色| 国产精品宾馆在线精品酒店| 亚洲午夜极品| 妺妺窝人体色www看人体| 国产色综合网| 午夜视频在线网站| av中文字幕不卡| 疯狂撞击丝袜人妻| 综合欧美一区二区三区| 萌白酱视频在线| 亚洲成人动漫一区| 中文在线观看免费高清| 日韩av综合中文字幕| 爆操欧美美女| 国产精品99免视看9| 国产精品亚洲一区二区三区在线观看 | 成人欧美一区二区三区黑人免费| 伊人久久大香线蕉无限次| 黑人另类av| 小说区图片区色综合区| 免费久久久久久| 久久五月激情| 少妇搡bbbb搡bbb搡打电话| 国产精品久久久久一区二区三区共| 在线观看亚洲大片短视频| 欧美国产欧美综合| 日韩av黄色片| 日韩精品中文字幕一区| 高h调教冰块play男男双性文| 在线观看免费高清视频97| 麻豆成全视频免费观看在线看| 99re视频在线观看| 成人在线视频中文字幕| 一区二区精品国产| 久久婷婷激情| 少妇毛片一区二区三区| 国产亚洲自拍一区| 日韩成人免费观看| 亚洲成人在线网| 欧美人与禽猛交乱配| 91手机视频在线观看| 97久久亚洲| 成人在线观看毛片| 国产精品一区在线观看乱码| 色偷偷男人天堂| 在线观看三级视频欧美| 极品白浆推特女神在线观看| 久久精彩免费视频| av成人在线播放| 日韩少妇中文字幕| 麻豆视频观看网址久久| 亚洲一二三精品| 欧美日韩国产首页在线观看| xxxx18国产| 久久99国产精品久久久久久久久| 玖玖玖视频精品| 欧美 日韩 国产精品| 久久久夜精品| www.99热| 欧美丰满少妇xxxbbb| 高清全集视频免费在线| 96精品久久久久中文字幕| 中文无码久久精品| 亚洲成年人av| 懂色av影视一区二区三区| 十九岁完整版在线观看好看云免费| 欧美在线播放视频| 国产一卡不卡| 欧美高清中文字幕| 成人午夜私人影院| 日韩av在线播| 亚洲视频自拍偷拍| 婷婷丁香久久| 国产尤物av一区二区三区| 不卡视频在线看| 无码久久精品国产亚洲av影片| 日韩欧美一级在线播放| 牛牛精品视频在线| 欧美aaaaa喷水| 毛片一区二区三区| 欧美xxxx黑人xyx性爽| 亚洲成在人线av| 88xx成人永久免费观看| 自拍偷拍99| 首页欧美精品中文字幕| 亚洲天堂精品一区| 日韩一区二区三区四区| 女人让男人操自己视频在线观看| 日韩av不卡播放| 国产精品91一区二区| 国产亚洲欧美在线精品| 久久久极品av| 丝袜久久网站| 国产成人美女视频| 午夜伦欧美伦电影理论片| 国产爆初菊在线观看免费视频网站 | 精品视频久久久久| 亚洲人成毛片在线播放| 国产精品日韩精品在线播放| 一女被多男玩喷潮视频| 丁香婷婷综合网| 国产女主播喷水视频在线观看|