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

一次 堆外內(nèi)存泄露 爆肝到半夜......

存儲(chǔ) 存儲(chǔ)架構(gòu)
為了防止誤判,筆者使用了pmap查看內(nèi)存分布,發(fā)現(xiàn)大量的64M的地址;而這些地址空間不在jcmd命令所給出的地址空間里面,基本上就斷定就是這些64M的內(nèi)存所導(dǎo)致。

為了更好地實(shí)現(xiàn)對(duì)項(xiàng)目的管理,我們將組內(nèi)一個(gè)項(xiàng)目遷移到MDP框架(基于Spring Boot),隨后我們就發(fā)現(xiàn)系統(tǒng)會(huì)頻繁報(bào)出Swap區(qū)域使用量過(guò)高的異常。筆者被叫去幫忙查看原因,發(fā)現(xiàn)配置了4G堆內(nèi)內(nèi)存,但是實(shí)際使用的物理內(nèi)存竟然高達(dá)7G,確實(shí)不正常。

JVM參數(shù)配置是:

-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -XX:+AlwaysPreTouch -XX:ReservedCodeCacheSize=128m -XX:InitialCodeCacheSize=128m, -Xss512k -Xmx4g -Xms4g,-XX:+UseG1GC -XX:G1HeapRegionSize=4M

實(shí)際使用的物理內(nèi)存如下圖所示:

圖片

top命令顯示的內(nèi)存情況

排查過(guò)程?

1、使用Java層面的工具定位內(nèi)存區(qū)域(堆內(nèi)內(nèi)存、Code區(qū)域或者使用unsafe.allocateMemory和DirectByteBuffer申請(qǐng)的堆外內(nèi)存)

筆者在項(xiàng)目中添加-XX:NativeMemoryTracking=detail?JVM參數(shù)重啟項(xiàng)目,使用命令jcmd pid VM.native_memory detail查看到的內(nèi)存分布如下:

圖片

jcmd顯示的內(nèi)存情況

發(fā)現(xiàn)命令顯示的committed的內(nèi)存小于物理內(nèi)存,因?yàn)閖cmd命令顯示的內(nèi)存包含堆內(nèi)內(nèi)存、Code區(qū)域、通過(guò)unsafe.allocateMemory和DirectByteBuffer申請(qǐng)的內(nèi)存,但是不包含其他Native Code(C代碼)申請(qǐng)的堆外內(nèi)存。所以猜測(cè)是使用Native Code申請(qǐng)內(nèi)存所導(dǎo)致的問(wèn)題。關(guān)注公號(hào):碼猿技術(shù)專欄,回復(fù)關(guān)鍵詞:1111 獲取阿里內(nèi)部Java性能調(diào)優(yōu)手冊(cè)!

為了防止誤判,筆者使用了pmap查看內(nèi)存分布,發(fā)現(xiàn)大量的64M的地址;而這些地址空間不在jcmd命令所給出的地址空間里面,基本上就斷定就是這些64M的內(nèi)存所導(dǎo)致。

圖片

pmap顯示的內(nèi)存情況

2、使用系統(tǒng)層面的工具定位堆外內(nèi)存

因?yàn)楣P者已經(jīng)基本上確定是Native Code所引起,而Java層面的工具不便于排查此類問(wèn)題,只能使用系統(tǒng)層面的工具去定位問(wèn)題。

首先,使用了gperftools去定位問(wèn)題;

gperftools的使用方法可以參考:https://github.com/gperftools/gperftools,

gperftools的監(jiān)控如下:

圖片

gperftools監(jiān)控

從上圖可以看出:使用malloc申請(qǐng)的的內(nèi)存最高到3G之后就釋放了,之后始終維持在700M-800M。筆者第一反應(yīng)是:難道Native Code中沒(méi)有使用malloc申請(qǐng),直接使用mmap/brk申請(qǐng)的?(gperftools原理就使用動(dòng)態(tài)鏈接的方式替換了操作系統(tǒng)默認(rèn)的內(nèi)存分配器(glibc)。)

然后,使用strace去追蹤系統(tǒng)調(diào)用;

因?yàn)槭褂胓perftools沒(méi)有追蹤到這些內(nèi)存,于是直接使用命令“strace -f -e”brk,mmap,munmap” -p pid”追蹤向OS申請(qǐng)內(nèi)存請(qǐng)求,但是并沒(méi)有發(fā)現(xiàn)有可疑內(nèi)存申請(qǐng)。strace監(jiān)控如下圖所示:

圖片

strace監(jiān)控

接著,使用GDB去dump可疑內(nèi)存

因?yàn)槭褂胹trace沒(méi)有追蹤到可疑內(nèi)存申請(qǐng);于是想著看看內(nèi)存中的情況。就是直接使用命令gdp -pid pid?進(jìn)入GDB之后,然后使用命令dump memory mem.bin startAddress endAddress?dump內(nèi)存,其中startAddress和endAddress可以從/proc/pid/smaps中查找。然后使用strings mem.bin查看dump的內(nèi)容,如下:

圖片

gperftools監(jiān)控

從內(nèi)容上來(lái)看,像是解壓后的JAR包信息。關(guān)注公號(hào):碼猿技術(shù)專欄,回復(fù)關(guān)鍵詞:1111 獲取阿里內(nèi)部Java性能調(diào)優(yōu)手冊(cè)!;讀取JAR包信息應(yīng)該是在項(xiàng)目啟動(dòng)的時(shí)候,那么在項(xiàng)目啟動(dòng)之后使用strace作用就不是很大了。所以應(yīng)該在項(xiàng)目啟動(dòng)的時(shí)候使用strace,而不是啟動(dòng)完成之后。

再次,項(xiàng)目啟動(dòng)時(shí)使用strace去追蹤系統(tǒng)調(diào)用

項(xiàng)目啟動(dòng)使用strace追蹤系統(tǒng)調(diào)用,發(fā)現(xiàn)確實(shí)申請(qǐng)了很多64M的內(nèi)存空間,截圖如下:

圖片

strace監(jiān)控

使用該mmap申請(qǐng)的地址空間在pmap對(duì)應(yīng)如下:

圖片

strace申請(qǐng)內(nèi)容對(duì)應(yīng)的pmap地址空間

最后,使用jstack去查看對(duì)應(yīng)的線程;

因?yàn)閟trace命令中已經(jīng)顯示申請(qǐng)內(nèi)存的線程ID。直接使用命令jstack pid去查看線程棧,找到對(duì)應(yīng)的線程棧(注意10進(jìn)制和16進(jìn)制轉(zhuǎn)換)如下:

圖片

strace申請(qǐng)空間的線程棧

這里基本上就可以看出問(wèn)題來(lái)了:MCC(美團(tuán)統(tǒng)一配置中心)使用了Reflections進(jìn)行掃包,底層使用了Spring Boot去加載JAR。因?yàn)榻鈮篔AR使用Inflater類,需要用到堆外內(nèi)存,然后使用Btrace去追蹤這個(gè)類,棧如下:

圖片

btrace追蹤棧

然后查看使用MCC的地方,發(fā)現(xiàn)沒(méi)有配置掃包路徑,默認(rèn)是掃描所有的包。于是修改代碼,配置掃包路徑,發(fā)布上線后內(nèi)存問(wèn)題解決。

3、為什么堆外內(nèi)存沒(méi)有釋放掉呢?

雖然問(wèn)題已經(jīng)解決了,但是有幾個(gè)疑問(wèn):

  • 為什么使用舊的框架沒(méi)有問(wèn)題?
  • 為什么堆外內(nèi)存沒(méi)有釋放?
  • 為什么內(nèi)存大小都是64M,JAR大小不可能這么大,而且都是一樣大?
  • 為什么gperftools最終顯示使用的的內(nèi)存大小是700M左右,解壓包真的沒(méi)有使用malloc申請(qǐng)內(nèi)存嗎?

帶著疑問(wèn),筆者直接看了一下Spring Boot Loader那一塊的源碼。發(fā)現(xiàn)Spring Boot對(duì)Java JDK的InflaterInputStream進(jìn)行了包裝并且使用了Inflater,而Inflater本身用于解壓JAR包的需要用到堆外內(nèi)存。

而包裝之后的類ZipInflaterInputStream沒(méi)有釋放Inflater持有的堆外內(nèi)存。于是筆者以為找到了原因,立馬向Spring Boot社區(qū)反饋了這個(gè)bug。但是反饋之后,筆者就發(fā)現(xiàn)Inflater這個(gè)對(duì)象本身實(shí)現(xiàn)了finalize方法,在這個(gè)方法中有調(diào)用釋放堆外內(nèi)存的邏輯。也就是說(shuō)Spring Boot依賴于GC釋放堆外內(nèi)存。

筆者使用jmap查看堆內(nèi)對(duì)象時(shí),發(fā)現(xiàn)已經(jīng)基本上沒(méi)有Inflater這個(gè)對(duì)象了。于是就懷疑GC的時(shí)候,沒(méi)有調(diào)用finalize。帶著這樣的懷疑,筆者把Inflater進(jìn)行包裝在Spring Boot Loader里面替換成自己包裝的Inflater,在finalize進(jìn)行打點(diǎn)監(jiān)控,結(jié)果finalize方法確實(shí)被調(diào)用了。于是筆者又去看了Inflater對(duì)應(yīng)的C代碼,發(fā)現(xiàn)初始化的使用了malloc申請(qǐng)內(nèi)存,end的時(shí)候也調(diào)用了free去釋放內(nèi)存。

此刻,筆者只能懷疑free的時(shí)候沒(méi)有真正釋放內(nèi)存,便把Spring Boot包裝的InflaterInputStream替換成Java JDK自帶的,發(fā)現(xiàn)替換之后,內(nèi)存問(wèn)題也得以解決了。

這時(shí),再返過(guò)來(lái)看gperftools的內(nèi)存分布情況,發(fā)現(xiàn)使用Spring Boot時(shí),內(nèi)存使用一直在增加,突然某個(gè)點(diǎn)內(nèi)存使用下降了好多(使用量直接由3G降為700M左右)。這個(gè)點(diǎn)應(yīng)該就是GC引起的,內(nèi)存應(yīng)該釋放了,但是在操作系統(tǒng)層面并沒(méi)有看到內(nèi)存變化,那是不是沒(méi)有釋放到操作系統(tǒng),被內(nèi)存分配器持有了呢?

繼續(xù)探究,發(fā)現(xiàn)系統(tǒng)默認(rèn)的內(nèi)存分配器(glibc 2.12版本)和使用gperftools內(nèi)存地址分布差別很明顯,2.5G地址使用smaps發(fā)現(xiàn)它是屬于Native Stack。內(nèi)存地址分布如下:

圖片

gperftools顯示的內(nèi)存地址分布

到此,基本上可以確定是內(nèi)存分配器在搗鬼;搜索了一下glibc 64M,發(fā)現(xiàn)glibc從2.11開始對(duì)每個(gè)線程引入內(nèi)存池(64位機(jī)器大小就是64M內(nèi)存),原文如下:

圖片

glib內(nèi)存池說(shuō)明

按照文中所說(shuō)去修改MALLOC_ARENA_MAX環(huán)境變量,發(fā)現(xiàn)沒(méi)什么效果。查看tcmalloc(gperftools使用的內(nèi)存分配器)也使用了內(nèi)存池方式。

為了驗(yàn)證是內(nèi)存池搞的鬼,筆者就簡(jiǎn)單寫個(gè)不帶內(nèi)存池的內(nèi)存分配器。使用命令gcc zjbmalloc.c -fPIC -shared -o zjbmalloc.so?生成動(dòng)態(tài)庫(kù),然后使用export LD_PRELOAD=zjbmalloc.so替換掉glibc的內(nèi)存分配器。

其中代碼Demo如下:

#include<sys/mman.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
//作者使用的64位機(jī)器,sizeof(size_t)也就是sizeof(long)
void* malloc ( size_t size ){
long* ptr = mmap( 0, size + sizeof(long), PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 );
if (ptr == MAP_FAILED) {
return NULL;
}
*ptr = size; // First 8 bytes contain length.
return (void*)(&ptr[1]); // Memory that is after length variable
}

void *calloc(size_t n, size_t size) {
void* ptr = malloc(n * size);
if (ptr == NULL) {
return NULL;
}
memset(ptr, 0, n * size);
return ptr;
}
void *realloc(void *ptr, size_t size){
if (size == 0) {
free(ptr);
return NULL;
}
if (ptr == NULL) {
return malloc(size);
}
long *plen = (long*)ptr;
plen--; // Reach top of memory
long len = *plen;
if (size <= len) {
return ptr;
}
void* rptr = malloc(size);
if (rptr == NULL) {
free(ptr);
return NULL;
}
rptr = memcpy(rptr, ptr, len);
free(ptr);
return rptr;
}

void free (void* ptr ){
if (ptr == NULL) {
return;
}
long *plen = (long*)ptr;
plen--; // Reach top of memory
long len = *plen; // Read length
munmap((void*)plen, len + sizeof(long));
}

通過(guò)在自定義分配器當(dāng)中埋點(diǎn)可以發(fā)現(xiàn)其實(shí)程序啟動(dòng)之后應(yīng)用實(shí)際申請(qǐng)的堆外內(nèi)存始終在700M-800M之間,gperftools監(jiān)控顯示內(nèi)存使用量也是在700M-800M左右。但是從操作系統(tǒng)角度來(lái)看進(jìn)程占用的內(nèi)存差別很大(這里只是監(jiān)控堆外內(nèi)存)。

筆者做了一下測(cè)試,使用不同分配器進(jìn)行不同程度的掃包,占用的內(nèi)存如下:

圖片

內(nèi)存測(cè)試對(duì)比

為什么自定義的malloc申請(qǐng)800M,最終占用的物理內(nèi)存在1.7G呢?

因?yàn)樽远x內(nèi)存分配器采用的是mmap分配內(nèi)存,mmap分配內(nèi)存按需向上取整到整數(shù)個(gè)頁(yè),所以存在著巨大的空間浪費(fèi)。通過(guò)監(jiān)控發(fā)現(xiàn)最終申請(qǐng)的頁(yè)面數(shù)目在536k個(gè)左右,那實(shí)際上向系統(tǒng)申請(qǐng)的內(nèi)存等于512k * 4k(pagesize) = 2G。為什么這個(gè)數(shù)據(jù)大于1.7G呢?

因?yàn)椴僮飨到y(tǒng)采取的是延遲分配的方式,通過(guò)mmap向系統(tǒng)申請(qǐng)內(nèi)存的時(shí)候,系統(tǒng)僅僅返回內(nèi)存地址并沒(méi)有分配真實(shí)的物理內(nèi)存。只有在真正使用的時(shí)候,系統(tǒng)產(chǎn)生一個(gè)缺頁(yè)中斷,然后再分配實(shí)際的物理Page。

總結(jié)

圖片

流程圖

整個(gè)內(nèi)存分配的流程如上圖所示。MCC掃包的默認(rèn)配置是掃描所有的JAR包。在掃描包的時(shí)候,Spring Boot不會(huì)主動(dòng)去釋放堆外內(nèi)存,導(dǎo)致在掃描階段,堆外內(nèi)存占用量一直持續(xù)飆升。當(dāng)發(fā)生GC的時(shí)候,Spring Boot依賴于finalize機(jī)制去釋放了堆外內(nèi)存;但是glibc為了性能考慮,并沒(méi)有真正把內(nèi)存歸返到操作系統(tǒng),而是留下來(lái)放入內(nèi)存池了,導(dǎo)致應(yīng)用層以為發(fā)生了“內(nèi)存泄漏”。

所以修改MCC的配置路徑為特定的JAR包,問(wèn)題解決。目前在Spring Boot的版本(2.0.5.RELEASE)已經(jīng)做了修改,在ZipInflaterInputStream主動(dòng)釋放了堆外內(nèi)存不再依賴GC;所以Spring Boot升級(jí)到最新版本,這個(gè)問(wèn)題也可以得到解決。

責(zé)任編輯:武曉燕 來(lái)源: 碼猿技術(shù)專欄
相關(guān)推薦

2020-08-27 21:36:50

JVM內(nèi)存泄漏

2023-01-04 18:32:31

線上服務(wù)代碼

2023-07-06 10:11:38

.NET模式dump

2023-06-08 08:43:36

2012-04-13 10:11:58

Windows 8泄露

2021-09-26 13:21:20

Python微服務(wù)JAVA

2017-01-11 14:02:32

JVM源碼內(nèi)存

2022-07-03 20:31:59

JVMJava虛擬機(jī)

2021-10-27 07:30:32

.NETCPU論壇

2023-09-26 01:11:58

MES非托管泄露

2018-07-11 10:24:33

數(shù)據(jù)恢復(fù)數(shù)據(jù)刪除

2014-03-06 09:35:40

Git提交

2023-10-07 13:28:53

.NET軟件賬本

2010-02-26 09:29:15

2021-12-02 07:50:30

NFS故障內(nèi)存

2021-04-21 07:38:41

CPU游戲站程序

2023-07-31 22:29:20

CPU.NETAPI

2023-05-12 17:42:22

CPUMES系統(tǒng)

2024-08-08 11:21:01

2021-09-13 10:14:28

代碼開發(fā)命令
點(diǎn)贊
收藏

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

久久中文字幕在线| 欧美色videos| 国产一级二级三级精品| 一级黄色在线视频| 亚洲午夜精品一区 二区 三区| 欧美一区二区久久| 女人天堂av手机在线| jyzzz在线观看视频| 国产精品66部| 日韩免费中文字幕| 久久久国产精华液| 精品一区二区三| 欧美videossexotv100| 熟妇人妻va精品中文字幕| 91在线中文| 国产欧美一区二区在线| av电影成人| 中文字幕在线播放av| 激情丁香综合| 久久精品在线视频| 国产精品20p| 欧美深夜视频| 精品三级在线观看| 加勒比av中文字幕| 国产精品久久久久av电视剧| 亚洲一二三区不卡| 26uuu成人| 黄网在线观看| 97久久超碰国产精品| 成人黄色网免费| 国产精品无码一区| 久久黄色网页| 91禁国产网站| 久久久夜色精品| 伊人色**天天综合婷婷| 中文字幕欧美日韩精品| 免费a在线观看播放| 亚洲2区在线| 51精品久久久久久久蜜臀| 国产情侣av自拍| 麻豆视频在线观看免费网站黄| 一区二区在线观看视频在线观看| 亚洲va韩国va欧美va精四季| 四虎影院在线播放| av中文字幕亚洲| 国产富婆一区二区三区| 国产黄a三级三级三级| 久久99九九99精品| 国产一区二区在线免费| 亚洲男人天堂网址| 日本视频一区二区三区| 国产精品扒开腿爽爽爽视频 | 亚洲女同中文字幕| 日韩中文有码在线视频| 九九热久久免费视频| 成人在线视频免费观看| 亚洲小视频在线观看| 精品国产av无码| 久久不见久久见免费视频7| 日韩毛片在线观看| 51妺嘿嘿午夜福利| 精品免费视频| 精品国模在线视频| 国产探花在线播放| 黄色另类av| 午夜精品久久久久久久99热浪潮| 免费毛片一区二区三区| 午夜在线一区| 国产精品嫩草影院久久久| 亚洲一区二区天堂| 国产一区二区调教| 国产成人精品一区二区三区福利| 免费a级片在线观看| aaa国产一区| 欧美一区二区影视| 欧美性猛片aaaaaaa做受| 亚洲91在线| 91麻豆精品国产综合久久久久久| jizzzz日本| 日本在线一区二区三区| 91精品久久| 午夜电影亚洲| 欧美疯狂性受xxxxx另类| 国产偷人妻精品一区二区在线| 久久91在线| 日韩国产精品一区| 无遮挡aaaaa大片免费看| 91禁在线观看| 美女在线视频一区| 亚洲精品日韩激情在线电影| 亚洲av无码一区二区三区dv | 亚洲欧美久久久久| 91麻豆精品| 亚洲第一区中文99精品| 亚洲AV无码国产成人久久| 成人免费在线播放| 久久最新资源网| 三级黄色在线视频| 久久成人av少妇免费| 国产精品国产亚洲精品看不卡15 | 日日骚av一区| 久久无码精品丰满人妻| 日日噜噜夜夜狠狠视频欧美人| 国产欧美一区二区三区在线看| 亚洲va天堂va欧美ⅴa在线| 久久女同互慰一区二区三区| 永久免费精品视频网站| 久久青草伊人| 3d成人h动漫网站入口| 漂亮人妻被黑人久久精品| 日本不卡电影| 91精品国产高清久久久久久久久| 国产精品久久久久久久久毛片| 99精品一区二区三区| 三级网在线观看| 日韩精品一区二区三区| 精品久久久久久久久久久久久久久久久| 精品少妇人妻一区二区黑料社区 | 超碰97久久| 中文字幕亚洲国产| 久久精品视频1| 大尺度一区二区| 亚洲一区二区三区四区中文| 亚洲精品一区| 亚洲精品一线二线三线无人区| 手机看片日韩av| 国产欧美一级| 粉嫩高清一区二区三区精品视频| 蜜桃视频在线观看www社区| 欧美日韩中文在线观看| 性生交大片免费看l| 欧美www视频在线观看| 日本国产高清不卡| 香蕉久久一区二区三区| 亚洲自拍偷拍九九九| 91精品999| 日韩免费在线| 国产成人亚洲综合| 手机亚洲第一页| 午夜精品爽啪视频| 黄色性视频网站| 激情婷婷久久| 国产高清一区视频| 美足av综合网| 欧美成人免费网站| 精品爆乳一区二区三区无码av| 黑人精品欧美一区二区蜜桃| 亚洲成人网上| 91超碰碰碰碰久久久久久综合| 亚洲美女av网站| 亚洲 欧美 日韩 在线| 91麻豆精品视频| 人妻丰满熟妇av无码区app| 亚洲制服欧美另类| 日韩av电影中文字幕| 欧美在线观看在线观看| 欧美日韩一区免费| 日本xxx在线播放| 久久99伊人| 日本中文不卡| 99久久婷婷国产综合精品首页| 国产亚洲在线播放| 91麻豆国产在线| 亚洲精品日韩专区silk| 野花视频免费在线观看| 亚洲精品午夜av福利久久蜜桃| 91精品在线观| 丰满诱人av在线播放| 亚洲国产精品va在线看黑人| 91在线看视频| 中文字幕欧美三区| 午夜免费福利网站| 亚洲视频福利| 免费在线一区二区| 成人日韩精品| 美日韩精品免费视频| 亚洲欧美激情国产综合久久久| 亚洲va国产va欧美va观看| 久久人人爽人人爽人人片| 日韩国产一区二| 三级网在线观看| 久久综合另类图片小说| 国产97在线观看| 黄色网页在线观看| 亚洲国内精品在线| 波多野结衣一本一道| 日韩美女视频一区二区| 在线xxxxx| 日本不卡视频一二三区| 国产高清不卡无码视频| 亚洲精品456| 成人黄色在线免费| 深夜av在线| www.亚洲天堂| 色视频免费在线观看| 欧美日韩电影在线播放| 日韩精品一区三区| 国产精品美女久久久久久久| 风韵丰满熟妇啪啪区老熟熟女| 老鸭窝毛片一区二区三区| 国产高清精品软男同| 欧美色资源站| 91福利入口| 美女网站视频一区| 隔壁老王国产在线精品| 亚洲视频tv| 日韩精品极品毛片系列视频| 国产精品一区二区免费视频| 欧美日韩亚洲一区二| 538精品在线视频| 国产亚洲美州欧州综合国| 四虎国产精品免费| 老司机免费视频一区二区三区| 免费一级特黄毛片| 影音先锋日韩在线| 亚洲成色www久久网站| 老牛影视av一区二区在线观看| 成人免费在线视频网站| 在线成人视屏| 高清在线视频日韩欧美| 18+视频在线观看| 中文字幕精品久久久久| 三级视频在线播放| 亚洲高清久久久久久| 国产日产亚洲系列最新| 欧美午夜电影网| 五月婷婷视频在线| 亚洲电影中文字幕在线观看| 顶臀精品视频www| 国产精品初高中害羞小美女文| 欧美色图亚洲激情| 93久久精品日日躁夜夜躁欧美| 三上悠亚 电影| 韩国精品免费视频| 中文字幕国产免费| 日本免费新一区视频 | 九九久久精品视频| 青青在线免费观看视频| 蜜桃伊人久久| 日韩视频在线免费看| 99精品久久| 国产3p露脸普通话对白| 激情欧美国产欧美| 成年人午夜免费视频| 在线播放不卡| www插插插无码视频网站| 很黄很黄激情成人| 婷婷无套内射影院| 在线亚洲自拍| 成年人观看网站| 久久亚洲精品伦理| 成人一区二区三| 日本中文在线一区| 亚洲综合欧美激情| 韩国成人福利片在线播放| caoporm在线视频| 国产酒店精品激情| 亚洲 自拍 另类 欧美 丝袜| 国产寡妇亲子伦一区二区| 丰满少妇一区二区三区专区| 国产不卡视频在线播放| 香蕉视频污视频| gogogo免费视频观看亚洲一| 艳妇乳肉亭妇荡乳av| 久久综合丝袜日本网| 韩国女同性做爰三级| 国产精品日产欧美久久久久| 秋霞欧美一区二区三区视频免费| 亚洲狠狠丁香婷婷综合久久久| 久草视频免费在线播放| 欧美日韩美女在线观看| 久久精品五月天| 69精品人人人人| 风流少妇一区二区三区91| 日韩av在线网站| 大乳在线免费观看| 日韩在线播放av| 黑人玩欧美人三根一起进| 8090成年在线看片午夜| 草民电影神马电影一区二区| 91精品视频在线播放| 国产+成+人+亚洲欧洲在线| 免费看污久久久| 天天久久综合| 免费成人在线视频网站| 理论片日本一区| 亚洲美女在线播放| 国产精品乱码久久久久久| 久久久久久久久97| 在线观看亚洲一区| 国产后入清纯学生妹| 亚洲免费一级电影| 污污网站在线看| 国产v综合ⅴ日韩v欧美大片| 久久久久久亚洲精品美女| 精品欧美日韩| 一本精品一区二区三区| 男女av免费观看| 国产福利不卡视频| 日韩女同一区二区三区 | av不卡在线观看| 黄色av免费播放| 婷婷久久综合九色综合伊人色| 丰满人妻一区二区三区四区| 精品国产乱码久久久久久影片| 第一福利在线| 97精品在线视频| 亚洲美女色播| 日本一区二区三区www| 亚洲欧美综合| 视色视频在线观看| 久久九九国产精品| 精品无码一区二区三区电影桃花| 欧美色图天堂网| 欧美日韩影视| 性欧美亚洲xxxx乳在线观看| 精品三级在线| 久久婷婷人人澡人人喊人人爽| 一本一道久久综合狠狠老| 免费午夜视频在线观看| www.亚洲人| 久草中文在线视频| 91精品国产综合久久久久久漫画 | 日本私人网站在线观看| 欧美黑人xxx| 一区二区三区无毛| 亚洲午夜精品福利| 日本中文字幕一区二区有限公司| 欧美做受喷浆在线观看| 亚洲国产另类av| 99精品人妻无码专区在线视频区| 在线成人激情视频| 成人线上视频| 欧美日韩一区二区视频在线观看| 激情综合在线| 日本天堂在线播放| 亚洲综合一区二区| 国内精品偷拍视频| 麻豆乱码国产一区二区三区| 成人亚洲精品| 香蕉精品视频在线| 精品一区二区三区不卡| 国产在线观看免费视频软件| 欧美午夜免费电影| 亚洲s色大片| 91影视免费在线观看| 国产精品久久久久蜜臀| 性欧美videossex精品| 中文字幕免费不卡| 91丨九色丨丰满| 久久视频精品在线| 亚洲午夜精品| 精品国产av无码一区二区三区| 成人久久18免费网站麻豆| 日本三级中文字幕| 日韩大片在线观看视频| 亚洲黄色网址| 午夜精品区一区二区三| 激情欧美日韩一区二区| www.av成人| 亚洲成人精品视频在线观看| 98色花堂精品视频在线观看| 久久亚洲国产精品日日av夜夜| 久久亚洲国产精品一区二区| 精品在线观看一区| 日韩欧美一卡二卡| 女海盗2成人h版中文字幕| 日本精品国语自产拍在线观看| 久久最新视频| 黑人操日本美女| 欧美www视频| 欧美特大特白屁股xxxx| 亚洲在线不卡| 国产成人精品三级麻豆| 日韩 欧美 亚洲| 一本色道久久综合亚洲精品小说| 小说区图片区亚洲| 免费看国产一级片| 欧美国产国产综合| www.国产三级| 庆余年2免费日韩剧观看大牛| 日韩免费久久| 国产精品偷伦视频免费观看了 | 国产h视频在线播放| 国产日韩高清在线| aaaa一级片| 欧美亚洲视频在线观看| 色小子综合网| xxxxxx黄色| 在线播放/欧美激情| 国产不卡123| 中文字幕中文字幕在线中心一区| 白白色 亚洲乱淫| 在线视频免费观看一区| 欧美极品少妇xxxxx| 狠狠做六月爱婷婷综合aⅴ| 欧美日韩一区二区区| 欧美亚洲国产一卡| 9999精品成人免费毛片在线看| 伊人婷婷久久|