精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日韩在线视频二区| 久久夜色精品一区| 欧美放荡办公室videos4k| 久久免费精品国产| 蜜桃av.网站在线观看| 国产无人区一区二区三区| 亚洲一区二区久久久久久| 九九热这里有精品视频| 欧美激情在线免费| 91精品国产欧美一区二区18| 国产精品久久中文字幕| av在线天堂| 成人av在线影院| 国产精品激情av电影在线观看| 国产美女久久久久久| 麻豆一区一区三区四区| 欧美精品高清视频| 99视频在线免费播放| 3d成人动漫在线| 暴力调教一区二区三区| 国产中文欧美精品| 欧美特黄aaaaaa| 欧美二区视频| 日韩在线观看网站| 真人bbbbbbbbb毛片| av在线亚洲一区| 色爱区综合激月婷婷| 99久久免费观看| 日韩大片在线永久免费观看网站| www.在线欧美| 不卡一区二区三区视频| 国产精品视频一区在线观看| 欧美日韩亚洲一区| 日韩综合视频在线观看| 亚洲av无码一区二区三区人| 亚洲精品一区二区三区在线| 欧美区视频在线观看| 午夜精品久久久内射近拍高清| 男插女视频久久久| 亚洲啪啪综合av一区二区三区| 亚洲ai欧洲av| 黄色大片在线免费观看| 91麻豆产精品久久久久久| 国产精品久久波多野结衣| 国产麻豆免费视频| 蜜臀av一区二区| 国产精品高潮呻吟久久av无限 | 亚洲人成网站精品片在线观看| 欧美日韩在线观看一区二区三区 | 国产成人在线视频免费播放| 国产在线播放不卡| 在线免费观看视频网站| 天堂精品中文字幕在线| 日韩女优人人人人射在线视频| 国产情侣在线视频| 亚洲精品1区| 97精品免费视频| 日本少妇在线观看| 亚洲一级二级| 久久久久久久久久久免费精品| 国产av无码专区亚洲av毛网站| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 蜜臀av亚洲一区中文字幕| 国产精品国模在线| 中文字幕在线播放日韩| 久久99国产精品麻豆| 成人久久精品视频| 国产成人精品免费看视频| 国产美女娇喘av呻吟久久| 亚洲一区中文字幕在线观看| hs视频在线观看| 国产成人鲁色资源国产91色综| 成人91视频| 午夜av免费在线观看| 91原创在线视频| 日韩激情久久| 精品51国产黑色丝袜高跟鞋| 亚洲美女屁股眼交| 日韩激情视频一区二区| 天堂中文在线播放| 欧美唯美清纯偷拍| 极品粉嫩美女露脸啪啪| 一区二区中文字幕在线观看| 亚洲国产精品成人精品| 国产全是老熟女太爽了| 91久久电影| 久久久久久尹人网香蕉| 激情视频网站在线观看| 久久黄色级2电影| 91在线在线观看| 丝袜+亚洲+另类+欧美+变态| 国产日韩三级在线| 国产福利片一区二区| 国精一区二区三区| 色拍拍在线精品视频8848| 亚洲午夜精品一区| 日韩av系列| 久久精品99久久香蕉国产色戒| 精品一区在线视频| 三级在线观看一区二区| 91精品视频观看| 日韩美女一级视频| 亚洲国产激情av| 丰满少妇大力进入| 国产亚洲人成a在线v网站| 日韩一区二区影院| 丰满少妇高潮一区二区| 欧美在线播放| 国产精品成人久久久久| 亚洲精品久久久久久无码色欲四季| 久久综合av免费| 91传媒免费视频| 校园春色亚洲色图| 精品欧美乱码久久久久久 | 成人亚洲一区二区| 亚洲91精品在线| 国产伦一区二区| 久久久久国产精品厨房| 免费特级黄色片| 国产精品视频首页| 亚洲天堂成人在线视频| 日本天堂在线视频| 国产黄色成人av| 一区国产精品| 国产一区二区三区朝在线观看| 亚洲国产古装精品网站| 中文字幕人妻一区二| 日日嗨av一区二区三区四区| 国产综合18久久久久久| 影音先锋在线播放| 欧美日本高清视频在线观看| 中文字幕av久久爽一区| 久久蜜桃精品| 久久精品中文字幕一区二区三区| 在线不卡日本v二区707| 欧美日韩三级一区| 免费成人深夜天涯网站| 久久精品一区二区国产| 狠狠色综合色区| 日本免费在线精品| 在线观看日批视频| www国产精品av| 欧美成人免费在线观看视频| 日本成人精品| 欧美成人激情视频免费观看| 中文字幕第一页在线播放| 26uuu久久天堂性欧美| 欧美一级片免费播放| 在线精品视频一区| 欧美激情区在线播放| 国产成人精品亚洲精品色欲| 亚洲欧美偷拍三级| 樱花草www在线| 香蕉视频官网在线观看日本一区二区| 国产精品美腿一区在线看| 国产理论电影在线观看| 日韩欧美成人精品| 国产呦小j女精品视频| 亚洲综合另类| 日产精品高清视频免费| 色老太综合网| 中文字幕一区电影| 国产免费黄色大片| 亚洲精品国产a| 美女扒开腿免费视频| 亚洲精品极品| 久久久久久久久久久久久久一区| 欧美xxxhd| 亚洲人成电影在线| 在线亚洲欧美日韩| 亚洲老司机在线| 日本50路肥熟bbw| 午夜一区在线| 伊人久久大香线蕉成人综合网| 亚洲国产91视频| 欧美国产日韩一区二区三区| 午夜国产在线观看| 91国产福利在线| 久久人妻无码aⅴ毛片a片app| 国产精品一区免费在线观看| 欧美精品久久久久久久久久久| 美女视频免费精品| 国产精品欧美一区二区| 国产三区在线观看| 精品国产一区二区三区不卡| 久久国产视频精品| 18欧美亚洲精品| 丝袜熟女一区二区三区 | 国产美女永久无遮挡| 美国成人xxx| 成人网在线免费看| 国产激情在线播放| 色一区av在线| 免费观看黄色一级视频| 欧美亚洲尤物久久| 久久久国产精品黄毛片| 久久精品人人做| 国产伦理在线观看| 日本vs亚洲vs韩国一区三区| 男人的天堂avav| 日本黄色精品| 国产一区二区精品在线| 图片一区二区| 欧美亚洲视频在线看网址| 快射视频在线观看| 国产视频久久久久久久| 国产成人久久精品77777综合| 欧美午夜激情在线| 青青草免费av| 国产欧美日韩在线| 国产伦精品一区三区精东| 麻豆一区二区三| 日韩精品视频久久| 欧美日韩亚洲三区| 香蕉精品视频在线| 久久99蜜桃| 国产亚洲一区二区三区在线播放 | 国产精品久久免费观看| 成人免费va视频| 青青草原播放器| 美女视频网站久久| 亚洲爆乳无码专区| 亚洲国产三级| 91免费国产精品| 久久精品国内一区二区三区水蜜桃| 欧美极品一区二区| 青青一区二区| 国产免费高清一区| 久久久久久亚洲精品美女| 国产精品欧美在线| 日韩精品影院| 欧美在线日韩在线| а√在线天堂官网| 欧美风情在线观看| 高潮毛片在线观看| 久久久91精品国产一区不卡| yiren22亚洲综合伊人22| 亚洲日本欧美中文幕| 性xxxx视频播放免费| 精品奇米国产一区二区三区| 亚洲国产精品suv| 日韩一区二区三区三四区视频在线观看| 自拍偷拍精品视频| 欧美三区免费完整视频在线观看| 一级做a爰片久久毛片| 色综合夜色一区| 毛片在线免费视频| 狠狠综合久久av一区二区小说| 日本熟妇毛耸耸xxxxxx| 天天亚洲美女在线视频| 日本在线视频中文字幕| 五月综合激情网| 日韩欧美视频在线免费观看| 亚洲成人一区在线| 偷偷操不一样的久久| 懂色aⅴ精品一区二区三区蜜月| 日韩成人免费在线观看| 午夜激情久久久| 少妇一级淫片免费放中国| 欧美性猛交xxxx乱大交| 日本黄色中文字幕| 欧美日韩一区三区四区| 国产精品一区二区av白丝下载 | 亚洲午夜电影网| 国产精品999久久久| 精品国产31久久久久久| 四虎成人在线观看| 欧美日韩久久久| 精品人妻av一区二区三区| 精品国产一区二区亚洲人成毛片| 天天综合网在线| 亚洲欧美在线磁力| 尤物网在线观看| 欧美成人中文字幕| 麻豆视频在线观看免费网站黄| 国产suv精品一区二区三区88区| 成人18视频在线观看| 亚洲www永久成人夜色| 伊人久久噜噜噜躁狠狠躁| 欧美黑人xxxxx| 天天揉久久久久亚洲精品| 大地资源网在线观看免费官网| 亚洲福利一区| 成人在线激情网| 国产精品资源网站| 国产精品无码在线| 国产精品午夜在线| 欧美成人精品欧美一级| 欧美日韩综合视频| 国产美女精品视频国产| 日韩国产精品视频| 国产区在线看| 欧美中文字幕在线| 国产麻豆一区二区三区| 精品一区二区不卡| 亚洲最大av| 欧美日韩在线不卡视频| 国产乱妇无码大片在线观看| 人妻熟女aⅴ一区二区三区汇编| 中文字幕免费一区| 日本中文字幕在线免费观看| 欧美日韩高清影院| 男人av在线| 欧美激情视频给我| 日本久久一区| 欧美精品一区二区视频| 欧美精品入口| 特级丰满少妇一级| 91一区在线观看| 欧美成人精品激情在线视频| 欧美视频中文一区二区三区在线观看| 亚洲国产欧美另类| 久久亚洲精品毛片| 欧美日韩五区| 久久99国产精品99久久| 欧美a级片一区| 久热精品在线播放| 久久久亚洲高清| 日本少妇在线观看| 日韩午夜激情电影| 日本在线视频站| 国产精品久久久久久久7电影| 欧美日韩直播| 精品少妇在线视频| 国产老肥熟一区二区三区| 天天操天天摸天天舔| 色网综合在线观看| 水莓100国产免费av在线播放| 欧美高清视频免费观看| 国产精品国产亚洲精品| 亚洲一区二区三区加勒比| 视频一区在线视频| free性中国hd国语露脸| 午夜精品久久久久久久久| 亚洲成人777777| 欧美日本精品在线| 国产日本亚洲| 国产又粗又长又爽视频| 激情伊人五月天久久综合| 国产三级短视频| 91成人网在线| 国产有码在线| 国产精品久久久久av| 久久精品国产亚洲av久| 亚洲欧美日韩系列| 国产精品久久久久久久免费| 中文字幕视频一区二区在线有码| 性高爱久久久久久久久| 久热国产精品视频一区二区三区| 136国产福利精品导航网址| 韩国三级视频在线观看| 亚洲综合图片区| 欧美 日韩 国产 成人 在线 91| 欧美精品videos| 成人高潮视频| 阿v天堂2017| 久久精品人人做人人爽人人| 国产成人av免费| 自拍偷拍亚洲在线| 精品国产亚洲日本| 欧美极品少妇无套实战| 成人美女视频在线观看18| 国产精品suv一区二区三区| 精品视频一区在线视频| 日韩三区在线| 免费成人深夜夜行网站视频| 国产一区二区精品久久| 国产在线视频第一页| 亚洲第一色在线| 另类激情视频| 午夜精品一区二区在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 五月婷婷综合激情网| 欧美成va人片在线观看| 色偷偷色偷偷色偷偷在线视频| 日韩电影天堂视频一区二区| 老色鬼精品视频在线观看播放| 天天天天天天天天操| 亚洲国产精品一区二区久| av有声小说一区二区三区| 一区二区三区四区视频在线| 国产成人精品综合在线观看| 国产尤物在线视频| 日韩亚洲成人av在线| 98视频精品全部国产| 久久久久国产精品熟女影院| 亚洲人成伊人成综合网小说| 天堂在线视频免费观看| 国产精品国产亚洲伊人久久| 国产精品99一区二区| 精品人妻无码一区二区三区换脸| 欧美高清dvd| 国产免费拔擦拔擦8x在线播放 | 国产精品无码永久免费不卡| 在线免费观看成人短视频| 亚洲男同gay网站| 欧美一二三四五区| 高清在线不卡av| 中文字幕在线网站| 91国产精品91|