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

記一次 .NET游戲站程序的 CPU 爆高分析

商務辦公
現在的碼農都精怪精怪的,基本不會傻傻的寫出個死循環,絕大部分都是遇到某種 資源密集型 或 計算密集型 場景下導致非托管的 GC 出了問題。

 [[394550]]

一:背景

1. 講故事

上個月有個老朋友找到我,說他的站點晚高峰 CPU 會突然爆高,發了兩份 dump 文件過來,如下圖:

又是經典的 CPU 爆高問題,到目前為止,對這種我還是有一些經驗可循的。

  • 抓 2-3 個 dump

第一個:有利于算兩份 dump 中的線程時間差,從而推算最耗時線程。

第二個:有時候你抓的dump剛好線程都處理完了,cpu 還未真實回落,所以分析這種dump意義不大,我是吃了不少虧??????。

  • 優先推測是否為 GC 搗鬼

現在的碼農都精怪精怪的,基本不會傻傻的寫出個死循環,絕大部分都是遇到某種 資源密集型 或 計算密集型 場景下導致非托管的 GC 出了問題。

好了,有了這個先入為主的思路,接下來就可以用 windbg 去占卜了。

二:windbg 分析

1. GC 搗鬼分析

GC 搗鬼的本質是 GC 出現了回收壓力,尤其是對 大對象堆 的分配和釋放,大家應該知道 大對象堆 采用的是鏈式管理法,不到萬不得已 GC 都不敢回收它,所以在它上面的分配和釋放都是一種 CPU密集型 操作,不信你可以去 StackOverflow 上搜搜 LOH 和 HighCPU 的關聯關系??????。

2. 使用 x 命令搜索

在 windbg 中有一個快捷命令 x ,可用于在非托管堆上檢索指定關鍵詞,檢索之前先看看這個 dump 是什么 Framework 版本,決定用什么關鍵詞。

  1. 0:050> lmv 
  2. start    end        module name 
  3. 00b80000 00b88000   w3wp       (pdb symbols)          c:\mysymbols\w3wp.pdb\0CED8B2D5CB84AEB91307A0CE6BF528A1\w3wp.pdb 
  4.     Loaded symbol image file: w3wp.exe 
  5.     Image path: C:\Windows\SysWOW64\inetsrv\w3wp.exe 
  6.     Image name: w3wp.exe 
  7. 71510000 71cc0000   clr        (pdb symbols)          c:\mysymbols\clr.pdb\9B2B2A02EC2D43899F87AC20F11B82DF2\clr.pdb 
  8.     Loaded symbol image file: clr.dll 
  9.     Image path: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll 
  10.     Image name: clr.dll 
  11.     Browse all global symbols  functions  data 
  12.     Timestamp:        Thu Sep  3 03:30:58 2020 (5F4FF2F2) 
  13.     CheckSum:         007AC92B 
  14.     ImageSize:        007B0000 
  15.     File version:     4.8.4261.0 
  16.     Product version:  4.0.30319.0 

從 File version 上可以看出當前是基于 Net Framework 4.8 的,好了,用 x clr!SVR::gc_heap::trigger* 看看有沒有觸發 gc 的操作。

  1. 0:050> x clr!SVR::gc_heap::trigger
  2. 71930401          clr!SVR::gc_heap::trigger_ephemeral_gc (protected: int __thiscall SVR::gc_heap::trigger_ephemeral_gc(enum gc_reason)) 
  3. 71665cf9          clr!SVR::gc_heap::trigger_gc_for_alloc (protected: void __thiscall SVR::gc_heap::trigger_gc_for_alloc(int,enum gc_reason,struct SVR::GCDebugSpinLock *,bool,enum SVR::msl_take_state)) 
  4. 71930a08          clr!SVR::gc_heap::trigger_full_compact_gc (protected: int __thiscall SVR::gc_heap::trigger_full_compact_gc(enum gc_reason,enum oom_reason *,bool)) 

從輸出信息看,gc 果然在高速運轉,開心哈,接下來看一下是哪一個線程觸發了gc,可以用 !eestack 把所有線程的托管和非托管堆棧打出來。

從圖中可以看到當前 50 號線程的 GetUserLoginGameMapIds() 方法進行的大對象分配 try_allocate_more_space 觸發了 clr!SVR::gc_heap::trigger_gc_for_alloc GC回收操作,最后 GC 通過 clr!SVR::GCHeap::GarbageCollectGeneration 進行回收,既然在回收,必然有很多線程正在卡死。

接下來再看看有幾個線程正在共同努力調用 GetUserLoginGameMapIds() 方法。

到這里基本就能確定是 gc 搗的鬼。接下來的興趣點就是 GetUserLoginGameMapIds() 到底在干嘛?

3. 分析 GetUserLoginGameMapIds() 方法

接下來把方法的源碼導出來,使用 !name2ee 找到其所屬 module,然后通過 !savemodule 導出該 module 的源碼。

  1. 0:050> !name2ee *!xxx.GetUserLoginGameMapIds 
  2. Module:      1c870580 
  3. Assembly:    xxx.dll 
  4. Token:       0600000b 
  5. MethodDesc:  1c877504 
  6. Name:        xxx.GetUserLoginGameMapIds(xxx.GetUserLoginGameMapIdsDomainInput) 
  7. JITTED Code Address: 1d5a2030 
  8. 0:050> !savemodule  1c870580 E:\dumps\6.dll 
  9. 3 sections in file 
  10. section 0 - VA=2000, VASize=112b8, FileAddr=200, FileSize=11400 
  11. section 1 - VA=14000, VASize=3c8, FileAddr=11600, FileSize=400 
  12. section 2 - VA=16000, VASize=c, FileAddr=11a00, FileSize=200 

打開導出的 6.dll,為了最大保護隱私,我就把字段名隱藏一下, GetUserLoginGameMapIds() 大體邏輯如下。

  1. public GetUserLoginGameMapIdsDomainOutput GetUserLoginGameMapIds(GetUserLoginGameMapIdsDomainInput input) 
  2.  List<int> xxxQueryable = this._xxxRepository.Getxxx(); 
  3.  List<UserLoginGameEntity> list = this._userLoginGameRepository.Where((UserLoginGameEntity u) => u.xxx == input.xxx, null"").ToList<UserLoginGameEntity>(); 
  4.  List<int> userLoginGameMapIds = (from u in list select u.xxx).ToList<int>(); 
  5.  IEnumerable<GetUserLoginGameMapIdsDomainOutput.GetUserLoginGameMapIdsDataDomainOutput> source = (from mc in (from mc in this._mapCategoryRepository.AsQueryable().ToList<MapCategoryEntity>() 
  6.  where userLoginGameMapIds.Any((int mid) => mid == mc.xxx) && mapIdsQueryable.Any((int xxx) => xxx == mc.xxx) 
  7.  select mc).ToList<MapCategoryEntity>() 
  8.  join u in list on mc.xxx equals u.xxx 
  9.  select new GetUserLoginGameMapIdsDomainOutput.GetUserLoginGameMapIdsDataDomainOutput 
  10.  { 
  11.   xxx = mc.xxx, 
  12.   xxx = ((u != null) ? new DateTime?(u.xxx) : null).GetValueOrDefault(DateTime.Now) 
  13.  } into d 
  14.  group d by d.MapId).Select(delegate(IGrouping<int, GetUserLoginGameMapIdsDomainOutput.GetUserLoginGameMapIdsDataDomainOutput> g) 
  15.  { 
  16.   GetUserLoginGameMapIdsDomainOutput.GetUserLoginGameMapIdsDataDomainOutput getUserLoginGameMapIdsDataDomainOutput = new GetUserLoginGameMapIdsDomainOutput.GetUserLoginGameMapIdsDataDomainOutput(); 
  17.   getUserLoginGameMapIdsDataDomainOutput.xxx = g.Key
  18.   getUserLoginGameMapIdsDataDomainOutput.xxx = g.Max((GetUserLoginGameMapIdsDomainOutput.GetUserLoginGameMapIdsDataDomainOutput v) => v.xxxx); 
  19.   return getUserLoginGameMapIdsDataDomainOutput; 
  20.  }); 
  21.  return new GetUserLoginGameMapIdsDomainOutput 
  22.  { 
  23.   Data = source.ToList<GetUserLoginGameMapIdsDomainOutput.GetUserLoginGameMapIdsDataDomainOutput>() 
  24.  }; 

看的出來,這是一段EF讀取DB的復雜寫法,朋友說這段代碼涉及到了多張表的關聯操作,算是一個 資源密集型 的方法。

4. 到底持有什么大對象?

方法邏輯看完了,接下來看下 GetUserLoginGameMapIds() 方法到底分配了什么大對象觸發了GC,可以探究下 50 線程的調用棧,使用 !clrstack -a 調出所有的 參數 + 局部 變量。

  1. 0:050> !clrstack -a 
  2. OS Thread Id: 0x11a0 (50) 
  3. Child SP       IP Call Site 
  4. 2501d350 7743c0bc [HelperMethodFrame: 2501d350]  
  5. 2501d3dc 704fbab5 System.Collections.Generic.List`1[[System.__Canon, mscorlib]].set_Capacity(Int32) 
  6.     PARAMETERS: 
  7.         this (<CLR reg>) = 0x08053f6c 
  8.         value = <no data> 
  9.     LOCALS: 
  10.         <no data> 
  11.  
  12. 2501d3ec 704fba62 System.Collections.Generic.List`1[[System.__Canon, mscorlib]].EnsureCapacity(Int32) 
  13.     PARAMETERS: 
  14.         this = <no data> 
  15.         min = <no data> 
  16.     LOCALS: 
  17.         <no data> 
  18.  
  19. 2501d3f8 70516799 System.Collections.Generic.List`1[[System.__Canon, mscorlib]].Add(System.__Canon) 
  20.     PARAMETERS: 
  21.         this (<CLR reg>) = 0x08053f6c 
  22.         item (<CLR reg>) = 0x2d7b07bc 
  23.     LOCALS: 
  24.         <no data> 

從調用棧上看,由于 EF 的讀取邏輯需要向 List 中添加一條記錄剛好觸發了List的擴容機制,就是因為這個擴容導致了GC大對象分配。

那怎么看呢? 很簡單,先把 this () = 0x08053f6c 中地址拿出來do一下 !do 0x08053f6c 調出 List。

  1. 0:050> !do 0x08053f6c 
  2. Name:        System.Collections.Generic.List`1[[xxx.MapCategoryEntity, xxx.Entities]] 
  3. MethodTable: 1e81eed0 
  4. EEClass:     70219c7c 
  5. Size:        24(0x18) bytes 
  6. File:        C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll 
  7. Fields: 
  8.       MT    Field   Offset                 Type VT     Attr    Value Name 
  9. 701546bc  40018a0        4     System.__Canon[]  0 instance 168792c0 _items 
  10. 701142a8  40018a1        c         System.Int32  1 instance    32768 _size 
  11. 701142a8  40018a2       10         System.Int32  1 instance    32768 _version 
  12. 70112734  40018a3        8        System.Object  0 instance 00000000 _syncRoot 
  13. 701546bc  40018a4        4     System.__Canon[]  0   static  <no information> 

上面的 _size = 32768 看到了嗎?剛好是 2的15次方,由于再次新增必須要擴容,List 在底層需分配一個 System.__Canon[65536] 的數組來存儲老內容,這個數組肯定大于 85000byte 這個大對象的界定值啦。

如果有興趣,你可以看下 List 的擴容機制。

  1. // System.Collections.Generic.List<T> 
  2. private void EnsureCapacity(int min
  3.  if (_items.Length < min
  4.  { 
  5.   int num = (_items.Length == 0) ? 4 : (_items.Length * 2); 
  6.   if ((uint)num > 2146435071u) 
  7.   { 
  8.    num = 2146435071; 
  9.   } 
  10.   if (num < min
  11.   { 
  12.    num = min
  13.   } 
  14.   Capacity = num; 
  15.  } 
  16.  
  17. public int Capacity 
  18.  
  19.  get 
  20.  { 
  21.   return _items.Length; 
  22.  } 
  23.  set 
  24.  { 
  25.   if (value < _size) 
  26.   { 
  27.    ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.value, ExceptionResource.ArgumentOutOfRange_SmallCapacity); 
  28.   } 
  29.   if (value == _items.Length) 
  30.   { 
  31.    return
  32.   } 
  33.   if (value > 0) 
  34.   { 
  35.    T[] array = new T[value];   //這里申請了一個 int[65536] 大小的數組 
  36.    if (_size > 0) 
  37.    { 
  38.     Array.Copy(_items, 0, array, 0, _size); 
  39.    } 
  40.    _items = array; 
  41.   } 
  42.   else 
  43.   { 
  44.    _items = _emptyArray; 
  45.   } 
  46.  } 

三:總結

知道了前因后果之后,大概提三點優化建議。

優化 GetUserLoginGameMapIds() 方法中的邏輯,這是最好的辦法。

從 dump 上看也就 4核4G 的小機器,提升下機器配置,或許有點用。

  1. 0:017> !cpuid 
  2. CP  F/M/S  Manufacturer     MHz 
  3.  0  6,63,2  GenuineIntel    2295 
  4.  1  6,63,2  GenuineIntel    2295 
  5.  2  6,63,2  GenuineIntel    2295 
  6.  3  6,63,2  GenuineIntel    2295 
  7.  
  8.  0:017> !address -summary 
  9. --- Protect Summary (for commit) - RgnCount ----------- Total Size -------- %ofBusy %ofTotal 
  10. PAGE_READWRITE                          878          1eccd000 ( 492.801 MB)  29.61%   12.03% 

沒有特殊原因的話,用 64bit 來跑程序,打破 32bit 的 4G 空間限制,這樣也可以讓gc擁有更大的堆分配空間。

參考網址:https://docs.microsoft.com/zh-cn/dotnet/standard/garbage-collection/fundamentals

 

責任編輯:武曉燕 來源: 一線碼農聊技術
相關推薦

2021-05-17 07:43:06

Web站 CPU.NET

2021-10-27 07:30:32

.NETCPU論壇

2023-07-31 22:29:20

CPU.NETAPI

2024-08-08 11:21:01

2022-10-24 07:48:37

.NETCPUGC

2024-12-31 09:36:06

2023-05-12 17:42:22

CPUMES系統

2024-03-15 15:15:53

.NETCPU系統

2023-11-01 10:46:12

.NET線程同步

2022-02-23 10:12:58

CPUWeb.NET

2024-07-12 11:20:34

.NET崩潰視覺程序

2022-10-25 14:17:01

.NET代碼程序

2024-09-14 10:28:56

.NET卡死程序

2021-04-29 07:33:40

內存API程序

2024-05-28 10:18:30

WPF程序數據

2023-06-26 00:12:46

2024-12-27 13:31:18

.NETdump調試

2024-03-28 12:56:36

2023-04-06 10:52:18

2023-07-06 10:11:38

.NET模式dump
點贊
收藏

51CTO技術棧公眾號

日韩在线国产| 91精品国产高清久久久久久| 手机在线国产视频| 亚洲综合图区| 91亚洲资源网| 国产精品一区二区久久| 免费中文字幕视频| 国产欧美一区| 日韩一区二区电影| 97视频在线免费播放| 五月婷婷在线观看| hitomi一区二区三区精品| 国产精品久久久久av| 九九九在线视频| 国产精品探花在线观看| 欧美一级视频精品观看| 免费无码av片在线观看| а√资源新版在线天堂| 久久综合五月天婷婷伊人| 91精品啪在线观看麻豆免费| 国产精品久久久久久久久久久久久久久久久 | www.热久久| 日本特黄久久久高潮| 久久久久久久久久久久av| 精品日韩在线视频| 日韩成人一级| 精品国产一区久久| 欧美激情国内自拍| 电影一区二区| 色婷婷综合久久久中文一区二区| 热久久最新地址| av电影在线观看网址| 97超碰欧美中文字幕| 不卡视频一区| av免费观看网址| 美女视频免费一区| 国产精品对白刺激| 成年人视频在线免费看| 亚洲欧洲视频| 欧美黑人xxxx| 青青草原免费观看| 一本一本久久a久久综合精品| 中文字幕亚洲综合| 欧美大波大乳巨大乳| 婷婷激情久久| 亚洲精品一区二区网址| 亚洲国产精品成人综合久久久| 亚洲视频一起| 日韩欧美一区二区不卡| 黄色片免费网址| 91成人福利社区| 88在线观看91蜜桃国自产| 激情文学亚洲色图| 成人永久在线| 日韩欧美在线观看一区二区三区| 欧美一级视频在线| 色999久久久精品人人澡69 | 欧美激情国产精品| 激情综合五月网| 国模一区二区三区| 国外成人免费在线播放| 国产成人精品一区二三区| 9色精品在线| 欧洲成人免费视频| 欧美性受xxx黑人xyx性爽| 日本不卡123| 成人精品一区二区三区电影黑人| 国产精品午夜福利| 国产精品综合av一区二区国产馆| 91视频免费在线观看| 亚洲成人精品女人久久久| 成人国产免费视频| 欧美日韩精品免费看| 一级毛片视频在线| 亚洲另类在线视频| 3d动漫一区二区三区| 日本精品不卡| 在线播放/欧美激情| 制服丝袜av在线| 亚欧洲精品视频在线观看| 亚洲夜晚福利在线观看| 97精品在线播放| 国内精品久久久久久久97牛牛 | 国产黄色激情视频| 女人让男人操自己视频在线观看 | 亚洲欧洲美洲综合色网| 91免费国产精品| 中文字幕在线直播| 91超碰这里只有精品国产| 人妻av一区二区| av一区二区在线播放| 欧美成人激情图片网| 日韩欧美中文字幕一区二区| 日韩黄色免费电影| 99电影在线观看| 欧美成人片在线| 成人免费在线观看入口| 国产中文字幕二区| 少妇高潮一区二区三区99| 欧美精品一区二区三区四区| 99精品全国免费观看| 国内精品99| 国产男人精品视频| 亚洲欧美日韩动漫| 亚洲你懂的在线视频| 红桃av在线播放| 五月亚洲婷婷| 中文字幕亚洲在线| www亚洲视频| 国产精品18久久久久久久久| 茄子视频成人在线观看 | 91精品啪在线观看国产81旧版| 欧美激情欧美激情| 在线观看免费黄色小视频| 波多野结衣一区二区三区| 一级黄色免费在线观看| 婷婷激情一区| 亚洲国产黄色片| 高h视频免费观看| 美女视频黄久久| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 无码 制服 丝袜 国产 另类| 久久爱.com| 亚洲欧洲成视频免费观看| 欧美极品aaaaabbbbb| 久久精品国产第一区二区三区| 国产综合第一页| 色黄网站在线观看| 欧美精品九九99久久| 蜜乳av中文字幕| 久久国产成人| 国偷自产av一区二区三区小尤奈| 日韩av毛片| 日韩丝袜情趣美女图片| 三级全黄做爰视频| 精品中文av资源站在线观看| 少妇精品久久久久久久久久| 电影网一区二区| 亚洲精品中文字幕av| 日本熟女一区二区| 成人av在线网| 青青草成人免费在线视频| aaa国产精品| 欧美激情一区二区三区成人| 精品国产亚洲av麻豆| 亚洲男人都懂的| 永久av免费在线观看| 亚洲成人免费| 91精品天堂| 色婷婷在线播放| 精品999在线播放| 久久免费在线观看视频| 成人午夜视频在线观看| 久无码久无码av无码| 卡通动漫国产精品| 88xx成人精品| 久香视频在线观看| 在线观看亚洲精品视频| 你懂得视频在线观看| 国内外成人在线| 51xx午夜影福利| 99久久免费精品国产72精品九九 | 伊人情人网综合| 亚洲视频资源| 欧美高清视频免费观看| 日本免费网站在线观看| 疯狂做受xxxx高潮欧美日本 | 日韩欧美在线视频日韩欧美在线视频 | 中文字幕亚洲综合久久| 亚洲无码久久久久| 亚洲欧美色图小说| 中文字幕在线视频播放| 亚洲欧美日韩视频二区| 日韩国产一区久久| 亚洲午夜剧场| 欧美国产视频日韩| 久久经典视频| 在线电影国产精品| 久久久一二三区| 91丝袜美腿高跟国产极品老师| 国产成人无码av在线播放dvd| 日韩理论在线| 成人动漫在线视频| 26uuu亚洲电影| www.久久久久久.com| 成 人 黄 色 片 在线播放| 精品久久久久久中文字幕大豆网| 1024手机在线观看你懂的| 国产东北露脸精品视频| 日韩人妻精品无码一区二区三区| 久久五月天小说| 国产欧美一区二区视频| 久久久加勒比| 欧美尤物巨大精品爽| 超鹏97在线| 亚洲男人7777| 性生活黄色大片| 欧美三级日韩三级| 日韩经典在线观看| ...中文天堂在线一区| 91av在线免费| 国产一区二区在线看| 久久久久久香蕉| 亚洲国产高清一区二区三区| 一区二区在线观看网站| 网红女主播少妇精品视频| 91探花福利精品国产自产在线| 欧美美女日韩| 久久久久久久一区二区三区| 日本不卡不卡| 亚洲色图狂野欧美| 欧美一区二不卡视频| 7777精品久久久大香线蕉| 午夜精品免费观看| 污片在线观看一区二区| 中文字幕手机在线观看| 国产精品丝袜91| 一本色道久久综合亚洲精品图片| 国产传媒久久文化传媒| 少妇网站在线观看| 日韩有码一区二区三区| 日日碰狠狠添天天爽超碰97| 欧美+亚洲+精品+三区| 一区在线电影| 欧美国产偷国产精品三区| 欧洲亚洲一区二区| 天堂99x99es久久精品免费| 成人91视频| 欧美高清一级片| 91欧美视频网站| 成人一区视频| 国产精品久久97| 超碰一区二区| 日本欧美一级片| 91久久国产综合久久91猫猫| 97精品视频在线| av在线理伦电影| 韩剧1988在线观看免费完整版| 后进极品白嫩翘臀在线播放| 欧美大学生性色视频| 在线免费观看污| 欧美成人自拍视频| 日本一级理论片在线大全| 色综合久久久久久中文网| a级影片在线观看| 久久福利视频导航| 宅男网站在线免费观看| 欧美国产日韩免费| 国产美女精品写真福利视频| 97在线看免费观看视频在线观看| 美洲精品一卡2卡三卡4卡四卡| 欧美第一淫aaasss性| 国模私拍视频在线播放| 97在线观看免费高清| 中文字幕在线视频久| 国产成人精品网站| 精品美女一区| 91在线视频九色| 99久久人爽人人添人人澡| 国产精品手机在线| 婷婷综合一区| 亚洲成人网上| 一区二区免费不卡在线| 大伊香蕉精品视频在线| 麻豆精品网站| 色婷婷.com| 懂色av中文一区二区三区| 人妻在线日韩免费视频| 国产亚洲精品久| 青青草国产在线观看| 午夜精品一区二区三区免费视频 | 国产乡下妇女做爰毛片| 欧美性精品220| 这里只有精品9| 日韩欧美二区三区| 黄色在线播放| 伦理中文字幕亚洲| 国产不卡123| 国产精品久久久久不卡| 国产在线一区不卡| 精品卡一卡二| 久久精品99久久无色码中文字幕| 久久久99精品视频| 男女av一区三区二区色多| 香港日本韩国三级网站| 国产高清一区日本| 亚洲AV无码成人精品区明星换面| 亚洲免费观看高清完整版在线| 国产无码精品一区二区| 欧美丝袜自拍制服另类| 日韩一级免费视频| 日韩在线观看免费全| 超碰在线cao| 国产精自产拍久久久久久蜜| 成人偷拍自拍| 中文字幕久久综合| 国产偷自视频区视频一区二区| 手机在线国产视频| 久久久久久**毛片大全| 久久久久久久久久综合| 欧美日韩一区久久| 色吊丝在线永久观看最新版本| 精品少妇v888av| 成人免费一区| 欧美激情导航| 亚洲经典视频在线观看| √天堂资源在线| 日本一区二区动态图| 1级黄色大片儿| 91精品国模一区二区三区| 国产三级在线| 亚州成人av在线| 九色精品蝌蚪| 中文字幕久久一区| 免费精品视频在线| 亚洲精品成人无码熟妇在线| 亚洲影院理伦片| a天堂在线观看视频| 最好看的2019的中文字幕视频| 亚洲性色av| 国内精品二区| 狠狠噜噜久久| 女同性αv亚洲女同志| 一区在线中文字幕| 中文字幕第315页| 亚洲视频一区二区三区| 国产高清不卡| 久久久精品国产一区二区三区| 欧美日韩国产亚洲一区| 欧美性猛交xxxx乱大交91| 亚洲欧洲日韩一区二区三区| 中文字幕在线观看免费| 国产一区二区日韩| 国偷自产一区二区免费视频| 久久国产精品-国产精品| 91久久久久| 国产在线观看无码免费视频| 精品成人乱色一区二区| 五月激情婷婷网| 欧美一区二区影院| 美女久久久久| 日韩中文字幕二区| 久久久国产午夜精品| 日韩黄色一级视频| 国产亚洲免费的视频看| 99久久伊人| 国产又大又长又粗又黄| 国产乱码精品一品二品| 天天做夜夜爱爱爱| 欧美一二三在线| 黄色羞羞视频在线观看| 久久99精品久久久久久青青日本| 亚洲免费影院| аⅴ天堂中文在线网| 欧美日韩亚洲综合一区二区三区| 麻豆传媒在线免费| 成人欧美一区二区三区在线| 欧美精品自拍| 在线黄色免费网站| 色哟哟一区二区| 午夜视频在线观看免费视频| 91美女片黄在线观| 黑人一区二区三区四区五区| 在线免费观看a级片| 日本韩国欧美一区二区三区| 一本一道波多野毛片中文在线| 91精品在线影院| 亚洲国产欧美国产综合一区| 大又大又粗又硬又爽少妇毛片| 在线看一区二区| av官网在线播放| 国产在线精品一区二区三区| 丝袜美腿亚洲色图| 中国毛片直接看| 日韩国产欧美精品一区二区三区| 久久精品女人天堂av免费观看| 中文字幕免费在线不卡| 懂色av噜噜一区二区三区av| 亚洲成熟少妇视频在线观看| 久久久国产影院| 欧美久久精品| 日本高清久久久| 天天操天天色综合| 黄色免费在线观看网站| 精品久久sese| 极品尤物av久久免费看| 日韩欧美性视频| xvideos成人免费中文版| eeuss鲁片一区二区三区| www日韩在线观看| 亚洲一区二区三区三| eeuss影院在线播放| 国产一区二区黄色| 美女国产一区二区| 日韩少妇裸体做爰视频| 久久视频在线看| 欧美人与牛zoz0性行为| 国产乱国产乱老熟300部视频| 在线免费一区三区| 国产美女高潮在线|