精品欧美一区二区三区在线观看 _久久久久国色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)

台湾佬成人网| 老熟妇高潮一区二区高清视频 | 国产主播精品在线| 疯狂试爱三2浴室激情视频| 玖玖精品一区| 色域天天综合网| 影音先锋欧美资源| 免费观看毛片网站| 免费高清视频精品| 国内精品久久久久影院优| 亚洲精品国产91| 日韩在线精品强乱中文字幕| 疯狂做受xxxx高潮欧美日本| 中日韩在线视频| 姝姝窝人体www聚色窝| 青草av.久久免费一区| 欧美多人爱爱视频网站| 蜜臀久久99精品久久久久久| 成人h动漫精品一区二区器材| 在线中文字幕不卡| 99久久国产综合精品五月天喷水| 福利片在线观看| 成人激情综合网站| 91系列在线观看| 神马久久久久久久| 在线观看日韩av电影| 久久激情视频久久| 国产jjizz一区二区三区视频| www.豆豆成人网.com| 欧美日韩一区三区四区| 日日摸日日碰夜夜爽av| 香蕉成人app免费看片| 亚洲国产精品国自产拍av| 久久本道综合色狠狠五月| www.天堂在线| 精品一区二区三区不卡| 国产精品久久久久7777婷婷| 久久久久久久久久免费视频| 中文字幕午夜精品一区二区三区 | 日本乱码高清不卡字幕| 国产精品久久久久7777| 亚洲男同gay网站| 中文字幕在线观看一区二区| 日本视频一区二区在线观看| 午夜视频www| 99在线精品一区二区三区| av色综合网| 99草在线视频| 精品一区免费av| 国产日韩换脸av一区在线观看| 一级一片免费看| 久久精品成人| 国产成人拍精品视频午夜网站| 国产手机在线视频| 99精品视频网| 78m国产成人精品视频| 影音先锋亚洲天堂| 中文高清一区| 欧美性在线视频| 国产精品免费精品一区| 亚洲承认在线| 97国产精品人人爽人人做| 日本天堂网在线观看| 影院欧美亚洲| 欧美有码在线观看视频| 91porny九色| 美女免费视频一区二区| 成人黄色短视频在线观看| 国产一区二区三区成人| 国产毛片一区二区| 国产 高清 精品 在线 a| 黄色福利在线观看| 91视频精品在这里| 日韩欧美国产二区| 国产乱色在线观看| 亚洲成人一二三| 无码精品国产一区二区三区免费| 神马久久资源| 7777精品久久久大香线蕉| 日日夜夜精品视频免费观看| 自拍偷拍亚洲| 亚洲а∨天堂久久精品9966| 在线免费观看黄色小视频| 国产精品欧美三级在线观看| 视频直播国产精品| 青青草成人免费| 日韩亚洲国产精品| 国产精品免费电影| av资源免费看| 久久综合九色综合97_久久久| 日韩欧美电影一区二区| 污污片在线免费视频| 欧美性69xxxx肥| 一区二区三区四区毛片| 成人偷拍自拍| 亚洲最新在线视频| 久久久99精品| 日日噜噜夜夜狠狠视频欧美人 | 久久人人爽人人爽人人片亚洲| 欧美日韩人妻精品一区二区三区| 在线一区视频| 91麻豆国产精品| 四虎精品在永久在线观看| 国产女主播在线一区二区| 中文字幕乱码免费| 伊人久久视频| 欧美大片日本大片免费观看| 欧美丰满老妇熟乱xxxxyyy| 激情久久综合| 国产日韩欧美视频在线| 视频在线观看你懂的| 亚洲日本欧美天堂| 欧美 国产 小说 另类| 日韩在线网址| 日韩在线视频线视频免费网站| 国产一级特黄aaa大片| 精品一区二区三区影院在线午夜| 麻豆av福利av久久av| 欧美寡妇性猛交xxx免费| 欧美系列亚洲系列| 91av在线免费| 精品成人免费| 99精品国产高清一区二区| 超碰国产在线| 欧美天天综合色影久久精品| 中文字幕视频观看| 亚洲综合激情在线| 国产精品一区二区三区久久久| 日漫免费在线观看网站| 亚洲一区二区三区三| 中文av字幕在线观看| 波多野结衣在线播放一区| 91po在线观看91精品国产性色 | 亚洲美女视频网| 日本特黄一级片| 国产91在线|亚洲| 一区二区三区四区免费观看| 欧美韩国日本| 中文字幕一区二区三区电影| 日韩在线视频不卡| 91在线观看高清| 奇米影视亚洲色图| 99亚洲乱人伦aⅴ精品| 久99久在线视频| av中文字幕免费| 亚洲精品一二三| 一起草最新网址| 午夜日韩在线| 成人高清在线观看| 亚洲wwwww| 日韩一级黄色片| 久久久久久久久久91| 从欧美一区二区三区| 成人免费在线网| 免费成人三级| 日本aⅴ大伊香蕉精品视频| 污污网站在线免费观看| 欧美日韩精品在线视频| 中国美女乱淫免费看视频| 国产日本精品| 欧美日韩系列| 六九午夜精品视频| 久久久久www| 亚洲精品喷潮一区二区三区| 亚洲综合图片区| av免费观看不卡| 亚洲欧美日韩视频二区| 欧日韩一区二区三区| 国产一区二区精品调教| 日韩网站免费观看高清| 国产人妻精品一区二区三区| 亚洲综合999| 中文字幕日韩三级片| 日韩成人一级大片| eeuss中文| 哺乳挤奶一区二区三区免费看| 97国产精品视频| 午夜一区在线观看| 欧美三级欧美一级| 老女人性淫交视频| 91小视频在线| 向日葵污视频在线观看| 影音先锋日韩在线| 精品欧美日韩| 国外成人福利视频| 欧美日韩高清在线观看| 午夜视频在线播放| 欧美日韩亚洲丝袜制服| 国产性xxxx| 91免费视频观看| 超碰人人草人人| 国产欧美日韩综合一区在线播放 | 色美美综合视频| 国产精品三区在线观看| av网站免费线看精品| 九九精品久久久| 亚洲电影在线| 这里只有精品66| 欧洲亚洲视频| 91成人免费在线观看| xx欧美视频| 欧美猛男性生活免费| 福利在线午夜| 亚洲精品久久久久中文字幕二区| 天天天天天天天干| 亚洲福利国产精品| 成人欧美一区二区三区黑人一 | 国产黄色大片免费看| 国产传媒一区在线| 国产一级特黄a大片免费| 在线免费观看欧美| 先锋影音男人资源| 国产精品欧美日韩一区| 国产另类第一区| 国产美女精品视频免费播放软件| 秋霞av国产精品一区| 大桥未久在线播放| 久久久精品免费| 在线日本视频| 亚洲人线精品午夜| 婷婷视频在线观看| 日韩欧美精品在线| 国产精品福利电影| 在线观看不卡一区| 91porny在线| 亚洲午夜免费视频| 欧美亚洲日本在线| 国产精品国产三级国产aⅴ无密码| 亚洲av网址在线| 成人av在线播放网址| 手机av在线网站| 蜜桃视频免费观看一区| 97公开免费视频| 日韩精品视频网| 国产男女无遮挡| 日韩视频一区| 成人性免费视频| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产精品h视频| 天天综合国产| 国产精品波多野结衣| 久久亚洲成人| 亚洲精品高清视频| 日韩在线理论| 一本一生久久a久久精品综合蜜 | 成人爱爱电影网址| 国产精品19p| 国产精品69久久久久水密桃| 欧美精品色视频| 国产成人免费视频| 成人啪啪18免费游戏链接| 丁香六月综合激情| 完美搭档在线观看| 91麻豆产精品久久久久久| 无遮挡aaaaa大片免费看| 91麻豆免费观看| 免费看黄色的视频| 中日韩免费视频中文字幕| jizz18女人高潮| 国产精品你懂的在线欣赏| 91导航在线观看| 中文字幕一区不卡| 欧美日韩在线国产| 亚洲va韩国va欧美va精品| 永久免费看片在线播放| 欧美性猛交丰臀xxxxx网站| 无码人妻av一区二区三区波多野| 欧美在线观看视频在线| 一级片免费观看视频| 3d成人h动漫网站入口| 亚洲第九十九页| 日韩精品中文在线观看| 黄色av免费在线看| 日韩在线观看av| 中文字幕有码在线观看| 久久人人97超碰精品888| 性欧美18~19sex高清播放| 国产精品第三页| 高清一区二区| 精品国产电影| 久久国产亚洲精品| 六月婷婷激情综合| 欧美亚洲三级| 久久精品国产99久久99久久久| 成人国产精品免费观看动漫| 久久久久久久毛片| 亚洲一区二区三区影院| 91视频久久久| 日韩女优视频免费观看| 青青草娱乐在线| 日韩在线精品视频| 国产夫妻在线播放| 国产精品免费看久久久香蕉| xxxx日韩| 色噜噜狠狠一区二区三区| 欧美成人有码| 男女视频一区二区三区| 风间由美性色一区二区三区| 蜜桃av免费看| 亚洲综合成人在线视频| 中文字幕资源网| 亚洲第一av网站| 在线看av的网址| 性欧美暴力猛交69hd| 外国成人毛片| 欧美另类视频在线| 韩国亚洲精品| 色免费在线视频| 久久综合五月天婷婷伊人| 朝桐光av在线| 欧美视频中文字幕| 亚洲欧美色视频| 欧美裸体男粗大视频在线观看 | 亚洲综合日韩中文字幕v在线| 日韩精品导航| 激情六月天婷婷| 精品亚洲成a人在线观看| 瑟瑟视频在线观看| 亚洲动漫第一页| av小说天堂网| 日韩中文在线视频| 欧洲精品一区二区三区| 精品国产一区二区三区四区精华 | 久青草国产97香蕉在线视频| 五月激情久久| 免费一区二区三区| 日韩午夜高潮| 午夜视频在线观看国产| 一区二区在线观看视频| 一区二区三区播放| 国产亚洲精品久久久优势| 竹内纱里奈兽皇系列在线观看| 成人区精品一区二区| 伊人久久大香线| 天堂中文av在线| 国产精品丝袜黑色高跟| 岛国av中文字幕| 国产丝袜一区二区三区免费视频| 丁香高清在线观看完整电影视频 | 欧美一二三视频| 加勒比久久高清| www.av毛片| www.欧美亚洲| 日韩精品久久久久久久| 亚洲第一天堂av| 超碰在线cao| 精品不卡一区二区三区| 亚洲美女色禁图| 亚洲少妇18p| 欧美日韩在线看| 青青青手机在线视频观看| 欧美在线视频在线播放完整版免费观看| 国产伦精品一区二区三区免费优势| 国产人成一区二区三区影院| 波多野结衣影院| 午夜国产精品一区| 香港三日本三级少妇66| 欧美在线中文字幕| 精品影片在线观看的网站| 国产精品人人妻人人爽人人牛| 国产亚洲制服色| 国产成人精品一区二区色戒| 中文字幕亚洲字幕| 欧美成人精品午夜一区二区| 日本福利视频网站| 99久久综合精品| 黄色片视频免费| yellow中文字幕久久| 亚洲国产高清在线观看| 成年人网站国产| 久久综合久久综合亚洲| 亚洲免费视频二区| 美日韩精品免费观看视频| 91精品入口| 国产成人精品视频ⅴa片软件竹菊| 国产欧美日韩一区二区三区在线观看| 亚洲熟妇无码久久精品| 欧美大片大片在线播放| 天天躁日日躁成人字幕aⅴ| 国产福利影院在线观看| 亚洲欧美日本在线| 天天摸天天干天天操| 国产精品久久久999| 欧美另类综合| 草草影院第一页| 69堂成人精品免费视频| rebdb初裸写真在线观看| 日本一区二区不卡高清更新| 国产乱码精品一区二区三区忘忧草 | 亚洲国产一区二区三区网站| 男人揉女人奶房视频60分| 国产精品乱码人人做人人爱| 粉嫩av一区二区夜夜嗨| 国产精品1234| 好吊日精品视频| 国产精品成人无码免费| 精品免费一区二区三区| 国产精品久久久久久久久久齐齐| www.日本三级| 国产精品免费视频网站|