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

記一次 .NET 某藥品倉儲管理系統 卡死分析

開發 后端
既然朋友說 api 有 request 無 response,那怎么去驗證朋友的話對不對呢?我們都知道 .NET 用 HttpContext 來表示一個請求,言外之意就是可以去抓 HttpContext 下的時長屬性,Netext 中有一個 !whttp 命令可以幫助我們。

一:背景

1. 講故事

這個月初,有位朋友wx上找到我,說他的api過一段時間后,就會出現只有請求,沒有響應的情況,截圖如下:

從朋友的描述中看樣子程序是被什么東西卡住了,這種卡死的問題解決起來相對簡單,接下來我就用 windbg 給大家分析一下。

二:Windbg 分析

1. Request 請求正在干嘛?

既然朋友說 api 有 request 無 response,那怎么去驗證朋友的話對不對呢?我們都知道 .NET 用 HttpContext 來表示一個請求,言外之意就是可以去抓 HttpContext 下的時長屬性,Netext 中有一個 !whttp 命令可以幫助我們。

  1. 0:000> !whttp 
  2. HttpContext    Thread Time Out Running  Status Verb     Url 
  3. 000000563bf803b0   42 00:01:50 00:01:24    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=x-HN 
  4. 000000563bf84660   -- 00:01:50 Finished    200 GET      http://xxx.com:30003/ 
  5. 000000563c4a0470   51 00:01:50 00:00:12    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=xxx2C 
  6. 00000056bbf63590   30 00:01:50 00:02:41    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=xxx-B2C 
  7. 00000056bc82a038   -- 00:01:50 Finished    200 GET      http://localhost:30003/ 
  8. 00000056bc84a3e8   44 00:01:50 00:00:51    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=x 
  9. 00000056bc8671c8   46 00:01:50 00:00:45    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=xxx-B2C 
  10. 000000573bf44698   35 00:01:50 00:02:39    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=x 
  11. 000000573bf483c0   33 00:01:50 00:02:41    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=x-HN 
  12. 000000573bf97e80   40 00:01:50 00:02:32    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=ZJB2C 
  13. 000000573c583b08   -- 00:01:50 Finished    200 GET      http://localhost:30003/ 
  14. 000000573c589ec8   -- 00:01:50 Finished    200 GET      http://xxx.com:30003/Wms/xxx/xxx/xxx 
  15. 000000573c760e28   -- 00:01:50 Finished    200 POST     http://xxx.com:30003/Wms/xxx/xxx/xxx 
  16. 000000573c95f990   48 00:01:50 00:00:31    200 POST     http://xxx.com:30003/Wms/Common/xxx?xxx=xxx&xxx=x-HN 
  17. 00000057bbf4f8e8   31 00:01:50 00:02:12    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=x 
  18. 00000057bc080340   50 00:01:50 00:00:19    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=x 
  19. 000000583c4aee80   43 00:01:50 00:01:11    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=xxx2B 
  20. 000000583c4d0c50   53 00:01:50 00:00:01    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=xxx2B 
  21. 00000058bbf8f1a0   34 00:01:50 00:02:22    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=xxx2B 
  22. 000000593bfe1758   41 00:01:50 00:01:22    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=xxx2C 
  23. 000000593c892160   -- 00:01:50 Finished    200 GET      http://xxx.com:30003/Wms/xxx/xxx/xxxJob 
  24. 000000593ca813b0   45 00:01:50 00:00:30    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=xxx-HN 
  25. 000000593caa45d8   -- 00:01:50 Finished    200 GET      http://xxx.com:30003/ 
  26. 00000059bc1ad808   32 00:01:50 00:01:45    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=xxx-B2C 
  27. 00000059bc1c3d70   36 00:01:50 00:01:29    200 POST     http://xxx.com:30003/Wms/xxx/xxx?xxx=xxx&xxx=x 
  28.  
  29. 25 HttpContext object(s) found matching criteria 

從 Running 列可以看到大多請求都已經達到1分鐘以上,這也驗證了朋友所說的卡死問題,按照經驗,可以取 Running 列中最大的 httpContext 所在的線程,也就是上面的 30 和 33 號線程, 看看它們都在干什么?

2. 探究 Running 最長線程

接下來切到 30 和 33 號線程,看看它們的線程棧。

  1. 0:000> ~30s 
  2. ntdll!NtWaitForSingleObject+0xa: 
  3. 00007ffd`b81f024a c3              ret 
  4. 0:030> !clrstack  
  5. OS Thread Id: 0x29d0 (30) 
  6.         Child SP               IP Call Site 
  7. 0000005acc3ac590 00007ffdb81f024a [PrestubMethodFrame: 0000005acc3ac590] xxx.xxx.RedisConnectionHelp.get_Instance() 
  8. 0000005acc3ac850 00007ffd4dd78911 xxx.xxx.RedisCache..ctor(Int32, System.String) 
  9. 0000005acc3ac8c0 00007ffd4dd78038 xxx.xxx.CacheByRedis.HashGet[[System.__Canon, mscorlib]](System.String, System.String, Int32) 
  10. 0000005acc3ac968 00007ffdabef1f7c [StubHelperFrame: 0000005acc3ac968]  
  11. 0000005acc3ac9c0 00007ffd4dd77f18 xxx.xxx.Cache.xxx.GetCacheNotAreaDataEntity[[System.__Canon, mscorlib]](System.String, System.String, System.String) 
  12.  
  13. ... 
  14.  
  15. 0:030> ~33s 
  16. ntdll!NtWaitForMultipleObjects+0xa: 
  17. 00007ffd`b81f07ba c3              ret 
  18. 0:033> !clrstack  
  19. OS Thread Id: 0x3ad4 (33) 
  20.         Child SP               IP Call Site 
  21. 0000005accabae90 00007ffdb81f07ba [GCFrame: 0000005accabae90]  
  22. 0000005accabafb8 00007ffdb81f07ba [HelperMethodFrame_1OBJ: 0000005accabafb8] System.Threading.Monitor.ObjWait(Boolean, Int32, System.Object) 
  23. 0000005accabb0d0 00007ffdaac60d64 System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken) 
  24. 0000005accabb160 00007ffdaac5b4bb System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken) 
  25. 0000005accabb1d0 00007ffdab5a01d1 System.Threading.Tasks.Task.InternalWait(Int32, System.Threading.CancellationToken) 
  26. 0000005accabb2a0 00007ffdab59cfa7 System.Threading.Tasks.Task`1[[System.__Canon, mscorlib]].GetResultxxx(Boolean) 
  27. 0000005accabb2e0 00007ffd4d8d338f xxx.Config.xxx.Config`1[[System.__Canon, mscorlib]].GetConfig(xxx.Config.Model.ConfigListener, System.Func`2<xxx.Config.Request.GetConfigRequest,System.Threading.Tasks.Task`1<System.String>>) 
  28. 0000005accabb340 00007ffd4d8d2f40 xxx.Config.xxx.Config`1[[System.__Canon, mscorlib]].get_Item(System.String, System.String) 
  29. 0000005accabb3c0 00007ffd4dd78f7f xxx.Util.BaseConfig.get_GetRedisConn() 
  30. 0000005accabb440 00007ffd4dd78e9c xxx.xxx.RedisConnectionHelp.GetConnectionString() 
  31. 0000005accabb4a0 00007ffd4dd789cb xxx.xxx.RedisConnectionHelp..cctor() 
  32. 0000005accabb940 00007ffdabef6953 [GCFrame: 0000005accabb940]  
  33. 0000005accabc5b0 00007ffdabef6953 [PrestubMethodFrame: 0000005accabc5b0] xxx.xxx.RedisConnectionHelp.get_Instance() 
  34. 0000005accabc870 00007ffd4dd78911 xxx.xxx.RedisCache..ctor(Int32, System.String) 
  35. 0000005accabc8e0 00007ffd4dd78038 xxx.xxx.CacheByRedis.HashGet[[System.__Canon, mscorlib]](System.String, System.String, Int32) 
  36. 0000005accabc988 00007ffdabef1f7c [StubHelperFrame: 0000005accabc988]  
  37. 0000005accabc9e0 00007ffd4dd77f18 xxx.Core.Cache.xxx.GetCacheNotAreaDataEntity[[System.__Canon, mscorlib]](System.String, System.String, System.String) 
  38. ... 

上面的信息不難發現 30 號線程正卡在 RedisConnectionHelp.get_Instance() 處,33 號線已經進入了 RedisConnectionHelp.get_Instance() 方法中,最后在 GetConfig() 處等待 Result 的結果,按經驗來說,30 號線程看樣子正在鎖等待, 33 號正在等待異步結果,接下來的突破點就是探究下 RedisConnectionHelp.Instance 處代碼。

3. 尋找問題代碼

接下來用反編譯工具 ILSpy 找到問題代碼。

  1. public static class RedisConnectionHelp 
  2.  public static ConnectionMultiplexer Instance 
  3.  { 
  4.   get 
  5.   { 
  6.    if (_instance == null
  7.    { 
  8.     lock (Locker) 
  9.     { 
  10.      if (_instance == null || !_instance.IsConnected) 
  11.      { 
  12.       _instance = GetManager(); 
  13.      } 
  14.     } 
  15.    } 
  16.    return _instance; 
  17.   } 
  18.  } 

30 號線程果然是卡在 Locker 處,接下來深挖下 33 號線程所執行的 GetManager() 方法,簡化后代碼如下:

  1. public T this[string dataId, string key = ""
  2.  get 
  3.  { 
  4.   try 
  5.   { 
  6.    string config = GetConfig(configListener, new NacosConfigClient(Base.NacosConfiguration).DoGetConfigAsync); 
  7.  
  8.    return JsonConvert.DeserializeObject<T>(config); 
  9.   } 
  10.   catch (Exception ex) 
  11.   { 
  12.    return default(T); 
  13.   } 
  14.  } 
  15.  
  16. private string GetConfig(ConfigListener listener, Func<GetConfigRequest, Task<string>> action
  17.  var text2 = action(new GetConfigRequest 
  18.  { 
  19.   DataId = listener.DataId, 
  20.   Group = listener.Group
  21.   Tenant = text 
  22.  }).Result; 
  23.  
  24.  return text2; 
  25.  
  26. internal async Task<string> DoGetConfigAsync(GetConfigRequest request) 
  27.  IRestResponse restResponse = await HttpUtil.Request(currentServerAddr, Method.GET, request.ParamValues(), xxx); 
  28.  
  29.  return restResponse.Content; 

可以看到代碼卡在了 Result 上無限期等待,到這里我就想到了 同步上下文 ,我看他這個程序是 .NET 4.8 下的 ASP.NET MVC,記得不錯上下文應該是 AspNetSynchronizationContext,具體死鎖原因可參見我的這篇文章:一句 Task.Result 就死鎖, 這代碼還怎么寫?,解決辦法大概有四種。

  • 使用 .ConfigureAwait(false)
  • 改成全異步
  • 用 Task 再包一層。
  • 改成全同步

三:總結

其實本次事故主要還是因為在 同步代碼 中做了 異步代碼.Result 導致的死鎖問題,有非常多的文章都在抨擊這種現象,在 asp.net core 中已經移除了這種同步上下文的大坑,給到朋友的建議是改成全同步,死鎖問題也隨之消失。

 哈哈,真替朋友開心!

本文轉載自微信公眾號「 一線碼農聊技術」,可以通過以下二維碼關注。轉載本文請聯系一線碼農聊技術公眾號。

 

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

2024-07-01 13:00:24

.NET網絡邊緣計算

2024-11-29 10:06:59

2024-05-20 09:39:02

.NETurl線程池

2023-09-27 07:23:10

.NET監控軟件

2022-10-13 18:40:05

.NETOA后端

2023-05-15 11:15:50

.NET門診語句

2024-09-14 10:28:56

.NET卡死程序

2024-06-06 10:51:15

自動化系統推測

2023-06-29 17:55:00

.NET日志WinDbg

2025-09-02 01:35:00

.NET光學定位軟件

2021-11-02 07:54:41

內存.NET 系統

2024-05-28 10:18:30

WPF程序數據

2024-03-28 12:56:36

2023-04-06 10:52:18

2024-03-26 00:44:53

.NETCIM系統

2023-03-26 20:24:50

ERP網站系統

2025-10-29 01:11:00

.NET系統windows

2024-07-09 11:51:20

Windows線程池源碼

2025-09-05 02:22:00

.NETCRM物流行業

2024-06-04 10:54:34

.NET代碼程序
點贊
收藏

51CTO技術棧公眾號

日韩欧美精品一区二区三区| 国产成人精品一区二区色戒| 在线视频亚洲欧美中文| 亚洲免费av高清| 97人人干人人| 久久综合综合久久| 粉嫩的18在线观看极品精品| 五月天视频一区| 美女一区视频| 久久久国产免费| 四虎成人av| 日韩一区二区三| 九色自拍视频在线观看| wwwxxxx国产| 国产精品一二| 自拍偷拍亚洲欧美| 91人妻一区二区| 成人免费看黄| 18欧美乱大交hd1984| 91超碰rencao97精品| 欧美片一区二区| 老司机精品在线| 欧美色视频在线| 亚洲天堂第一区| 视频午夜在线| 狠狠狠色丁香婷婷综合久久五月| 久久99精品视频一区97| 国产伦精品一区二区三区妓女| 欧美自拍电影| 亚洲卡通动漫在线| 国产麻豆一区二区三区在线观看| 香蕉影院在线观看| 在线看片不卡| 亚洲桃花岛网站| 亚洲精品永久视频| yellow字幕网在线| 中文字幕不卡在线观看| 国产精品久久7| 老熟妇一区二区三区啪啪| 欧美午夜精品| 色偷偷亚洲男人天堂| 无码人妻一区二区三区在线| 成人在线观看免费视频| 亚洲国产精品久久久久婷婷884| 日韩免费av一区二区三区| 亚洲第一页在线观看| 日本欧美韩国一区三区| 孩xxxx性bbbb欧美| 精品无码久久久久成人漫画| 国产一区二区三区四区二区| 精品区一区二区| 污片在线免费看| 不卡av播放| 亚洲一区二区三区自拍| 国产高潮呻吟久久久| 牛牛影视精品影视| 成人av网站免费| 亚洲一区二区三区xxx视频| 精品成人无码久久久久久| 亚洲精品美女| 欧美激情一区二区三区久久久| 成年人免费视频播放| 国产日产一区| 日韩电影中文字幕一区| 亚洲美女高潮久久久| 久久wwww| 日韩一级完整毛片| 亚洲精品mv在线观看| 久久青草免费| 欧美日韩免费观看一区三区| 热久久精品免费视频| 久久久一本精品| 91极品美女在线| 日韩 欧美 高清| 樱桃视频成人在线观看| 欧美性少妇18aaaa视频| 鲁一鲁一鲁一鲁一色| av手机在线观看| 亚洲欧洲性图库| 欧美日韩一区二区三区电影| 黄色免费在线看| 亚洲国产精品ⅴa在线观看| 天天综合狠狠精品| 成人精品福利| 中文在线资源观看网站视频免费不卡| 日本视频精品一区| 国产女人在线视频| 欧美国产1区2区| 亚洲人体一区| 福利片在线观看| 91久色porny| 欧美亚洲爱爱另类综合| 国产区在线视频| 中文字幕中文在线不卡住| 在线视频91| 欧美日韩经典丝袜| 精品久久久久久久大神国产| 久久人妻精品白浆国产| 69堂免费精品视频在线播放| 欧美日韩精品二区第二页| 91pony九色| 超碰成人福利| 亚洲欧美中文字幕| 精品女人久久久| 国产精品theporn| 57pao成人国产永久免费| 日韩欧美激情视频| 奇米色777欧美一区二区| 亚洲a级在线播放观看| 成人免费公开视频| 国产亚洲一区二区三区| 国产卡一卡二在线| 手机av在线| 91激情五月电影| 日本人视频jizz页码69| 亚洲3区在线| 亚洲天堂免费观看| 国产一区二区三区在线视频观看| 在线亚洲激情| 欧美在线亚洲在线| 91theporn国产在线观看| 国内精品视频一区二区三区八戒 | 福利一区视频| 欧美成人激情免费网| 日本一区二区三区网站| 66视频精品| 欧美一级免费视频| 国产视频一区二区三| 成人国产在线观看| 亚洲日本japanese丝袜| 女人高潮被爽到呻吟在线观看| 欧美日韩一级片在线观看| 国产精品成人99一区无码| 欧美偷拍自拍| 性欧美xxxx交| 国产又大又黑又粗| 久久一区二区三区四区| 在线观看17c| 成人高清一区| 亚洲精品色婷婷福利天堂| 欧美又粗又大又长| 免费高清视频精品| 精品无码久久久久国产| www免费在线观看| 精品色蜜蜜精品视频在线观看| 午夜视频在线网站| 欧美三级午夜理伦三级小说| 欧美巨大黑人极品精男| 中文字幕在线播| 成人中文字幕合集| 超级碰在线观看| 亚洲欧洲二区| 伊人久久免费视频| 久久久久久91亚洲精品中文字幕| 国产91丝袜在线播放0| 在线看无码的免费网站| 国产私拍福利精品视频二区| 亚洲精品国产品国语在线| 欧美日韩在线视频免费| 久草精品在线观看| 午夜精品一区二区三区在线观看| av漫画网站在线观看| 欧美xxxx在线观看| 亚洲天堂黄色片| 国产在线播放一区| 一区精品视频| 国产一区高清| 日日噜噜噜夜夜爽亚洲精品| 久草热在线观看| 国产色产综合色产在线视频| 国产免费黄色av| 妖精视频一区二区三区免费观看| 26uuu另类亚洲欧美日本老年| 韩国av免费在线| 亚洲成a人片在线观看中文| www日本在线观看| 欧美日韩一卡| 国产精品一区二区欧美黑人喷潮水| 最爽无遮挡行房视频在线| 7777精品伊人久久久大香线蕉的| 2014亚洲天堂| 国内精品伊人久久久久影院对白| 隔壁人妻偷人bd中字| 伊人成综合网yiren22| 国产精品入口免费视频一| 国产在线激情| 日韩成人中文字幕| 亚洲中文无码av在线| 亚洲卡通欧美制服中文| 亚洲精品视频大全| 狠狠色伊人亚洲综合成人| 日本手机在线视频| 波多野结衣在线观看一区二区三区 | 粉嫩av懂色av蜜臀av分享| 久久国产免费| 国产一二三四五| 天海翼精品一区二区三区| 国产啪精品视频网站| eeuss鲁一区二区三区| 尤物yw午夜国产精品视频| 亚洲xxx在线| 欧美色图一区二区三区| 日韩成年人视频| 中文字幕视频一区| 大地资源二中文在线影视观看| 久久成人18免费观看| 131美女爱做视频| 婷婷亚洲最大| 欧美一区二区三区四区五区六区 | 五月天国产精品| 5566中文字幕| 久久综合狠狠综合| 91精产国品一二三| 日本va欧美va精品| a在线视频观看| 中文在线播放一区二区 | 国产裸体视频网站| 日韩一区精品视频| 欧美又粗又长又爽做受| 91综合在线| 欧美午夜精品久久久久久蜜| 一本色道69色精品综合久久| 国产精品青草久久久久福利99| 91福利在线尤物| 久久天天躁夜夜躁狠狠躁2022| 成人av电影观看| 日韩精品在线观看网站| 亚洲精品911| 欧美一级精品大片| 亚洲系列第一页| 欧美午夜片在线观看| 日韩精品在线观看免费| 亚洲一区二区三区视频在线| 国产中文av在线| 日本一二三四高清不卡| 欧美 日韩 国产 成人 在线观看| 99re亚洲国产精品| 成人免费无码大片a毛片| 成人黄色一级视频| 中文字幕一区二区三区人妻在线视频 | 欧美老少做受xxxx高潮| 老司机福利在线视频| 日韩一级裸体免费视频| 超碰在线国产| 一区二区三区国产在线观看| 麻豆av电影在线观看| 亚洲精品自在久久| 免费在线黄色网址| 亚洲图片欧美午夜| 黄色av网址在线免费观看| 亚洲欧美国产精品久久久久久久| 青青色在线视频| 亚洲视频网站在线观看| 国产综合视频一区二区三区免费| 亚洲欧美国产精品va在线观看| 你懂的视频在线播放| 亚洲天堂av在线免费观看| 北条麻妃在线| 自拍偷拍亚洲在线| 国产乱色在线观看| 久久国产精品首页| 欧美videossex| 午夜精品久久久久久久99热| 亚洲色图官网| 国产精品视频1区| 国产日韩一区二区三免费高清| 国产91精品一区二区绿帽| 欧美尿孔扩张虐视频| 蜜桃导航-精品导航| 欧美色图一区| 色婷婷777777仙踪林| 亚洲高清资源| 色欲av无码一区二区人妻| 快she精品国产999| 亚洲小视频网站| 懂色av噜噜一区二区三区av| 极品人妻一区二区三区| 国产精品伦理一区二区| 久久艹精品视频| 色综合夜色一区| 国产又粗又黄又爽的视频| 精品欧美乱码久久久久久| 全色精品综合影院| 日韩亚洲精品视频| 97在线视频免费观看完整版| 国产成人精品在线| 久久三级中文| 免费一区二区三区| 911精品美国片911久久久| 18禁免费观看网站| 久久av资源网| aaaaaav| **欧美大码日韩| 欧美h在线观看| 91精品欧美久久久久久动漫| 天堂在线一二区| 欧美成人小视频| 桃子视频成人app| 高清国产一区| 日韩精品欧美激情一区二区| av日韩一区二区三区| 日本免费在线视频不卡一不卡二 | 国产美女视频一区二区| 精品视频在线观看| 亚洲精品成人无限看| 国产精品少妇在线视频| 国产一区二区免费看| 久久久久亚洲av成人无码电影| 一区二区在线免费观看| 欧美a视频在线观看| 欧美不卡视频一区| eeuss影院www在线播放| 97久久国产精品| 欧美影院精品| 中文字幕日韩一区二区三区| 国产午夜久久| 国产人妻精品午夜福利免费| 国产精品国产三级国产aⅴ无密码| 国偷自拍第113页| 精品欧美一区二区久久 | 午夜精品一区二区三区视频免费看| 日本精品在线一区| 久久草.com| 欧美日韩综合| 亚洲欧美日韩一二三区| 国产精品乱人伦| wwwwww在线观看| 亚洲人成在线观| 激情黄产视频在线免费观看| 亚洲va电影大全| 99热国内精品| 亚洲另类第一页| 中文字幕久久午夜不卡| 手机av免费观看| 亚洲性69xxxbbb| 欧美亚洲韩国| 欧美影视一区二区| 麻豆精品网站| 成人免费无码大片a毛片| 亚洲一区二三区| www.中文字幕| 欧美极品少妇xxxxⅹ裸体艺术| 日本精品在线播放| 一级特黄妇女高潮| 国产一区二区三区国产| 欧美在线视频第一页| 3d动漫精品啪啪| 国产盗摄在线观看| 亚洲free性xxxx护士白浆| 亚洲人metart人体| 午夜诱惑痒痒网| 一区二区三区av电影 | 精品影视av免费| 中文字幕人妻一区二| 日韩精品一区二区三区中文精品| 手机在线免费观看av| 成人av男人的天堂| 亚洲高清二区| 亚洲国产天堂av| 欧美伦理视频网站| 亚洲小说区图片区都市| 成人羞羞视频免费| 亚洲国内精品| 新91视频在线观看| 精品视频在线免费观看| 超碰最新在线| 国产亚洲欧美一区二区三区| 亚洲一区二区网站| 黄色av片三级三级三级免费看| 欧美日韩小视频| 影音先锋中文在线视频| 国产乱码一区| 日本三级亚洲精品| 久久久久亚洲av无码专区体验| 欧美精品一区二区三区很污很色的| 国产直播在线| 亚洲国产午夜伦理片大全在线观看网站| 久久精品久久99精品久久| 九九久久免费视频| 日韩精品极品视频| 国产三级一区| 国产精品久久久久7777| 久久午夜羞羞影院免费观看| 一道本无吗一区| 午夜精品在线观看| 日韩成人综合| 人妻体内射精一区二区三区| 91国产精品成人| aaa大片在线观看| 久久99欧美| 国产一区二区在线免费观看| 久久国产视频播放| 久久av在线看| 亚洲综合图色| 精品无码av一区二区三区不卡| 日本精品视频一区二区| 中文字幕有码在线视频| 久久亚洲高清| 国产激情一区二区三区| 久久久久久久久久一级|