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

RabbitMQ處理過(guò)慢,原來(lái)是一個(gè)SQL緩存框架導(dǎo)致的GC頻繁觸發(fā)

存儲(chǔ) 存儲(chǔ)軟件
處理過(guò)慢原因有很多,可能是干活的人少了,也可能這些人摸魚(yú)去了,總之工作不飽和,接下來(lái)看看這幫人有沒(méi)有摸魚(yú),從 線(xiàn)程池 看起。

[[434658]]

一、背景

1. 講故事

上個(gè)月底,有位朋友微信找到我,說(shuō)他的程序 多線(xiàn)程處理 RabbitMQ 時(shí)過(guò)慢,幫忙分析下什么原因,截圖如下:

這問(wèn)題拋出來(lái),有點(diǎn)懵逼,沒(méi)說(shuō)CPU爆高,也沒(méi)說(shuō)內(nèi)存泄漏,也沒(méi)說(shuō)程序卡死。。。鬼知道為啥 Rabbitmq 處理過(guò)慢哈?????? 

既然沒(méi)有一個(gè)緣由,那就往 freeze 這個(gè)方向去找吧,上 windbg 說(shuō)話(huà)。

二、Windbg 分析

1. 尋找 freeze 原因

處理過(guò)慢原因有很多,可能是干活的人少了,也可能這些人摸魚(yú)去了,總之工作不飽和,接下來(lái)看看這幫人有沒(méi)有摸魚(yú),從 線(xiàn)程池 看起。

  1. 0:000> !tp 
  2. CPU utilization: 81% 
  3. Worker Thread: Total: 187 Running: 172 Idle: 0 MaxLimit: 32767 MinLimit: 8 
  4. Work Request in Queue: 0 
  5. -------------------------------------- 
  6. Number of Timers: 0 
  7. -------------------------------------- 
  8. Completion Port Thread:Total: 1 Free: 1 MaxFree: 16 CurrentLimit: 1 MaxLimit: 1000 MinLimit: 8 

從輸出中看,當(dāng)前的 CPU=81%, 大概率是這個(gè)程序引起的,既然 CPU 過(guò)高,可能是某些計(jì)算密集型操作,可能是大量鎖導(dǎo)致的上下文切換,也可能是 GC 頻繁觸發(fā)所致。

2. 是 GC 觸發(fā)嗎?

本系列到這里,我相信有很多朋友應(yīng)該知道如何從線(xiàn)程棧上看是否為 GC 觸發(fā)所致,用命令 ~*e !dumpstack 經(jīng)過(guò)一通尋找,發(fā)現(xiàn)是 214 號(hào)線(xiàn)程觸發(fā)了 GC,如下圖所示:

用 !dumpstack 輸出的信息太多,為了讓信息更加簡(jiǎn)化,改用 !clrstack。

  1. 0:214> !clrstack  
  2. OS Thread Id: 0x290c (214) 
  3.         Child SP               IP Call Site 
  4. 000000bb2983c7d0 00007ffed8c3e335 System.Text.UTF8Encoding.GetString(Byte[], Int32, Int32) 
  5. 000000bb2983c810 00007ffe7aaecee9 StackExchange.Redis.RedisValue.op_Implicit(StackExchange.Redis.RedisValue) 
  6. 000000bb2983c860 00007ffe7aaecd92 xxxx.Util.Helper.RedisHelper.ConvertObj[[System.__Canon, mscorlib]](StackExchange.Redis.RedisValue) 
  7. 000000bb2983c8f0 00007ffe7abc3997 xxxx.Util.Helper.RedisHelper+c__DisplayClass29_0`1[[System.__Canon, mscorlib]].b__0(StackExchange.Redis.IDatabase) 
  8. 000000bb2983ca20 00007ffe7aaeaca0 xxxx.Util.Helper.RedisHelper.Do[[System.__Canon, mscorlib]](System.Func`2<StackExchange.Redis.IDatabase,System.__Canon>) 
  9. 000000bb2983caa0 00007ffe7abc3762 xxxx.Util.Helper.RedisHelper.HashGet[[System.__Canon, mscorlib]](System.String, System.String) 
  10. 000000bb2983cb40 00007ffe7abc2f3d xxxx.Implementation.xxx.GetCompany(System.String) 
  11. ... 
  12. 000000bb2983e170 00007ffe7ad2fadf xxx.xxx.MQ.xxx+c__DisplayClass21_0`1[[System.__Canon, mscorlib]].b__1() 
  13. 000000bb2983e1c0 00007ffed8c11862 System.Threading.Tasks.Task`1[[System.__Canon, mscorlib]].InnerInvoke() 
  14. 000000bb2983e220 00007ffed8c10937 System.Threading.Tasks.Task.Execute() 
  15. 000000bb2983e260 00007ffed8bc674e System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 
  16. 000000bb2983e330 00007ffed8bc65e7 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 
  17. 000000bb2983e360 00007ffed8c10bdd System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef) 
  18. 000000bb2983e410 00007ffed8c10303 System.Threading.Tasks.Task.ExecuteEntry(Boolean) 
  19. 000000bb2983e450 00007ffed8bcfa10 System.Threading.ThreadPoolWorkQueue.Dispatch() 
  20. 000000bb2983e8e8 00007ffed9d465d3 [DebuggerU2MCatchHandlerFrame: 000000bb2983e8e8]  

從卦中信息看,程序在 RedisHelper.HashGet 操作的過(guò)程中觸發(fā)了 GC,我去,難道是從 redis 中讀了什么大數(shù)據(jù)?接下來(lái)用 !clrstack -a 看看到底從redis中讀了個(gè)啥?

  1. 0:214> !clrstack -a 
  2. OS Thread Id: 0x290c (214) 
  3.         Child SP               IP Call Site 
  4. 000000bb2983c860 00007ffe7aaecd92 xxx.Util.Helper.RedisHelper.ConvertObj[[System.__Canon, mscorlib]](StackExchange.Redis.RedisValue) 
  5.     PARAMETERS: 
  6.         this (0x000000bb2983c8f0) = 0x000000bb182da3d0 
  7.         value (0x000000bb2983c960) = 0x000000bb18440778 
  8.     LOCALS: 
  9.         0x000000bb2983c8c4 = 0x0000000000000000 
  10.         0x000000bb2983c8a0 = 0x0000000000000000 
  11.         0x000000bb2983c898 = 0x0000000000000000 
  12.  
  13. 0:214> !do 0x000000bb18440778 
  14. Name:        System.Byte[] 
  15. MethodTable: 00007ffed8db93d0 
  16. EEClass:     00007ffed87f4dc8 
  17. Size:        6679(0x1a17) bytes 
  18. Array:       Rank 1, Number of elements 6655, Type Byte (Print Array) 
  19. Content:     {"ID":104x,"Code":"130x","xxx":"1304","xxx":"8888","Name":"...............","xxx":"...............","MqConnStr" 

可以看到,redis 讀了大概 6.6 k 的數(shù)據(jù),才這么點(diǎn)數(shù)據(jù),我還以為 幾十M 呢 ??????, 要說(shuō)這點(diǎn)東西就能觸發(fā)GC,我是不相信的 。

3. 到底是什么誘使了 GC 觸發(fā) ?

那這個(gè) 罪魁禍?zhǔn)?到底是誰(shuí)呢?其實(shí)仔細(xì)想一想,GC觸發(fā)無(wú)非就是將對(duì)象從 gen0 推到 gen1,然后由 gen1 推到 gen2,那朋友的這個(gè) RabbitMQ 處理慢,肯定是觸發(fā)了多次GC,才有了這個(gè)肉眼可見(jiàn)的處理慢。

這里就有一個(gè)突破點(diǎn),既然觸發(fā)多次GC,那gen2上肯定有很多帶根的對(duì)象,所以從這里入手比較好,用 !dumpgen 命令查看。

  1. 0:214> !dumpgen 2 -stat 
  2.        Count      Total Size      Type 
  3. ------------------------------------------------- 
  4.       87,738     24,925,316   System.Int32[] 
  5.      509,643     56,399,716   System.String 
  6.       83,077     65,760,888   System.Reflection.Emit.__FixupData[] 
  7.    2,158,346     69,067,072   System.Reflection.Emit.GenericMethodInfo 
  8.       92,388    172,765,392   System.Object[] 
  9.      796,870    179,587,796   **** FREE **** 
  10.   14,030,441    336,730,584   System.RuntimeMethodHandle 
  11.      428,376    348,743,274   System.Byte[] 

我去,gen2 上居然有 1.4 kw 的對(duì)象,這太讓人好奇了,接下來(lái)隨便抽幾個(gè) address ,看看它的引用根是個(gè)啥?

  1. 0:214> !dumpgen 2 -type System.RuntimeMethodHandle 
  2. Object             MT                    Size   Name 
  3. ------------------------------------------------------------------- 
  4. 000000bac9f8fe68   00007FFED8DB9978        24   System.RuntimeMethodHandle 
  5. 000000bac9f8fe80   00007FFED8DB9978        24   System.RuntimeMethodHandle 
  6. 000000bac9f8fe98   00007FFED8DB9978        24   System.RuntimeMethodHandle 
  7. 000000bac9f8feb0   00007FFED8DB9978        24   System.RuntimeMethodHandle 
  8. 000000bac9f8fec8   00007FFED8DB9978        24   System.RuntimeMethodHandle 
  9. ... 
  10. 000000baca1af510   00007FFED8DB9978        24   System.RuntimeMethodHandle 
  11. 000000baca1af548   00007FFED8DB9978        24   System.RuntimeMethodHandle 
  12. 000000baca1af560   00007FFED8DB9978        24   System.RuntimeMethodHandle 
  13. 000000baca1afd90   00007FFED8DB9978        24   System.RuntimeMethodHandle 
  14. 000000baca1afde0   00007FFED8DB9978        24   System.RuntimeMethodHandle 
  15.  
  16. 0:214> !gcroot 000000baca1afde0 
  17. Thread 187c0: 
  18.     000000baeeb5cb30 00007ffed8ba9c60 System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.__Canon, mscorlib]].FindEntry(System.__Canon) 
  19.         rsi:  
  20.             ->  000000baca4c6ef0 System.Collections.Generic.Dictionary`2[[System.Tuple`4[[System.String, mscorlib],[System.String, mscorlib],[System.Int32, mscorlib],[System.Int32, mscorlib]], mscorlib],[System.Delegate, mscorlib]] 
  21.             ->  000000badab3b8a0 System.Collections.Generic.Dictionary`2+Entry[[System.Tuple`4[[System.String, mscorlib],[System.String, mscorlib],[System.Int32, mscorlib],[System.Int32, mscorlib]], mscorlib],[System.Delegate, mscorlib]][] 
  22.             ->  000000baca1b5210 System.Func`2[[System.Data.IDataReader, System.Data],[xxx.BAR_AccountDC, xxxx]] 
  23.             ->  000000baca1ae8b0 System.Reflection.Emit.DynamicMethod+RTDynamicMethod 
  24.             ->  000000baca1ae7f8 System.Reflection.Emit.DynamicMethod 
  25.             ->  000000baca1b51b0 System.RuntimeMethodInfoStub 
  26.             ->  000000baca1b4a18 System.Reflection.Emit.DynamicResolver 
  27.             ->  000000baca1aea60 System.Reflection.Emit.DynamicScope 
  28.             ->  000000baca1aea78 System.Collections.Generic.List`1[[System.Object, mscorlib]] 
  29.             ->  000000baca1b3b20 System.Object[] 
  30.             ->  000000baca1afde0 System.RuntimeMethodHandle 

從引用鏈看,它是被 Dictionary 所持有,那我們就 dump 一下這個(gè) dictionary,看看是個(gè)啥。

  1. 0:214> !do 000000baca4c6ef0 
  2. Name:        System.Collections.Generic.Dictionary`2[[System.Tuple`4[[System.String, mscorlib],[System.String, mscorlib],[System.Int32, mscorlib],[System.Int32, mscorlib]], mscorlib],[System.Delegate, mscorlib]] 
  3. MethodTable: 00007ffe7a937f18 
  4. EEClass:     00007ffed87f7cb8 
  5. Size:        80(0x50) bytes 
  6. File:        C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll 
  7. Fields: 
  8.               MT    Field   Offset                 Type VT     Attr            Value Name 
  9. 00007ffed8dc3e30  400182a        8       System.Int32[]  0 instance 000000badaaa2c10 buckets 
  10. 00007ffed9874d38  400182b       10 ...non, mscorlib]][]  0 instance 000000badab3b8a0 entries 
  11. 00007ffed8dc3e98  400182c       38         System.Int32  1 instance            83000 count 
  12. 00007ffed8dc3e98  400182d       3c         System.Int32  1 instance            83000 version 
  13. 00007ffed8dc3e98  400182e       40         System.Int32  1 instance               -1 freeList 
  14. 00007ffed8dc3e98  400182f       44         System.Int32  1 instance                0 freeCount 
  15. 00007ffed8d9a430  4001830       18 ...Canon, mscorlib]]  0 instance 000000baca2ec958 comparer 
  16. 00007ffed8d9c550  4001831       20 ...Canon, mscorlib]]  0 instance 0000000000000000 keys 
  17. 00007ffed8dcef28  4001832       28 ...Canon, mscorlib]]  0 instance 0000000000000000 values 
  18. 00007ffed8dc1c98  4001833       30        System.Object  0 instance 0000000000000000 _syncRoot 
  19.  
  20. 0:214> !objsize 000000baca4c6ef0 
  21. sizeof(000000baca4c6ef0) = 1116325152 (0x4289c520) bytes (System.Collections.Generic.Dictionary`2[[System.Tuple`4[[System.String, mscorlib],[System.String, mscorlib],[System.Int32, mscorlib],[System.Int32, mscorlib]], mscorlib],[System.Delegate, mscorlib]]) 

可以看到,當(dāng)前dict 的 size= 8.3w,總大小為 1.1G, 然后用 !mdt 抽查一下字典內(nèi)容。

可以看出,字典中的item大概都是 key= select * from xxx where AccountNo= xxxx, value = Func ,

4. 查看源碼

從 !gcroot 中知道當(dāng)前根在 187c0 號(hào)線(xiàn)程,然后我們通過(guò)線(xiàn)程棧去尋找下源碼。

  1. 0:089> ~~[187c0]s 
  2. ntdll!NtWaitForSingleObject+0xa: 
  3. 00007ffe`e9ea06fa c3              ret 
  4. 0:089> !clrstack  
  5. OS Thread Id: 0x187c0 (89) 
  6.         Child SP               IP Call Site 
  7. 000000baeeb5caa0 00007ffed9718dfe System.Tuple`4[[System.__Canon, mscorlib],[System.__Canon, mscorlib],[System.Int32, mscorlib],[System.Int32, mscorlib]].System.Collections.IStructuralEquatable.GetHashCode(System.Collections.IEqualityComparer) 
  8. 000000baeeb5cb00 00007ffed8ba90a7 System.Collections.Generic.ObjectEqualityComparer`1[[System.__Canon, mscorlib]].GetHashCode(System.__Canon) 
  9. 000000baeeb5cb30 00007ffed8ba9c60 System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.__Canon, mscorlib]].FindEntry(System.__Canon) 
  10. 000000baeeb5cba0 00007ffed8bc53a4 System.Collections.Generic.Dictionary`2[[System.__Canon, mscorlib],[System.__Canon, mscorlib]].TryGetValue(System.__Canon, System.__Canon ByRef) 
  11. 000000baeeb5cbe0 00007ffe7abd8069 xxx.Internal.Cache`2[[System.__Canon, mscorlib],[System.__Canon, mscorlib]].Get(System.__Canon, System.Func`1<System.__Canon>) 
  12. 000000baeeb5cc50 00007ffe7abd6d52 xxx.Database+d__49`1[[System.__Canon, mscorlib]].MoveNext() 
  13. 000000baeeb5ccd0 00007ffed733768e System.Linq.Enumerable.FirstOrDefault[[System.__Canon, mscorlib]](System.Collections.Generic.IEnumerable`1<System.__Canon>) 
  14. 000000baeeb5cd40 00007ffe7af5489e xxx.xxx.ParsePapPayDebitRecord(xxx, xxx.BAR_AccountDC ByRef, System.String ByRef, xxx ByRef, Boolean, xxx, Boolean) 
  15. ... 

從線(xiàn)程棧看,程序做了一個(gè) db 查詢(xún)的操作,源碼大概如下:

  1. public static InvalidTxnCode ParsePapPayDebitRecord(xxx) 
  2.     sql = "select * FROM  [dbo].[xxx]  where AccountNO = '" + transRecord.AccountNO + "'"
  3.  IEnumerable<BAR_AccountDC> enumerable3 = new YiBll<BAR_AccountDC>(transRecord.AccountNO).QuerySql(sql); 

問(wèn)題就出現(xiàn)在這個(gè) sql 拼接上,底層的框架為了提高 mapping 速度,將 sql 和與之對(duì)應(yīng)的 Func<DataReader,Data>  做了緩存處理,由于每次sql都不一樣,這就導(dǎo)致底層的 dict越來(lái)越大,直到目前的 1.1 G。

三、總結(jié)

總的來(lái)說(shuō),本次事故是由于不斷增長(zhǎng)的 dict 在不斷的擠壓小對(duì)象堆,加之程序多線(xiàn)程火力全開(kāi)分配對(duì)象導(dǎo)致gc在小對(duì)象堆上的頻繁回收造成的 rabbitmq 處理過(guò)慢。

修改辦法就是將 sql 參數(shù)化。

  1. sql = "select * FROM [dbo].[xxx] where AccountNO = '" + transRecord.AccountNO + "'"

改成:

  1. sql = "select * FROM [dbo].[xxx] where AccountNO = @AccountNO";  

最后提一下,這個(gè)dump有一定的迷惑性,因?yàn)橛|發(fā)GC的線(xiàn)程并不是罪魁禍?zhǔn)祝徊贿^(guò)是壓死駱駝的那最后一根稻草罷了。

 

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

2020-11-12 07:32:53

JavaScript

2017-04-17 11:07:19

GC數(shù)組動(dòng)態(tài)擴(kuò)容

2025-02-17 09:22:16

MySQLSQL語(yǔ)句

2022-12-10 22:52:54

Redis緩存數(shù)據(jù)

2016-02-02 10:31:03

華三/大安全

2017-06-06 15:13:07

2022-12-14 07:32:40

InnoDBMySQL引擎

2025-03-20 14:18:57

AI算法模型

2021-02-07 08:13:18

@DateTimeFo@NumberFormSpring

2017-06-27 08:41:04

JVM設(shè)計(jì)缺陷GC

2024-02-06 09:30:25

Figma矩形矩形物理屬性

2022-05-05 08:55:12

工業(yè)物聯(lián)網(wǎng)IIoT

2023-05-22 15:58:11

2018-04-02 15:13:21

網(wǎng)絡(luò)

2023-02-15 08:17:38

2024-04-30 08:22:51

Figma圖形編輯變換矩陣

2021-02-02 09:13:11

索引SQL數(shù)據(jù)庫(kù)

2018-07-02 10:07:08

2020-05-26 08:52:36

Java JVM多態(tài)

2020-03-23 08:30:12

程序員男友感受
點(diǎn)贊
收藏

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

99ri日韩精品视频| 亚洲综合影视| 丝袜美腿一区二区三区| 国产一区二区久久精品| 国产5g成人5g天天爽| 9765激情中文在线| 国产精品理论片在线观看| 91丝袜脚交足在线播放| 依依成人综合网| 仙踪林久久久久久久999| 亚洲精品av在线| 中文字幕av专区| 国产福利片在线观看| 国产精品美女久久久久久| 国产伦精品一区二区三区高清版| 免费黄色片视频| 尹人成人综合网| 中文在线资源观看视频网站免费不卡| 在线观看欧美一区二区| 经典三级一区二区| 亚洲高清不卡在线观看| 一区不卡字幕| 日本一区高清| 国产成+人+日韩+欧美+亚洲| 国产精品成人va在线观看| 青青草原在线免费观看视频| 国产一卡不卡| 日韩精品在线视频美女| 国产成人精品一区二区在线小狼| 91精品影视| 精品magnet| 国产片侵犯亲女视频播放| 福利成人在线观看| 99re成人精品视频| 99porn视频在线| 在线观看黄色国产| 久久九九电影| 97在线精品国自产拍中文| 欧美88888| 视频一区中文| 亚洲美女www午夜| 精品国产鲁一鲁一区二区三区| 欧美成人ⅴideosxxxxx| 午夜精品一区二区三区免费视频| 男女啪啪的视频| bbbbbbbbbbb在线视频| www国产精品av| 精品国产乱码久久久久久蜜柚| 精品国产无码一区二区| 国产一区久久久| 91久久久久久| 97在线播放免费观看| 另类小说欧美激情| 国产精品香蕉在线观看| 国产精品露脸视频| 美女高潮久久久| 国产日韩欧美91| 亚洲图片中文字幕| 久久精品久久99精品久久| 国产精品吴梦梦| 91久久精品无码一区二区| 久久99最新地址| 成人有码视频在线播放| 999精品国产| 国产成人午夜99999| 国产成人精品一区二区三区福利| 成人午夜精品福利免费| 91在线观看免费视频| 欧美日韩在线不卡一区| 国产黄在线观看免费观看不卡| 久久精品亚洲麻豆av一区二区 | 区一区二在线观看| 免费日韩av| 日本一区二区三区四区视频| 99久久久久久久久| 美女诱惑一区二区| 亚洲综合社区网| 六月丁香色婷婷| 久久蜜臀精品av| 亚洲视频sss| 污污的网站在线看| 色综合天天综合在线视频| 天天色综合天天色| 精品国产乱码一区二区三区| 亚洲第一区第一页| 国产在线观看h| 天天影视综合| 97在线观看免费| 中文有码在线播放| 丁香婷婷综合激情五月色| 免费在线一区二区| 免费大片黄在线| 亚洲成人一区二区在线观看| 午夜精品久久久久久久无码| 123成人网| 欧美va在线播放| 亚洲av无码一区二区二三区| 国产韩日影视精品| 97超级碰碰人国产在线观看| 亚洲一级特黄毛片| av亚洲精华国产精华精| 亚洲色图自拍| 亚洲欧美小说色综合小说一区| 欧美日本在线看| 性久久久久久久久久久| 欧美日韩激情| 欧美激情视频网| 无码久久精品国产亚洲av影片| 国产又粗又猛又爽又黄91精品| 国产麻豆日韩| 久久精品视频免费看| 色综合天天综合网天天狠天天| 91欧美一区二区三区| 国产a久久精品一区二区三区 | 男女做暖暖视频| 免费精品视频| 国产经品一区二区| 巨大荫蒂视频欧美另类大| 一本一道综合狠狠老| 日本人妻一区二区三区| 久久在线免费| 国产精品久久二区| 日韩电影免费| 午夜在线电影亚洲一区| 亚洲精品mv在线观看| 精品国产乱码久久久| 韩国视频理论视频久久| 午夜精品久久久久久久91蜜桃| 中文字幕精品一区二区三区精品| 国产精品无码一区二区在线| 中文字幕亚洲在线观看 | 日本高清在线观看视频| 欧美日韩国产电影| 2019男人天堂| 久久亚洲欧美| 久久精品日产第一区二区三区精品版| 最爽无遮挡行房视频在线| 欧美另类变人与禽xxxxx| 久久中文字幕精品| 久久精品网址| 欧美凹凸一区二区三区视频 | 亚洲激情久久| 成人免费网站在线| 国产精品久久久久久福利| 欧美日韩亚洲综合一区| 免费看91的网站| 秋霞成人午夜伦在线观看| 欧美亚洲另类久久综合| 一区一区三区| 亚洲图片在线综合| 天天爱天天做天天爽| 中文一区一区三区高中清不卡| 免费激情视频在线观看| 欧美色就是色| 国产在线高清精品| 黄网页在线观看| 欧美电影免费观看完整版 | 色综合久久综合网97色综合| 午夜一区二区三区免费| 久久国产直播| 日韩国产高清一区| 亚洲欧洲一二区| 欧美成年人视频网站| 性欧美8khd高清极品| 亚洲国产成人av网| yy1111111| 久久中文在线| 亚洲在线视频一区二区| 欧美日本三级| 97久久国产精品| 国内av一区二区三区| 欧美日本精品一区二区三区| 伊人在线视频观看| eeuss鲁片一区二区三区在线观看 eeuss影院一区二区三区 | 欧美一级视频在线观看| eeuss影院www在线观看| 日韩一区二区三区四区| www.国产成人| 国产欧美日韩麻豆91| 99久久99精品| 99国产精品视频免费观看一公开| 欧洲精品码一区二区三区免费看| 成人在线观看免费播放| 欧美xxxx18性欧美| 视频福利在线| 欧美美女视频在线观看| 国产黄色片视频| 亚洲国产精品t66y| 精品人妻人人做人人爽夜夜爽| 亚洲尤物影院| 欧美 另类 交| 人人香蕉久久| 成人免费视频网址| 成人免费看视频网站| 久久久999国产| 香蕉久久一区二区三区| 欧美精品久久久久久久久老牛影院 | 亚洲xxxx天美| 色94色欧美sute亚洲13| 好吊日在线视频| 91啪亚洲精品| 18深夜在线观看免费视频| 久久经典综合| 草草草视频在线观看| 国产欧美日韩影院| 成人女人免费毛片| 婷婷成人av| 日本欧美在线视频| 中文字幕有码在线视频| 国产亚洲精品美女久久久| 亚洲伦理在线观看| 欧美精选在线播放| 无码人妻黑人中文字幕| 亚洲一区在线观看免费观看电影高清 | 国产剧情精品在线| 色悠悠亚洲一区二区| 国产第100页| 亚洲精品成a人| 亚洲天堂精品一区| 久久久久久久综合| 黄色国产在线视频| 国产馆精品极品| 天天操天天干天天做| 三级欧美在线一区| 欧美s码亚洲码精品m码| 在线精品观看| 日韩视频一二三| 91九色精品国产一区二区| 日本黑人久久| 精品国产乱码久久久久久果冻传媒 | 日韩a在线观看| 精品99一区二区| 亚洲第一免费视频| 日韩欧美的一区二区| 一级黄色录像大片| 欧美视频中文一区二区三区在线观看| 亚洲精品午夜国产va久久成人| 亚洲成人免费视频| 国产在线欧美在线| 亚洲影视资源网| 久久久久黄色片| 一个色在线综合| 久久免费视频播放| 亚洲综合一区在线| 激情五月少妇a| 亚洲国产中文字幕| 日本一级淫片色费放| 亚洲电影中文字幕在线观看| 久久精品久久国产| 亚洲成人av电影在线| 一区二区三区视频免费看| 亚洲成人av一区二区| 天天操天天摸天天干| 精品国产91久久久久久| 黄色在线免费观看| 色女孩综合影院| 亚洲一区二区三区网站| 第四色男人最爱上成人网| 狠狠躁18三区二区一区| 亚洲免费在线观看av| 欧美日韩免费一区| 日韩在线 中文字幕| 色婷婷综合久久久中文字幕| 好吊色在线视频| 欧美视频中文字幕| 国产免费的av| 精品国产一区久久| 手机亚洲第一页| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 亚洲区小说区| 日韩一区二区电影在线观看| 久久精品国产大片免费观看| 无码毛片aaa在线| 欧美三级特黄| 国产1区2区在线| 久久99精品一区二区三区三区| 69久久精品无码一区二区| 99久久99久久综合| 日本免费www| 一区二区三区在线免费| 亚洲天堂视频网站| 欧美日韩视频在线第一区 | 在线视频欧美亚洲| 日韩欧美一区二区不卡| 涩爱av在线播放一区二区| 中文字幕久久精品| 黄页网站大全在线免费观看| 日本久久亚洲电影| av日韩一区| 久久国产精品免费一区| 99欧美视频| 啊啊啊一区二区| 国产一区不卡精品| 香蕉视频黄色在线观看| 亚洲女子a中天字幕| 亚洲免费在线视频观看| 日韩欧美三级在线| av每日在线更新| 97久久精品在线| 国产精品一区二区三区www| 欧美精品欧美精品系列c| 天天射天天综合网| 日韩欧美xxxx| 不卡一二三区首页| 九九精品视频免费| 91国模大尺度私拍在线视频| 亚洲成人一二三区| xxxx性欧美| 亚洲欧美在线成人| 精品国产乱码久久久久久久软件| 天天综合精品| 别急慢慢来1978如如2| 99久久综合精品| 免费视频网站www| 91精品在线麻豆| аⅴ资源新版在线天堂| 国产91精品视频在线观看| 伊色综合久久之综合久久| 亚洲砖区区免费| 丝袜美腿亚洲综合| 不卡一区二区在线观看| 亚洲一区二区三区国产| 国产视频在线观看视频| 中文字幕久精品免费视频| 久久久一本精品| 久久久久久久久久久一区| 影音先锋亚洲精品| av影片在线播放| 亚洲免费色视频| 国产乱码精品一区二区三区精东| 一区二区三区日韩在线| 亚洲欧洲自拍| 免费看污久久久| 夜夜嗨av一区二区三区网站四季av| 国产探花在线观看视频| 国产精品另类一区| 一级黄色大片免费观看| 中文字幕综合在线| 久久精品国产福利| 中日韩在线视频| 九九久久精品视频 | 亚洲高清视频的网址| 丰满人妻av一区二区三区| 欧美成人在线免费视频| 精品视频在线观看免费观看| 国产成年人在线观看| 国产一二精品视频| 希岛爱理中文字幕| 日韩欧美不卡一区| 男女在线观看视频| 国产久一道中文一区| 亚洲精品欧洲| 蜜桃av免费看| 欧美日韩一区二区三区视频| 91精彩在线视频| 国产美女久久精品| 综合国产精品| 国产在线观看免费播放| 午夜精品久久久久久久蜜桃app | 久久久久亚洲蜜桃| 日本欧美www| 精品国内亚洲在观看18黄| 国产麻豆一区二区三区| 拔插拔插海外华人免费| 91日韩在线专区| wwwwww在线观看| 久久夜精品香蕉| 国内露脸中年夫妇交换精品| 成人综合视频在线| 中文字幕va一区二区三区| 国产色综合视频| 久久久久久中文| 国产一区二区精品福利地址| 黄大色黄女片18第一次| 一区二区三区毛片| 免费一级在线观看| 成人激情视频在线观看| 极品少妇一区二区三区| 亚洲AV无码国产成人久久| 欧美日韩国产影片| 搞黄网站在线看| 色乱码一区二区三在线看| 国产一区二区免费在线| 中文字幕在线观看视频网站| 深夜福利一区二区| 成人线上播放| 美女一区二区三区视频| 亚洲自拍与偷拍| 国产日韩精品在线看| 97免费高清电视剧观看| 久久国产一二区| 久草视频在线资源| 亚洲欧美激情一区| 136福利精品导航| 狠狠热免费视频| 亚洲成a人v欧美综合天堂下载| wwwxxx在线观看| 国产伦精品一区二区| 黄一区二区三区| 好吊色在线视频|