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

欧美伦理影视网| 久久福利网址导航| 99久re热视频精品98| 天堂中文在线网| 欧美天堂影院| 岛国精品视频在线播放| 久久夜色精品国产亚洲aⅴ| 日韩高清av电影| 女人又爽又黄免费女仆| 99热这里只有精品99| 欧美自拍电影| av在线一区二区| 欧美一级视频精品观看| 亚洲小视频在线播放| 亚洲欧美激情在线观看| 欧美va视频| 亚洲国产精品二十页| 国产www精品| 午夜激情福利网| 亚洲专区**| 国产成人aaa| 亚洲国产91精品在线观看| 日本免费一区二区三区| 日韩欧美激情视频| 女厕嘘嘘一区二区在线播放| 日韩欧美亚洲综合| 色呦呦网站入口| 国产91久久久| 中文亚洲免费| 中文字幕亚洲欧美在线| 国产精品va在线观看无码| 亚洲av无码国产精品久久不卡| 91精品国产高清久久久久久91裸体| 91大神免费观看| 1区2区在线观看| 91丨porny丨蝌蚪视频| 日本精品视频在线| 国产精品亚洲无码| 国内精品视频| 亚洲高清不卡在线观看| 日本一区二区视频| 中文字幕二区三区| 欧美一级网址| 亚洲综合视频在线观看| 日韩av一区二区三区在线 | 欧美亚洲色图校园春色| 欧美精品高清视频| 欧美黄色直播| 蜜桃av免费在线观看| 欧美xxxx黑人又粗又长| 国产成人精品免费| 国产精品久久久久久超碰 | 秋霞蜜臀av久久电影网免费| 欧美精品vⅰdeose4hd| 国产曰肥老太婆无遮挡| 亚洲天堂五月天| 国内在线观看一区二区三区| 日本韩国一区二区三区视频| 欧美极品少妇无套实战| 最新国产在线观看| 91尤物视频在线观看| 亚洲综合在线中文字幕| 国产精品自在自线| 国产精品一二三产区| 亚洲国产精品二十页| 欧美精品七区| 天天干天天插天天操| 国产美女精品人人做人人爽 | 欧美日韩久久久久| 日韩jizzz| 手机看片1024国产| 国产福利一区二区| 91日本在线视频| 手机在线看片1024| 国产日韩1区| 97香蕉久久超级碰碰高清版| caoporm在线视频| 播放一区二区| 性做久久久久久免费观看欧美| 老司机午夜免费福利视频| 亚洲视频tv| 久久国产精品免费| 性欧美xxxx| 国产无套内射又大又猛又粗又爽| 午夜国产精品视频| 超碰精品一区二区三区乱码| 亚洲一二三在线观看| 日韩精品欧美| 俺去亚洲欧洲欧美日韩| 在线视频这里只有精品| 亚洲三级网址| 亚洲va天堂va国产va久| 大地资源第二页在线观看高清版| 日本在线观看| 亚洲欧美偷拍三级| 中文网丁香综合网| аⅴ资源新版在线天堂| 国产精品免费视频一区| 黄色高清视频网站| 国产探花在线观看| 欧美日在线观看| 国产成人精品视频免费看| av资源在线看片| 欧美日韩国产中文精品字幕自在自线| 日韩中文字幕在线不卡| а√天堂官网中文在线| 成人av电影免费观看| 国产 高清 精品 在线 a| 国产精品一 二 三| 亚洲xxxx3d动漫| 色喇叭免费久久综合| 亚洲图片欧美午夜| 激情文学亚洲色图| 2023国产精华国产精品| 亚洲精品久久久久国产| 成人黄色片视频| 成人av集中营| 欧美最猛性xxxxx直播| 精品国产无码在线| 岛国中文字幕在线| 亚洲午夜一区二区三区| www.av中文字幕| 欧美激情20| 欧美精品一级二级三级| 国产精品手机在线观看| 国产精品香蕉| 欧美日韩国产首页在线观看| 九九九九免费视频| 欧美日韩不卡| 日韩一区二区精品葵司在线| 污污的网站18| 成人激情久久| 在线免费不卡电影| 永久看看免费大片| 免费一区二区| 欧美精品免费在线| 男人天堂视频网| 国产一区二区精品在线观看| 国产欧美欧洲| 麻豆最新免费在线视频| 成人美女视频在线看| 好吊色欧美一区二区三区| 蝌蚪视频在线播放| 亚洲国产成人porn| www.xxx亚洲| 国产乱人伦丫前精品视频| 日韩中文字幕在线精品| 亚洲毛片一区二区三区| 岛国精品一区二区| 中文字幕一区二区三区四区五区人| 久久久国产精品无码| 91白丝在线| 在线播放日韩导航| 成年人小视频在线观看| 国产欧美日韩精品一区二区三区 | 精品人妻无码一区二区三区换脸| 欧美大片免费| 亚洲成人av中文字幕| 一级黄色录像视频| 欧美精品三区| 爱情岛论坛亚洲入口| 97caopron在线视频| 欧美一卡二卡在线| 国产一级二级三级| 狠狠色伊人亚洲综合成人| 天天成人综合网| 国产精品毛片无码| 久久综合伊人77777| 国产成人精品亚洲精品色欲| 亚洲日韩欧美一区二区在线| 无套白嫩进入乌克兰美女| 欧美大片一区| 国内精品久久国产| av在线私库| 亚洲天堂av在线播放| 成人黄色片在线观看| 中文字幕一区av| 日本r级电影在线观看| 极品少妇一区二区三区| 精品中文字幕一区| 电影天堂国产精品| 久久精品电影网站| 亚洲精品国产精品国| 欧美午夜宅男影院在线观看| 国产午夜精品福利视频| 国产精品一区在线观看你懂的| www.成年人视频| 欧美色图婷婷| 欧洲成人在线观看| 亚洲 欧美 激情 小说 另类| 午夜精品一区二区三区电影天堂| 在线观看福利片| 国内精品第一页| 女性女同性aⅴ免费观女性恋| 精品无码m3u8在线观看| 首页欧美精品中文字幕| 99re99热| 亚洲裸色大胆大尺寸艺术写真| 国产精品国产亚洲伊人久久| 在线观看三级视频| 精品丝袜一区二区三区| 91麻豆视频在线观看| 五月综合激情婷婷六月色窝| 亚洲一区二区自偷自拍| 韩国一区二区视频| 777米奇影视第四色| 在线中文字幕亚洲| 国产成人亚洲综合91精品| 五月婷婷六月丁香| 欧美无砖专区一中文字| 日本少妇一区二区三区| 国产精品theporn| 日韩理论片在线观看| 婷婷综合国产| 日本精品久久久久久久| 欧美高清另类hdvideosexjaⅴ| 国产亚洲精品久久久| 亚洲av无码一区二区乱子伦 | 亚洲国产成人一区| 亚洲自拍第二页| 亚洲最大成人网4388xx| 国产综合精品久久久久成人av| 成人18视频在线播放| 天堂av在线8| av不卡在线看| 免费网站永久免费观看| 精品福利久久久| 久久99久久精品国产| 蜜桃在线一区| 国产一区二中文字幕在线看| 午夜精品久久久久久久久久蜜桃| 欧美精品成人91久久久久久久| 在线播放日本| 日韩av中文字幕在线播放| www.日本在线观看| 3d成人动漫网站| 特级西西444www高清大视频| 色综合一区二区| 免费黄色网址在线| 国产高清欧美| 精品粉嫩aⅴ一区二区三区四区| 中文字幕一区二区久久人妻| 色中色一区二区| xxxx 国产| 亚洲国产视频一区二区| 成人观看免费视频| 亚洲欧美电影一区二区| 亚洲波多野结衣| 亚洲国产精华液网站w| 欧美日韩国产黄色| 国产精品久久久久久久蜜臀| 国产1区2区在线观看| 国产性天天综合网| 免费成人深夜天涯网站| 国产精品国产三级国产aⅴ入口 | 国产精品二区一区二区aⅴ污介绍| 91精品人妻一区二区| 久久免费视频一区| 一级日本黄色片| 国产传媒日韩欧美成人| 亚洲图片欧美另类| 成人精品国产一区二区4080| 日韩www视频| 26uuu国产在线精品一区二区| 国产呦小j女精品视频| 久久精品欧美日韩| 男女全黄做爰文章| 一区二区在线免费| 国产激情无码一区二区三区| 国产欧美一二三区| 中文字幕在线观看免费高清| 91日韩在线专区| 四虎国产精品成人免费入口| 狠狠色丁香婷婷综合久久片| 麻豆传媒在线看| 国产91综合一区在线观看| 日本少妇一区二区三区| 2023国产精品| 人妻aⅴ无码一区二区三区| 一色屋精品亚洲香蕉网站| 九九久久免费视频| 色婷婷av一区二区三区大白胸| 亚洲一区 中文字幕| 日韩一区国产二区欧美三区| 人妻精品一区二区三区| 国产一区二区美女视频| 网友自拍视频在线| 久久综合网hezyo| 亚洲妇女成熟| 国产综合香蕉五月婷在线| 久久三级中文| 久久伊人一区| 午夜精品毛片| 九九热只有这里有精品| 免费日韩一区二区| 做a视频在线观看| 91麻豆精东视频| 久久精品国产亚洲av久| 国产精品久久久久久久久免费丝袜| 日本妇女毛茸茸| 色av综合在线| 国产 日韩 欧美 综合| 一本色道久久综合狠狠躁篇的优点 | 奇米色一区二区| 911亚洲精选| 国产精品天天摸av网| 欧美成人精品欧美一级乱黄| 狠狠色噜噜狠狠狠狠97| 国产乱子伦精品无码码专区| 亚洲成av人综合在线观看| 成人黄色激情视频| 精品国产乱码久久久久久浪潮 | 亚洲1区在线| 欧美主播一区二区三区美女 久久精品人 | 国语对白在线刺激| 国产精品免费一区| 国产女人18毛片水真多18精品| 欧美一区二区三区成人久久片| 一级毛片免费高清中文字幕久久网| 免费在线a视频| 韩国精品在线观看| 欧美激情 一区| 狠狠综合久久av一区二区小说| 国产成人久久精品77777综合| 亚洲图中文字幕| 久草免费在线视频| 国产精品日韩一区二区| 一区二区中文| 亚洲小视频网站| 国产午夜亚洲精品羞羞网站| 欧美日韩人妻精品一区二区三区 | 国产欧美日韩综合精品一区二区三区| 日韩精品专区在线影院观看| 岛国在线大片| 国产91av在线| 色妞ww精品视频7777| 一道精品一区二区三区| 免费观看30秒视频久久| 极品人妻videosss人妻| 色婷婷狠狠综合| 日韩国产福利| 亚洲精品一区二区三区蜜桃下载| 免费观看在线黄色网| 国产精品久久久久aaaa九色| 国产图片一区| 亚洲一区二区精品在线| 亚洲欧美网站| 一起草在线视频| 午夜电影网一区| hs视频在线观看| 欧美成人欧美edvon| 18视频在线观看| 亚洲尤物视频网| 91日韩欧美| 中文字幕色网站| 国产精品久久久久久户外露出| 在线观看黄色国产| 日韩在线一区二区三区免费视频| 国产欧美在线观看免费| 伊人久久大香线蕉成人综合网| 青青草视频一区| 91精品国产闺蜜国产在线闺蜜| 欧美精品三级在线观看| 在线免费av网站| 91亚洲精品在线| 午夜精品一区二区三区国产| 日韩高清一二三区| 久久蜜臀中文字幕| 黄色av一区二区| 日韩在线视频网站| 日韩最新av| 日日摸日日碰夜夜爽av| 国产三级精品视频| 一级片在线观看视频| 欧美男插女视频| 国产精品白丝av嫩草影院| 欧美色图另类小说| 欧美国产亚洲另类动漫| 国产乱码在线观看| 欧美成人在线影院| 欧洲亚洲成人| 天天碰免费视频| 亚洲欧美另类久久久精品 | 欧美成人vr18sexvr| 欧美日韩在线观看首页| 婷婷五月色综合| 国产老妇另类xxxxx| 亚洲男人第一av| 伊是香蕉大人久久| 在线视频亚洲欧美中文| 茄子视频成人免费观看| 国产日韩欧美一区二区三区乱码| 一级全黄少妇性色生活片| 九九热最新视频//这里只有精品 | 日本在线观看不卡| 老司机一区二区| 国产成人精品亚洲男人的天堂| 亚洲欧美日韩高清| 日本精品在线播放| 免费成人在线视频网站|