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

記一次 .NET 某電商醫(yī)藥網(wǎng)站 CPU 爆高分析

開(kāi)發(fā) 后端
前些天有位朋友找到我,說(shuō)他們的網(wǎng)站會(huì)有CPU瞬高的情況,在網(wǎng)上找相關(guān)資料最終找到我這邊,想讓我?guī)兔Ψ治鱿抡厥拢肯襁@種CPU瞬高,比較好的方式就是用procdump自動(dòng)化的抓取,萬(wàn)不可手工去抓,接下來(lái)就上 windbg 分析吧。

一、背景

1. 講故事

準(zhǔn)備明年把.NET高級(jí)調(diào)試的訓(xùn)練營(yíng)的課程進(jìn)行重構(gòu),采用案例引導(dǎo)式,而CPU爆高類(lèi)有不少是程序員在寫(xiě)代碼的時(shí)候不注意時(shí)間復(fù)雜度,在數(shù)據(jù)量稍微大一點(diǎn)的情況直接幻化成了死循環(huán),時(shí)間復(fù)雜度這東西是學(xué)校的數(shù)據(jù)結(jié)構(gòu)課程,有心的朋友在寫(xiě)多層循環(huán)的時(shí)候腦子里面一定要過(guò)一遍,今天就給大家?guī)б黄祟?lèi)案例,也算是繼續(xù)豐富我的新課程體系。

前些天有位朋友找到我,說(shuō)他們的網(wǎng)站會(huì)有CPU瞬高的情況,在網(wǎng)上找相關(guān)資料最終找到我這邊,想讓我?guī)兔Ψ治鱿抡厥??像這種CPU瞬高,比較好的方式就是用procdump自動(dòng)化的抓取,萬(wàn)不可手工去抓,接下來(lái)就上 windbg 分析吧。

二、WinDbg分析

1. 為什么會(huì)CPU爆高

以終為始,先看看CPU是否真的高,可以用 !tp 和 !cpuid 命令觀察,這里稍微提一下,為什么要用 !cpuid 看看CPU的能力呢?這是因?yàn)槲以?jīng)分析過(guò)只有 2core 的CPU。尼瑪,只有2個(gè)core,還分析個(gè)毛線哈,干脆把機(jī)器關(guān)了,這樣CPU就不高了。。。自此以后我就留了一個(gè)心眼,輸出參考如下:

0:033> !tp
CPU utilization: 100%
Worker Thread: Total: 5 Running: 5 Idle: 0 MaxLimit: 32767 MinLimit: 4
Work Request in Queue: 11
    Unknown Function: 00007ffbfaa417d0  Context: 00000283733c3718
    Unknown Function: 00007ffbfaa417d0  Context: 0000027f26f50cb0
    Unknown Function: 00007ffbfaa417d0  Context: 0000028377199f58
    AsyncTimerCallbackCompletion TimerInfo@0000028371c46820
    AsyncTimerCallbackCompletion TimerInfo@0000028371d06800
    Unknown Function: 00007ffbfaa417d0  Context: 00000283756d3248
    Unknown Function: 00007ffbfaa417d0  Context: 0000027f26f63578
    Unknown Function: 00007ffbfaa417d0  Context: 00000283733d0160
    Unknown Function: 00007ffbfaa417d0  Context: 00000283756a72d8
    Unknown Function: 00007ffbfaa417d0  Context: 00000283771a6828
    Unknown Function: 00007ffbfaa417d0  Context: 000002837719d1f8
--------------------------------------
Number of Timers: 0
--------------------------------------
Completion Port Thread:Total: 3 Free: 2 MaxFree: 8 CurrentLimit: 2 MaxLimit: 1000 MinLimit: 4
0:033> !cpuid
CP  F/M/S  Manufacturer     MHz
 0  6,106,6  <unavailable>   2800
 1  6,106,6  <unavailable>   2800
 2  6,106,6  <unavailable>   2800
 3  6,106,6  <unavailable>   2800

從卦中可以看出當(dāng)前線程池隊(duì)列稍有積壓,5個(gè)托管線程全部被打滿(mǎn),并且當(dāng)前機(jī)器是4個(gè)核,看樣子是有4個(gè)線程在滿(mǎn)負(fù)荷跑呀。。。

2. 線程都在干什么

為了追蹤線程都在干什么?使用 ~*e !clrstack 觀察各個(gè)線程的調(diào)用棧,結(jié)合程序的瞬高特性,捕獲了一個(gè)相對(duì)來(lái)說(shuō)高度可疑的代碼,參考如下:

OS Thread Id: 0x2f00 (33)
        Child SP               IP Call Site
000000f2a42fd508 00007ffbfd72b0a7 System.String.Equals(System.String, System.String) [f:\dd\ndp\clr\src\BCL\system\string.cs @ 647]
000000f2a42fd510 00007ffba1715a0b xxx.StockAsyncDbTask+c__DisplayClass4_1.b__6(xxx.GoodsInfo)
000000f2a42fd540 00007ffba118c6ca System.Linq.Enumerable.FirstOrDefault[[System.__Canon, mscorlib]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Func`2<System.__Canon,Boolean>)
000000f2a42fd5b0 00007ffba1716008 xxx.StockAsyncDbTask+c__DisplayClass4_0.b__2(xxx.GoodsInfo)
000000f2a42fd670 00007ffbfd720505 System.Collections.Generic.List`1[[System.__Canon, mscorlib]].ForEach(System.Action`1<System.__Canon>) [f:\dd\ndp\clr\src\BCL\system\collections\generic\list.cs @ 553]
000000f2a42fd6c0 00007ffba1349e7e xxx.SaveStockToDb()
000000f2a42fd760 00007ffba13487ed xxx.DoWork()
000000f2a42fd7b0 00007ffba1348631 xxx.QuartzScheduler.QuartzJob.Quartz.IJob.Execute(Quartz.IJobExecutionContext)
000000f2a42fd8b0 00007ffba0f8ca12 Quartz.Core.JobRunShell+d__9.MoveNext()
000000f2a42fdb80 00007ffba0f83150 System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start[[Quartz.Core.JobRunShell+d__9, Quartz]](d__9 ByRef) [f:\dd\ndp\clr\src\BCL\system\runtime\compilerservices\AsyncMethodBuilder.cs @ 322]
000000f2a42fdc30 00007ffba0f8309d Quartz.Core.JobRunShell.Run(System.Threading.CancellationToken)
000000f2a42fdd30 00007ffba0f829f4 Quartz.Core.QuartzSchedulerThread+c__DisplayClass28_0.b__0()
000000f2a42fdd60 00007ffbfd7abe4e System.Threading.Tasks.Task`1[[System.__Canon, mscorlib]].InnerInvoke() [f:\dd\ndp\clr\src\BCL\system\threading\Tasks\Future.cs @ 680]
000000f2a42fddb0 00007ffbfd7aaf27 System.Threading.Tasks.Task.Execute() [f:\dd\ndp\clr\src\BCL\system\threading\Tasks\Task.cs @ 2498]
000000f2a42fddf0 00007ffbfd73df12 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) [f:\dd\ndp\clr\src\BCL\system\threading\executioncontext.cs @ 980]
000000f2a42fdec0 00007ffbfd73dd95 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) [f:\dd\ndp\clr\src\BCL\system\threading\executioncontext.cs @ 928]
000000f2a42fdef0 00007ffbfd7ab1e1 System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) [f:\dd\ndp\clr\src\BCL\system\threading\Tasks\Task.cs @ 2827]
000000f2a42fdfa0 00007ffbfd7aa8c1 System.Threading.Tasks.Task.ExecuteEntry(Boolean) [f:\dd\ndp\clr\src\BCL\system\threading\Tasks\Task.cs @ 2767]
000000f2a42fdfe0 00007ffbfd708e46 System.Threading.ThreadPoolWorkQueue.Dispatch() [f:\dd\ndp\clr\src\BCL\system\threading\threadpool.cs @ 820]

根據(jù)卦中的顯示找到了問(wèn)題方法,為了保護(hù)客戶(hù)隱私,這里稍微會(huì)模糊一下,主要是看下復(fù)雜度的骨架結(jié)構(gòu)。

圖片圖片

從卦象看里面至少包含了3層for循環(huán),所以時(shí)間復(fù)雜度是 O(N3) 次方,學(xué)過(guò)數(shù)據(jù)結(jié)構(gòu)和算法的朋友應(yīng)該知道,這個(gè)復(fù)雜度不得了,要逆天了。

3. O(N3) 是禍根嗎?

要想知道 O(N3) 是不是禍根,得要看有沒(méi)有給它不停的施肥翻土,可以找找相關(guān)的集合,使用 !dso 命令觀察即可。

0:033> !dso
OS Thread Id: 0x2f00 (33)
RSP/REG          Object           Name
rbx              0000028227b4be70 xxx.GoodsInfo
000000F2A42FD520 0000028029c02038 System.Collections.Generic.List`1[[xxx.GoodsInfo, xxx.Model]]
...
000000F2A42FD708 0000027f277d3de8 System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[xxx_DataGrab, xxx.Data]]

0:033> !do 0000027f277d3de8
Name:        System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[xxx_DataGrab,xxx.Data]]
MethodTable: 00007ffba12b82f8
EEClass:     00007ffbfd345c10
Size:        80(0x50) bytes
File:        C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
Fields:
              MT    Field   Offset                 Type VT     Attr            Value Name
00007ffbfd1d8538  4001887        8       System.Int32[]  0 instance 0000027f27d51328 buckets
00007ffbfe422618  4001888       10 ...non, mscorlib]][]  0 instance 0000027f27d51350 entries
00007ffbfd1d85a0  4001889       38         System.Int32  1 instance                1 count
00007ffbfd1d85a0  400188a       3c         System.Int32  1 instance                1 version
00007ffbfd1d85a0  400188b       40         System.Int32  1 instance               -1 freeList
00007ffbfd1d85a0  400188c       44         System.Int32  1 instance                0 freeCount
00007ffbfd1c7790  400188d       18 ...Canon, mscorlib]]  0 instance 00000282274c1978 comparer
00007ffbfd1c57c0  400188e       20 ...Canon, mscorlib]]  0 instance 0000027f27cfc630 keys
00007ffbfd1eef60  400188f       28 ...Canon, mscorlib]]  0 instance 0000000000000000 values
00007ffbfd1d5dd8  4001890       30        System.Object  0 instance 0000000000000000 _syncRoot

0:033> !do 0000028029c02038
Name:        System.Collections.Generic.List`1[[xxx, xxx.Model]]
MethodTable: 00007ffba126e830
EEClass:     00007ffbfd362af8
Size:        40(0x28) bytes
File:        C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
Fields:
              MT    Field   Offset                 Type VT     Attr            Value Name
00007ffbfd1ee250  40018a0        8     System.__Canon[]  0 instance 00000283278195b0 _items
00007ffbfd1d85a0  40018a1       18         System.Int32  1 instance            21863 _size
00007ffbfd1d85a0  40018a2       1c         System.Int32  1 instance                0 _version
00007ffbfd1d5dd8  40018a3       10        System.Object  0 instance 0000000000000000 _syncRoot
00007ffbfd1ee250  40018a4        8     System.__Canon[]  0   static  <no information>

從卦中可以看到第一層的dictionary只有1條記錄,第二層的 List 有高達(dá) 2.1w 數(shù)據(jù),第三層的 dbStocks 在線程棧沒(méi)有找到,我也懶得找到了,起碼發(fā)現(xiàn)了第二層的 list 確實(shí)比較大,加上數(shù)據(jù)的佐證,基本上就找到了問(wèn)題所在,也滿(mǎn)足程序的瞬高的現(xiàn)象。

4. 解決方案

知道了復(fù)雜度高,優(yōu)化的方向就是降低時(shí)間復(fù)雜度,將 O(N3) 降低到 O(N),方法就是在深層循環(huán)之前提前用 Dictionary 或者 HashSet 來(lái)預(yù)存數(shù)據(jù),將后面的 for 循環(huán)變成字段的key查找,而key查找則是 O(1)。

為了讓大家有個(gè)宏觀概念,我讓 chatgpt 給我生成一個(gè) O(N2) 到 O(N) 的例子,參考代碼如下:

public class GoodsInfo
{
    public int Spid { get; set; }
    // 其他屬性...
}
 
public class Stock
{
    public int Spid { get; set; }
    // 其他屬性...
}
 
public class Optimizer
{
    // 原始O(N^2)復(fù)雜度的查找方法
    public List<GoodsInfo> FindMatchingGoodsInfoO_N2(List<GoodsInfo> goodsInfos, List<Stock> stocks, int targetSpid)
    {
        List<GoodsInfo> result = new List<GoodsInfo>();
        foreach (var goodsInfo in goodsInfos)
        {
            foreach (var stock in stocks)
            {
                if (goodsInfo.Spid == stock.Spid && stock.Spid == targetSpid)
                {
                    result.Add(goodsInfo);
                }
            }
        }
        return result;
    }
 
    // 優(yōu)化后的O(N)復(fù)雜度的查找方法
    public List<GoodsInfo> FindMatchingGoodsInfoO_N(List<GoodsInfo> goodsInfos, List<Stock> stocks, int targetSpid)
    {
        HashSet<int> stockSpids = new HashSet<int>(stocks.Select(s => s.Spid));
        List<GoodsInfo> result = new List<GoodsInfo>();
 
        foreach (var goodsInfo in goodsInfos)
        {
            if (stockSpids.Contains(goodsInfo.Spid) && goodsInfo.Spid == targetSpid)
            {
                result.Add(goodsInfo);
            }
        }
 
        return result;
    }
}

可以看到 chatgpt 很聰明,用 HashSet 來(lái)化煞。

三:總結(jié)

說(shuō)實(shí)話(huà)像這種生產(chǎn)事故,我以前在公司的項(xiàng)目中也會(huì)偶發(fā)的遇到,都是趕時(shí)間,加班加點(diǎn)寫(xiě)出來(lái)的代碼,只想把功能寫(xiě)出來(lái)早點(diǎn)下班,復(fù)雜度高?后面再說(shuō)吧。。。代碼寫(xiě)的太好,容易被老板優(yōu)化。

責(zé)任編輯:武曉燕 來(lái)源: 一線碼農(nóng)聊技術(shù)
相關(guān)推薦

2021-10-27 07:30:32

.NETCPU論壇

2024-08-08 11:21:01

2022-10-24 07:48:37

.NETCPUGC

2021-05-17 07:43:06

Web站 CPU.NET

2023-05-12 17:42:22

CPUMES系統(tǒng)

2024-03-15 15:15:53

.NETCPU系統(tǒng)

2021-04-21 07:38:41

CPU游戲站程序

2023-07-31 22:29:20

CPU.NETAPI

2022-02-23 10:12:58

CPUWeb.NET

2023-11-01 10:46:12

.NET線程同步

2023-03-26 20:24:50

ERP網(wǎng)站系統(tǒng)

2021-02-25 10:00:19

企業(yè)安全互聯(lián)網(wǎng)云平臺(tái)安全

2021-10-09 10:24:08

NET爬蟲(chóng)內(nèi)存

2023-06-26 00:12:46

2024-12-27 13:31:18

.NETdump調(diào)試

2024-03-28 12:56:36

2023-04-06 10:52:18

2023-07-06 10:11:38

.NET模式dump

2024-05-20 09:39:02

.NETurl線程池

2022-10-13 18:40:05

.NETOA后端
點(diǎn)贊
收藏

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

a级影片在线| 亚洲一区二区三区高清视频| 窝窝社区一区二区| 在线免费亚洲电影| 中国人体摄影一区二区三区| www.国产黄色| 老**午夜毛片一区二区三区| xxav国产精品美女主播| 成年人小视频在线观看| 手机看片久久| 一区二区三区在线视频免费| 欧美一区二区三区精美影视| 国产免费不卡av| 新狼窝色av性久久久久久| 久久夜精品va视频免费观看| 素人fc2av清纯18岁| 精品网站999| 色素色在线综合| 国产爆乳无码一区二区麻豆| 91在线网址| av在线不卡电影| 成人免费在线视频网址| 国产精品久久久久久久久久久久久久久久久 | 国产日本精品| 一区二区中文字幕| 一卡二卡三卡四卡五卡| 亚洲一二三四| 亚洲色图另类专区| 久久精品日产第一区二区三区 | 日本中文字幕久久看| 国产高清视频免费在线观看| 99久久香蕉| 在线观看国产一区二区| 日本a级片在线播放| 久久精品色图| 国产精品亚洲视频| 国产精品99久久久久久www| 丝袜 亚洲 另类 欧美 重口| 久久99国产成人小视频| 欧美一级生活片| 久久精品国产精品亚洲色婷婷| gogo在线观看| 久久精品一区二区三区不卡| 国产福利久久精品| 怡春院在线视频| 亚洲视频二区| 色婷婷成人综合| 欧美一区二区免费在线观看| 免费精品一区二区三区在线观看| 色视频成人在线观看免| 亚洲国产成人精品无码区99| av免费在线观看网址| 国产日韩欧美在线一区| 99久久99久久| 夜夜躁狠狠躁日日躁av| 日韩精品每日更新| 97精品国产97久久久久久春色| 国产亚洲精品久久久久久豆腐| 色婷婷综合久久久久久| 亚洲成人精品视频| 中国老熟女重囗味hdxx| 国产精品亲子伦av一区二区三区| 欧美日韩在线视频首页| 男女啪啪免费视频网站| a级毛片免费观看在线| 中文字幕中文字幕一区二区| 亚洲国产精品综合| 成人综合影院| 国产夜色精品一区二区av| 精品国产一区二区三区日日嗨 | 在线免费看h| 亚洲成av人片在线| 欧美久久在线观看| 欧美人与性动交α欧美精品图片| 亚洲美女一区二区三区| 国产又粗又爽又黄的视频| 视频一区二区三区不卡| 中文字幕一区二区三区在线播放| 亚洲精品tv久久久久久久久| 国产福利免费在线观看| 国产亚洲女人久久久久毛片| 欧美久久久久久| 国精产品一品二品国精品69xx | 久久久老熟女一区二区三区91| 99这里只有精品视频| 欧美精品一区二区三区在线| 中文字幕一区二区三区乱码不卡| 欧美电影免费网站| 国产午夜精品麻豆| 久久久久久九九九九九| 精品一区av| 日韩中文娱乐网| 天天天天天天天天操| 国内自拍视频一区二区三区| 97精品视频在线| 久草手机在线观看| 亚洲精品人人| 国产成人极品视频| 在线免费看av片| 国产不卡视频一区二区三区| 91原创国产| 欧美亚洲日本| 亚洲国产精品99久久久久久久久| 秋霞在线一区二区| 黄页网站大全在线免费观看| 色综合天天做天天爱| 一区二区三区 日韩| 99精品女人在线观看免费视频| 欧美成人a在线| 美女100%无挡| 亚洲乱码精品| 欧美有码在线观看视频| 91av久久久| 成人aaaa免费全部观看| 日韩免费av电影| 黄色成人在线观看| 欧美视频在线视频| 天天综合成人网| 欧美男人操女人视频| 日韩亚洲欧美成人| 国产一级精品视频| 日韩一区欧美二区| 国产精品白嫩美女在线观看| 亚洲av无码乱码国产精品久久| 久久亚洲精精品中文字幕早川悠里 | 日韩av新片网| 免费污视频在线一区| 精品国产免费视频| 91香蕉视频污在线观看| 国产欧美日韩综合一区在线播放 | 久久超碰亚洲| 黄视频在线播放| 亚洲男人电影天堂| 国产白丝袜美女久久久久| 四虎国产精品成人免费影视| 亚洲男人天堂古典| 国产在线观看免费av| 久久狠狠亚洲综合| 久久久亚洲综合网站| 少女频道在线观看免费播放电视剧| 91久久精品一区二区| fc2成人免费视频| 久久久人成影片免费观看| 欧美制服第一页| 亚洲精品久久久久久久久久 | 日韩久久久久久| 91无套直看片红桃在线观看| 国产精品夜夜夜| 国产亚洲精品久久飘花| 午夜小视频福利在线观看| 欧美日韩亚洲综合一区二区三区| 鲁大师私人影院在线观看| 欧美在线首页| 91九色蝌蚪国产| av影片免费在线观看| 91久久人澡人人添人人爽欧美| 中国av免费看| 亚洲精品婷婷| 成人在线免费观看一区| www视频在线看| 91精品国产一区二区三区| 久久精品三级视频| 日本不卡在线视频| 日韩尤物视频| 丝袜老师在线| 亚洲精品电影久久久| 日本一级一片免费视频| 91在线丨porny丨国产| 久久久久久久久久网| 国产欧美一区二区三区米奇| 久久久久久久久久久av| 日本激情视频网站| 午夜av区久久| 亚洲一区二区三区综合| 99国产精品| 久久精品国产第一区二区三区最新章节 | 三级无遮挡在线观看| 精品人伦一区二区三区蜜桃免费| 日韩无码精品一区二区| 亚洲日产国产精品| 久久精品国产一区二区三区日韩 | 日韩高清电影免费| 国产91色在线播放| 99re在线视频| 欧美一区二区三区免费| 免费一级特黄特色大片| 99视频精品全部免费在线| 国产97在线 | 亚洲| 欧美一区 二区| 国产999精品久久久影片官网| 国产高清av在线| 欧美精品xxxxbbbb| 国产亚洲欧美久久久久| 91蜜桃婷婷狠狠久久综合9色| 男人天堂网视频| 第一社区sis001原创亚洲| 成人激情视频在线观看| 福利在线导航136| 亚洲免费视频一区二区| 91国产精品一区| 亚洲综合成人在线视频| 久久丫精品国产亚洲av不卡| 日韩不卡免费视频| 妞干网这里只有精品| 日韩欧美中文字幕一区二区三区| 久久久久成人精品| 三级黄视频在线观看| 制服丝袜av成人在线看| 久久精品人妻一区二区三区| 国产亚洲自拍一区| 岛国大片在线免费观看| 久久久精品午夜少妇| 综合视频免费看| 日韩理论电影中文字幕| 国产精品一区二区电影| 国产深夜视频在线观看| 亚洲最大中文字幕| 色wwwwww| 欧美乱妇15p| www亚洲视频| 一区二区三区在线不卡| 亚洲国产日韩一区无码精品久久久| 国产精品99久久久久久有的能看| 成人免费观看视频在线观看| 亚洲欧美综合国产精品一区| 日韩精品久久久免费观看| 亚洲一区二区三区日本久久九| 欧美在线激情网| 黄色网页网址在线免费| 国产亚洲精品va在线观看| 日本加勒比一区| 日韩一区二区免费高清| 蜜臀99久久精品久久久久小说| 一区二区三区在线影院| 手机看片国产日韩| 99久久99久久免费精品蜜臀| 伦伦影院午夜理论片| 美女国产一区二区| 久久久精品在线视频| 在线不卡亚洲| 黄黄视频在线观看| 成人一级毛片| 日本一区二区三不卡| 神马久久影院| 精品国产乱码久久久久软件 | 成人在线亚洲| 精品一区二区三区视频日产| 中文字幕日韩在线| 亚洲综合成人婷婷小说| 国产a亚洲精品| 国产精品久久久久999| 92国产精品| 国语自产精品视频在线看一大j8 | 一区精品视频| 欧美日韩播放| 美女被啪啪一区二区| 日韩精品丝袜美腿| 精品一卡二卡三卡四卡日本乱码| 国产色噜噜噜91在线精品| 97自拍视频| 欧美电影在线观看一区| 91情侣偷在线精品国产| 电影91久久久| 91久久久久久| 蜜桃在线一区| 成人免费在线看片| 一区中文字幕| 国产麻豆乱码精品一区二区三区 | 午夜精品福利在线| 国产污视频在线观看| 亚洲一区二区三区影院| 九九久久免费视频| 一区av在线播放| 黄色小视频在线免费看| 午夜久久久影院| 日韩一区二区视频在线| 欧美特级www| 日日骚av一区二区| 一本大道久久精品懂色aⅴ| 亚洲第一网站在线观看| 欧美探花视频资源| 国产毛片一区二区三区va在线| 欧美猛男男办公室激情| 国产又粗又猛又黄又爽| 日韩精品一区二区三区视频播放| 国产 日韩 欧美 精品| 国产视频丨精品|在线观看| 黄色在线小视频| 久久五月情影视| 欧美韩日亚洲| 欧美野外猛男的大粗鳮| 国产高清不卡| 国产欧美日韩精品专区| 国产一区二区三区免费观看在线| 国产高清精品一区二区| 亚洲影院天堂中文av色| 亚洲精品一区二区三区四区五区| 91精品国产福利在线观看麻豆| 国产成人亚洲综合无码| 日韩高清欧美| 一区二区视频在线播放| 四季av一区二区三区免费观看| 伊人狠狠色丁香综合尤物| 一本精品一区二区三区| 日韩精品在线中文字幕| 一本久久综合| 国产精品自在自线| 91亚洲精品一区二区乱码| a天堂中文字幕| 亚洲黄色录像片| 人人草在线观看| 在线91免费看| 视频国产在线观看| 久久视频免费观看| 中文字幕在线视频网站| 亚洲一区中文字幕| 妖精一区二区三区精品视频| 可以免费看的黄色网址| 免费日韩视频| 中文字幕无码毛片免费看| 国产午夜精品一区二区三区嫩草| 国产一区二区精彩视频| 色老头久久综合| 成人免费公开视频| 按摩亚洲人久久| 欧美大电影免费观看| 91在线视频成人| 四季av在线一区二区三区| 国产超级av在线| 国产不卡高清在线观看视频| 黄色国产在线播放| 动漫精品一区二区| 国产jzjzjz丝袜老师水多| 一个色综合导航| 一区二区乱码| 国产福利一区二区三区在线观看| 91日韩视频| 无码内射中文字幕岛国片| 成人禁用看黄a在线| 天天看片中文字幕| 777午夜精品视频在线播放| 国产视频在线看| 国产91精品久久久久| 亚洲伊人影院| 人人妻人人澡人人爽精品欧美一区| 亚洲欧美成人| 怡红院一区二区| 自拍偷自拍亚洲精品播放| 蜜臀99久久精品久久久久小说 | 久久77777| 国产精品扒开腿做爽爽爽视频 | 亚洲mv大片欧洲mv大片精品| 久久久久久久亚洲| 亚洲国产成人久久| 色是在线视频| 国产综合精品一区二区三区| 国产一区清纯| 国产精久久久久| 亚洲伊人伊色伊影伊综合网| 国产人妖一区二区三区| 久久精品国产69国产精品亚洲| 黑人一区二区三区| 亚洲美女搞黄| 精品在线一区二区| 国产成人av免费在线观看| 91精品免费在线观看| av网址在线| 97免费高清电视剧观看| 欧美精品一区二区三区久久久竹菊| 国产精品igao网网址不卡| 亚洲人成亚洲人成在线观看图片| 国产剧情久久久| 欧美成年人视频| 日本精品一区二区三区在线观看视频| 一级一片免费播放| 国产精品香蕉一区二区三区| 精品少妇一二三区| 日韩风俗一区 二区| 国产精品伦理| 久久久久久亚洲精品不卡4k岛国| av不卡在线看| 精品黑人一区二区三区观看时间| 精品久久在线播放| 日本一区视频| 国产精品免费一区二区三区都可以| 久久伦理在线| 亚洲熟女乱综合一区二区| 无吗不卡中文字幕| 久久米奇亚洲| 成人免费淫片视频软件| 精品动漫3d一区二区三区免费版| bl动漫在线观看| 色94色欧美sute亚洲13| 日韩黄色影院| 国产精品欧美久久| 日韩综合在线视频| 日本黄色片免费观看| 亚洲精品999| 国产精品黄色片| 欧美国产综合在线|