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

看我如何搞定Nodejs內(nèi)存泄漏問(wèn)題

安全 漏洞
最近又用node寫了一個(gè)小工具,需要常駐進(jìn)程,經(jīng)過(guò)幾天的觀察,發(fā)現(xiàn)內(nèi)存占用有持續(xù)增加的趨勢(shì)(雖然不明顯,但還是讓我察覺(jué)到了,我真屌)。突然發(fā)現(xiàn),我竟然不知道怎么排查nodejs的內(nèi)存泄漏,嚇?biāo)缹殞毩?花時(shí)間看了一下相關(guān)資料(google真好,外果仁真屌),看來(lái)這部分也已經(jīng)有比較完善的方法論+工具了。所以這篇文章記錄一下自己從不懂到入門的經(jīng)歷~~

最近又用node寫了一個(gè)小工具,需要常駐進(jìn)程,經(jīng)過(guò)幾天的觀察,發(fā)現(xiàn)內(nèi)存占用有持續(xù)增加的趨勢(shì)(雖然不明顯,但還是讓我察覺(jué)到了,我真屌)。突然發(fā)現(xiàn),我竟然不知道怎么排查nodejs的內(nèi)存泄漏,嚇?biāo)缹殞毩?

花時(shí)間看了一下相關(guān)資料(google真好,外果仁真屌),看來(lái)這部分也已經(jīng)有比較完善的方法論+工具了。所以這篇文章記錄一下自己從不懂到入門的經(jīng)歷~~

我希望這篇文章不僅能提供具體的工具供大家使用,還提供足夠的理論知識(shí)來(lái)輔助大家思考,當(dāng)然,也可能是我自己想多了~~哇哈

發(fā)現(xiàn)問(wèn)題

由于沒(méi)有太多運(yùn)維經(jīng)驗(yàn),也不知道啥逆天的工具來(lái)幫我一鍵式監(jiān)控所需要的指標(biāo),如果你和我情況一樣,那我們只能手動(dòng)來(lái)造個(gè)簡(jiǎn)陋的但夠用的監(jiān)控腳本了。

別告訴我你和我一樣shell也不熟,直接就node吧。少?gòu)U話~

先裝上pm2,然后寫一個(gè)腳本,來(lái)定時(shí)打印目標(biāo)應(yīng)用的內(nèi)存使用率,當(dāng)然,前提是目標(biāo)應(yīng)用也都放在pm2中管理。

 

  1. const exec = require('child_process').exec 
  2. var Later = require('later');  
  3. var schedule = Later.parse.text('every 5 mins'); // 每5分鐘正點(diǎn)觸發(fā)  
  4. Later.setInterval(function(){  
  5. exec('pm2 jlist', { // 打印出pm2中應(yīng)用的基本狀態(tài)信息,輸出是json字符串  
  6. timeout: 2000  
  7. }, (err, data, stderr)=>{  
  8. if (err) {  
  9. console.error(err, err.stack); // an error occurred  
  10. return 
  11.  
  12. //將結(jié)果寫入日志  
  13. data = JSON.parse(data);  
  14. if(data[0]){ // 這里取0是因?yàn)槲蚁MO(jiān)控的應(yīng)用在pm2中的順序是第一位  
  15. console.log(data[0].monit.memory/(1024*1024)); // 直接輸出到pm2的log中  
  16.  
  17. });  
  18. }, schedule); 

然后就等一段時(shí)間,就會(huì)在對(duì)應(yīng)的log文件中拿到相關(guān)的內(nèi)存數(shù)據(jù),然后只需要用電子表格生成一個(gè)圖標(biāo)即可,我推薦使用google drive的spreadsheet:

看我如何搞定Nodejs內(nèi)存泄漏問(wèn)題

上面的圖是我收集了大概2天的內(nèi)存數(shù)據(jù)繪制成的圖標(biāo),可以看出內(nèi)存使用量成上升趨勢(shì)。沒(méi)錯(cuò),就是泄漏了!!

看我如何搞定Nodejs內(nèi)存泄漏問(wèn)題

友情提醒:修復(fù)內(nèi)存泄漏可能會(huì)耗時(shí)很久,你最好先找一個(gè)臨時(shí)方案來(lái)維持生計(jì),例如定期重啟程序。

搭建環(huán)境

本著實(shí)戰(zhàn)為主的策略,我們先從搭建內(nèi)存泄漏監(jiān)控環(huán)境開始。剛開始參考 node-memory-leak-tutorial ,以為會(huì)很順利搭建好的,不過(guò)碰到了 這個(gè)error 。看Issus應(yīng)該是個(gè)很常見的錯(cuò)誤,按照別人的解決方案,嘗試 切換成 nodejs 6.3.1 版本 進(jìn)行了測(cè)試,確實(shí)可以繞過(guò)那個(gè)錯(cuò)誤:

 

  1. // 在項(xiàng)目目錄下  
  2. node-debug leak.js 

然后終端會(huì)啟動(dòng)你的chrome,并停在代碼的斷點(diǎn)位置,深吸一口氣你就可以點(diǎn)擊執(zhí)行了。

備注:若遇到無(wú)法創(chuàng)建快照問(wèn)題,需要多刷新幾次喲~

其它工具我也順便試了一下:

  • node-memwatch
  • node-webkit-agent
  • node-heapdump

因?yàn)樗鼈兌夹枰鶕?jù)操作系統(tǒng)進(jìn)行編譯,我的本地環(huán)境是 win7 64bit ,這并不是一個(gè)理想的nodejs環(huán)境,至少我這么認(rèn)為,否則也不會(huì)碰到惡心的“.net framework”問(wèn)題。我勸大家千萬(wàn)別學(xué)我輕易的就刪除了 .net framework 3.5 這個(gè)安裝包,因?yàn)檫@是win7自帶的,刪了以后就裝不上了,而裝更新的4.0+版本的話我這邊很重要的一個(gè)軟件就無(wú)法運(yùn)行了(翻墻你懂的)。 在Windows 7系統(tǒng)上安裝.NET Framework 3.5框架 很不容易的!建議可以用上docker來(lái)搭建一個(gè)專門用來(lái)分析用的容器,這里我就不折騰下去了,its your turn~~

nodejs內(nèi)存分析的理論姿勢(shì)

在開始聽我正兒八經(jīng)胡說(shuō)八道之前,推薦你先看幾個(gè)文檔:

  • Memory Terminology
  • How to Record Heap Snapshots
  • Debugging Memory Leaks in Node.js Applications
  • Simple Guide to Finding a JavaScript Memory Leak in Node.js
  • Understanding Garbage Collection and hunting Memory Leaks in Node.js
  • writing fast memory efficient javascript
  • Error Handling in Node.js

一次性看完這些,可能要花很久,如此貼心的我已經(jīng)幫你看過(guò)了,根據(jù)我的理解,總結(jié)如下:

  • javascript的v8內(nèi)存管理和java jvm類似,都有新生代(To-Space and From-Space),老年代等;
  • 排查內(nèi)存泄漏需要分析內(nèi)存快照,可以使用已有的工具以devtool的profile面板或代碼的方式創(chuàng)建snapshot;
  • 創(chuàng)建的快照文件可以導(dǎo)入devtool的profile進(jìn)行分析;
  • 快照生成的最佳實(shí)踐是:先保證程序已經(jīng)預(yù)熱,然后進(jìn)行快照1(先觸發(fā)GC),然后對(duì)程序進(jìn)行一些交互(例如:對(duì)于web服務(wù)即http請(qǐng)求),再次創(chuàng)建快照2,如此循環(huán)來(lái)生成多個(gè)版本的快照;
  • 合理的利用devtool的profile提供的功能,正確的選擇視圖;
  • 理解profie中的字段含義:
  • 對(duì)象上的黃色標(biāo)識(shí)表示的是javascript直接引用,紅色表示間接依賴引用,不太需要關(guān)注的是無(wú)底色對(duì)象,其代表被其它資源引用(如:natvie code);
  • profile會(huì)根據(jù)對(duì)象的構(gòu)造方法對(duì)對(duì)象進(jìn)行分組歸類,每個(gè)組對(duì)應(yīng)的“Shallow Size”表示的是該組對(duì)象的直接內(nèi)存占用大小(例如:該類對(duì)象自身的原始類型數(shù)據(jù)的內(nèi)存占用),對(duì)應(yīng)的“Retained Size”表示的是該組對(duì)象依賴的其它對(duì)象而造成的內(nèi)存占用總數(shù)(等于自身的Shallow Size + 依賴對(duì)象的Shallow Size [ + 依賴對(duì)象的依賴對(duì)象的Shallow Size [ + 遞歸下去]]);
  • 由于性能原因,profile中不會(huì)顯示對(duì)象的整型類型的屬性,但是它們并沒(méi)有丟失,僅僅是工具沒(méi)有顯示出來(lái)而已。
  • 應(yīng)該警惕“distance”比較大或比較小的對(duì)象,總之和其它同類型對(duì)象的distance不一樣就意味著可能有問(wèn)題;
  • 盡量不要用匿名函數(shù),函數(shù)有名字會(huì)讓分析更容易,其實(shí)更推薦的是使用OOP,這樣會(huì)最容易定位需要追蹤的變量,畢竟都是構(gòu)造器創(chuàng)建出來(lái)的嘛;
  • 閉包(匿名函數(shù),定時(shí)器等)創(chuàng)建的上下文引用很容易造成不易察覺(jué)的內(nèi)存泄漏;
  • console的相關(guān)函數(shù)(log, error等)在實(shí)際分析中發(fā)現(xiàn)其引用的變量無(wú)法釋放,可以參考 #1741 ,所以你可以在測(cè)試代碼中替換掉console的相關(guān)函數(shù)(這樣你就不需要改動(dòng)被測(cè)代碼邏輯了);
  • 對(duì)象上的事件監(jiān)聽器的閉包最容易造成泄漏,即便是使用once,也可能一次都沒(méi)有觸發(fā)而導(dǎo)致該回調(diào)函數(shù)無(wú)限期引用數(shù)據(jù)。

ok,一大堆姿勢(shì)足夠你花很久時(shí)間閱讀了。不過(guò)并不是說(shuō)你看了這些內(nèi)容,就可以輕松戰(zhàn)勝困難了。還有一個(gè)環(huán)節(jié)我們沒(méi)有討論: 若你的項(xiàng)目足夠復(fù)雜(大),那要怎么搭建項(xiàng)目的測(cè)試環(huán)境呢?

這里我認(rèn)為,大概需要按照下面的步驟來(lái)做:

  1. 將完整的項(xiàng)目拆解成獨(dú)立的不同塊,并為每個(gè)拆解后的小模塊寫測(cè)試代碼
  2. 針對(duì)定時(shí)器相關(guān)的邏輯,最好改成手動(dòng)觸發(fā),或利用測(cè)試庫(kù)(sinonjs)模擬時(shí)間片段
  3. 初期可以先盡可能排除依賴的第三方庫(kù),最后酌情去測(cè)試它們(如果你懷疑是它們的問(wèn)題的話)
  4. 低級(jí)別異常偽造(例如socket,file等)要靠偽造對(duì)應(yīng)方法(不推薦使用sinonjs.stubs,因?yàn)樗4婷看握{(diào)用時(shí)的參數(shù)數(shù)據(jù),影響你觀察,不妨試試 mockery )
  5. 最終還是有必要放在線上環(huán)境實(shí)測(cè)一段時(shí)間來(lái)觀測(cè)問(wèn)題是否真的修復(fù)了

我們主要來(lái)說(shuō)一下第5條,其意味著你要在線上環(huán)境以debug的形式啟動(dòng)程序,并想辦法導(dǎo)出快照到本地來(lái)分析。下面來(lái)看看怎么做:

首先,你給線上環(huán)境中安裝 v8-profiler 庫(kù),它用來(lái)提供創(chuàng)建快照的功能。

然后,看一下下面的這段樣板代碼,其意義在于在你的項(xiàng)目中加載 v8-profiler 庫(kù),并提供一個(gè)對(duì)外指令用來(lái)通知它創(chuàng)建快照文件。

 

  1. var fs = require('fs');  
  2. var profiler = require('v8-profiler');  
  3. // ---------------  
  4. // 測(cè)試目標(biāo)  
  5. functionLeakingClass(){}  
  6. var leaks = [];  
  7. setInterval(function(){  
  8. for(var i = 0; i < 100; i++){  
  9. leaks.push(new LeakingClass);  
  10.  
  11. console.error('Leaks: %d', leaks.length);  
  12. }, 1000);  
  13. // ---------------  
  14. // 指令服務(wù)  
  15. var koa = require('koa');  
  16. var route = require('koa-route');  
  17. var service = koa();  
  18. var snapshotNum = 1; // 用于為生成的快照進(jìn)行編號(hào)  
  19. service.use(route.get('/snapshot'function*(){  
  20. var response = this;  
  21. var snapshot = profiler.takeSnapshot();  
  22. snapshot.export(function(error, result){  
  23. fs.writeFileSync((snapshotNum++) + '.heapsnapshot', result);  
  24. snapshot.delete();  
  25. response.body = 'done' 
  26. });  
  27. }));  
  28. service.listen(2333, '127.0.0.1'); // 推薦綁定內(nèi)網(wǎng)ip,不要允許外網(wǎng)訪問(wèn)該服務(wù) 

每次請(qǐng)求 http://127.0.0.1:2333/snapshot ,你都會(huì)在項(xiàng)目根目錄生成一個(gè)快照文件,然后把它下載到本地磁盤就可以在chrome里隨時(shí)進(jìn)行分析了。

總結(jié)

在實(shí)際排查過(guò)程中,發(fā)現(xiàn)最難測(cè)試的還是依賴的第三方庫(kù)的泄漏問(wèn)題。畢竟你無(wú)法理解它們的實(shí)現(xiàn)。但不可能所有邏輯都自己來(lái)完成,所以面對(duì)各種各樣的第三方類庫(kù),還是建議選擇盡可能權(quán)威的,主流的。剩下那些很小的功能模塊,就只能花時(shí)間研讀其實(shí)現(xiàn)代碼了。

如果你的業(yè)務(wù)采用了生產(chǎn)消費(fèi)者模式, 你的測(cè)試腳本一定要保證任務(wù)的生產(chǎn)和消費(fèi)的速率保持同速率(或者干脆確保消費(fèi)者處理完一批次的任務(wù)耗時(shí)一定要大于批次創(chuàng)建的間隔時(shí)間) ,不然由于任務(wù)得不到處理,必然會(huì)產(chǎn)生任務(wù)積累,看起來(lái)就好像有內(nèi)存泄漏一樣,但其實(shí)這種情況其實(shí)是合理的,只是說(shuō)明你的消費(fèi)者太少了而已。

另外,一定要最大頻度的,盡可能長(zhǎng)時(shí)間的運(yùn)行測(cè)試代碼,才能明顯的暴露出問(wèn)題,例如:

 

  1. setInterval(functionmemoryleakBlock(){  
  2. // 待測(cè)試的代碼塊  
  3. }, 100); 

注意在上面 memoryleakBlock 中避免引用全局變量喲,這樣你運(yùn)行一夜,第二天上班來(lái)看結(jié)果(如果它還跑著的話)。

看我如何搞定Nodejs內(nèi)存泄漏問(wèn)題

責(zé)任編輯:未麗燕 來(lái)源: Kazaff
相關(guān)推薦

2024-01-30 10:12:00

Java內(nèi)存泄漏

2024-02-21 08:00:55

WindowsDWM進(jìn)程

2023-12-18 10:45:23

內(nèi)存泄漏計(jì)算機(jī)服務(wù)器

2021-08-09 09:54:37

內(nèi)存泄漏JS 阿里云

2021-08-05 15:28:22

JS內(nèi)存泄漏

2018-10-25 15:24:10

ThreadLocal內(nèi)存泄漏Java

2025-10-27 01:33:00

2024-02-01 09:58:40

Java內(nèi)存泄漏

2013-12-17 15:46:04

iOS開發(fā)iOS 內(nèi)存泄漏

2010-09-26 15:38:33

JVM內(nèi)存泄漏

2022-05-26 09:51:50

JavaScrip內(nèi)存泄漏

2011-08-15 10:16:55

內(nèi)存泄露

2024-03-22 13:31:00

線程策略線程池

2025-03-03 00:00:15

2024-03-11 08:22:40

Java內(nèi)存泄漏

2021-11-05 08:28:27

內(nèi)存泄漏調(diào)試

2012-02-22 21:28:58

內(nèi)存泄漏

2022-09-09 15:58:29

HiveServerHive 組件Java 開發(fā)

2015-03-30 11:18:50

內(nèi)存管理Android

2025-04-01 05:22:00

JavaThread變量
點(diǎn)贊
收藏

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

天天射成人网| 九热这里只有精品| 欧美综合影院| 中文字幕免费不卡在线| 国产免费一区视频观看免费| 在线观看免费小视频| 亚洲伊人精品酒店| 五月天激情小说综合| 九九九九精品| 国产又粗又猛又爽又黄的| 欧美黄在线观看| 精品视频久久久| 久久久久久综合网| 女厕盗摄一区二区三区| 中文字幕av一区二区三区| 99精品国产一区二区| 黄色污污网站在线观看| 这里只有精品在线| 亚洲成人久久久久| 欧美wwwwwww| 涩涩视频在线| 亚洲精品伦理在线| 日韩欧美在线一区二区| 国产精品久久久久久久成人午夜| 日韩一级大片| 久久艹在线视频| 国产肥白大熟妇bbbb视频| 日本亚洲视频| 欧美亚洲日本国产| 欧洲精品在线播放| 在线播放麻豆| 成人黄色综合网站| 成人欧美在线视频| 久久99精品波多结衣一区| 久久久久午夜电影| 亚洲一区二区精品| 欧美一级大片免费看| 小明成人免费视频一区| 五月婷婷激情综合| 熟女视频一区二区三区| 国产高清美女一级毛片久久| www.欧美.com| 7777精品伊久久久大香线蕉语言 | 秋霞av鲁丝片一区二区| 久久国产综合精品| 国产精品1234| 99热国产在线观看| 亚洲裸体俱乐部裸体舞表演av| 日韩亚洲一区二区| 精品女人久久久| 中文字幕伦av一区二区邻居| 日韩av综合网站| 欧美做受高潮中文字幕| 亚洲一区二区三区在线免费| 在线成人av网站| 午夜激情av在线| 国产第一精品| 欧美精品亚洲二区| 色婷婷一区二区三区在线观看| 国产伊人久久| 欧美日韩一二三区| 特黄视频免费观看| 国产人与zoxxxx另类91| 欧美一区二区三区四区五区| 色综合色综合色综合色综合| av成人免费看| 欧美精品 日韩| 激情文学亚洲色图| 免费一级欧美在线大片| 欧美一级高清大全免费观看| 97超碰人人看| 成人av激情人伦小说| 精品国产乱码久久久久久图片 | 日本a在线天堂| а√中文在线8| 一区二区免费看| aa视频在线播放| 亚洲精品成人图区| 欧美午夜不卡视频| 欧美一级特黄aaa| 欧洲亚洲精品久久久久| 91精品国产91热久久久做人人| 五月天婷婷在线观看视频| 亚洲aⅴ网站| 欧美大片顶级少妇| 欧美熟妇一区二区| 久久狠狠高潮亚洲精品| 亚洲精品国产片| 国产美女视频91| 国产自产在线视频一区| 成人午夜免费福利| 成人丝袜18视频在线观看| 久久99精品久久久久久久久久| 黄色三级网站在线观看| 不卡的电视剧免费网站有什么| 黄色91av| 精品麻豆一区二区三区| 香蕉久久一区二区不卡无毒影院 | 国产伦精品一区二区三区照片91| 四虎在线视频| 国产亚洲欧美日韩日本| 国产高潮呻吟久久久| 国产网红在线观看| 日韩欧美成人免费视频| 欧美午夜精品理论片| 欧美高清视频看片在线观看| 中文字幕精品在线| 久久综合色综合| 日韩精品电影一区亚洲| 91久久伊人青青碰碰婷婷| 三级在线视频| 亚洲精品欧美激情| 男人日女人下面视频| 亚洲天堂1区| 亚洲黄色在线看| 三级全黄做爰视频| 久久午夜电影| 国产日产精品一区二区三区四区| 91网页在线观看| 狠狠干狠狠久久| 韩国一区二区三区四区| 免费视频一区三区| 欧美激情在线一区| 国产男男gay体育生网站| 久久久久久久久久电影| 国产美女主播在线| 在线观看亚洲精品福利片| 精品一区电影国产| 欧美又粗又大又长| 六月婷婷色综合| 欧美色图亚洲自拍| 亚洲私拍视频| 亚洲国产精品电影| 欧美日韩精品一区二区三区视频播放 | 在线视频91p| 日韩欧美高清在线视频| 久久久久久婷婷| 欧美99久久| 国产美女精品视频| 成a人片在线观看www视频| 狠狠躁夜夜躁人人爽超碰91| 国产一级免费片| 红桃视频欧美| 国产日韩欧美中文在线播放| 国产中文字幕在线看| 欧美性猛交xxxx偷拍洗澡| 亚洲精品乱码久久久久久蜜桃图片| 亚洲免费毛片| 97精品久久久中文字幕免费| 成人午夜精品福利免费| 一区二区三区国产豹纹内裤在线| 蜜桃福利午夜精品一区| 999久久久国产精品| 韩日精品中文字幕| 高清毛片aaaaaaaaa片| 亚洲精品ww久久久久久p站 | 成人免费高清在线| 大荫蒂性生交片| 136导航精品福利| 国外视频精品毛片| 亚洲欧洲精品视频| 亚洲成人一二三| 国产传媒第一页| 久久精品成人| 神马影院我不卡| 嫩草伊人久久精品少妇av杨幂| 中文字幕欧美国内| 91欧美日韩麻豆精品| 最新不卡av在线| 人妻体体内射精一区二区| 午夜国产欧美理论在线播放 | 激情婷婷综合| 国产成人在线一区| 日韩精品黄色| 欧美成人性战久久| 在线观看免费国产视频| 久久综合九色综合97_久久久| av观看免费在线| 日韩av密桃| 亚洲一区二区三| 樱花草涩涩www在线播放| 亚洲欧美一区二区三区四区| 精品久久免费视频| 久久夜色精品一区| 色婷婷.com| 亚洲综合色站| 久久精品国产一区二区三区日韩| 最新欧美色图| 欧美成人午夜激情在线| 少妇性bbb搡bbb爽爽爽欧美| 欧美色图第一页| 精品视频久久久久| 国产日韩av一区二区| 丁香婷婷激情网| 亚洲一级淫片| 久久精品午夜一区二区福利| 成人高清一区| 久久久久久国产三级电影| 天堂在线中文| 欧美一区二区网站| 国产一级片视频| 国产精品无人区| 日韩高清一二三区| 免费高清在线视频一区·| 日韩成人三级视频| 日韩欧美高清| 蜜桃传媒一区二区| 日韩视频一二区| 国产成人精品a视频一区www| av网站导航在线观看免费| 欧美变态tickle挠乳网站| 九九热最新视频| 午夜不卡av免费| 欧美成人精品欧美一| 国产欧美精品在线观看| 日韩欧美中文视频| 日韩高清中文字幕一区| 久久视频这里有精品| 婷婷另类小说| 日韩精品一线二线三线| 巨人精品**| 成人免费视频网站入口| 国产69精品久久久久按摩| 欧美在线国产精品| 性爱视频在线播放| 国产午夜精品一区二区三区| 国产 欧美 自拍| 91精品欧美福利在线观看| 国产美女激情视频| 夜夜嗨av一区二区三区| 欧美特黄一级片| 中文字幕va一区二区三区| 久久精品国产亚洲av麻豆| 精品午夜久久福利影院| www欧美激情| 日本不卡中文字幕| 亚洲精品中文字幕无码蜜桃| 国产日韩一区二区三区在线| 黄色一级片网址| 天天影视欧美综合在线观看| 亚洲图色在线| 日韩久久精品网| 先锋影音一区二区三区| 欧美在线免费看视频| 欧美日韩亚洲在线| 精品影片在线观看的网站| 久热国产精品视频一区二区三区| 国产美女撒尿一区二区| 国产伦精品一区二区三区视频黑人 | 日本成人xxx| 韩国av一区二区三区四区| 网站在线你懂的| 国产成人av电影| jjzzjjzz欧美69巨大| 国产91精品露脸国语对白| 国产亚洲精品成人a| 成人综合在线观看| 天天综合成人网| 国产在线视频一区二区三区| 亚洲五月激情网| 国产91高潮流白浆在线麻豆| 亚洲成年人在线观看| www.欧美.com| 蜜桃传媒一区二区亚洲| 国产精品美女久久久久久久| 中文字幕第69页| 中文字幕一区二区三区蜜月| 99久久久无码国产精品不卡| 自拍偷在线精品自拍偷无码专区| 国产精品白丝喷水在线观看| 国产精品色婷婷久久58| 91嫩草丨国产丨精品| 亚洲视频小说图片| 久久久久久久伊人| 欧美视频免费在线观看| 午夜视频网站在线观看| 欧美一区二区三区婷婷月色| 日韩中文字幕观看| 亚洲午夜久久久影院| 国产日产精品久久久久久婷婷| 亚洲精品国产欧美| 国产乱理伦片a级在线观看| 久久精品一偷一偷国产| 女人黄色免费在线观看| 欧美制服第一页| 欧美色网在线| 99久久伊人精品影院| 香蕉大人久久国产成人av| 国产精品成人v| 国产午夜亚洲精品一级在线| 国产精品日韩高清| 五月综合久久| 秋霞在线一区二区| 亚洲精品偷拍| 在线观看国产中文字幕| 成人激情综合网站| 久久嫩草捆绑紧缚| 丁香五六月婷婷久久激情| 国产日韩在线免费观看| 欧美一区二区久久久| 国产精品久久久久久久久久久久久久久久久久| 精品国产乱码久久久久久影片| 97视频精彩视频在线观看| 高清一区二区三区日本久| 日韩精品影院| 18成人免费观看网站下载| 国产伦一区二区三区| 久久福利一区二区| 国产精品视频| 中文字幕一区二区三区四| 成人免费视频免费观看| 国产精品麻豆免费版现看视频| 午夜久久久久久| 国产婷婷一区二区三区久久| 亚洲欧洲免费视频| 福利小视频在线| 国产精品久久久999| 欧美1区二区| 中文字幕一区二区三区四区五区| 亚洲精品欧洲| 麻豆tv在线观看| 成人免费一区二区三区视频| 欧美a视频在线观看| 欧美日韩国产电影| 男人的天堂在线| 91精品国产免费久久久久久| 日韩精品视频一区二区三区| 亚洲精品国产精品国自产| 久久国产精品毛片| 色悠悠在线视频| 一区二区久久久| 成 人 免费 黄 色| 欧美成年人在线观看| 欧美日韩破处视频| 亚洲春色综合另类校园电影| 欧美日韩久久| 亚洲区 欧美区| 国产精品久久国产精麻豆99网站| 日本黄色中文字幕| 亚洲欧美福利视频| 澳门成人av网| 欧美日韩一区二区三区在线观看免| 一本久道综合久久精品| 超碰caoprom| 亚洲第一av色| 亚洲精品综合久久| 高清视频欧美一级| 天堂99x99es久久精品免费| 欧美一级欧美一级| 99久久精品费精品国产一区二区| 日本少妇在线观看| 日韩精品高清视频| 免费电影日韩网站| 久久婷婷人人澡人人喊人人爽| 亚洲专区一区| 日本xxxxxxxxx18| 欧美视频免费在线观看| 大胆av不用播放器在线播放 | 国产精品一卡二| 欧美特黄一级片| 日韩欧美在线网站| 国产丝袜在线播放| 久久精品magnetxturnbtih| 丝袜美腿高跟呻吟高潮一区| 成人性生交大免费看| 在线看国产日韩| 激情视频在线观看| 3d动漫啪啪精品一区二区免费| 97精品在线| 蜜臀aⅴ国产精品久久久国产老师| 一区二区三区在线视频免费观看| 蜜臀久久99精品久久久| 欧美极品少妇xxxxⅹ裸体艺术| 蜜桃精品视频| 红桃av在线播放| 国产精品久久久久久久久动漫| aaaa一级片| 97av在线视频免费播放| 日日天天久久| 在线观看岛国av| 自拍偷拍欧美精品| 亚洲第一页在线观看| 久久久久久12| 亚洲小说图片视频| 欧美成人乱码一二三四区免费| 亚洲精品亚洲人成人网在线播放| 日本黄色一区二区三区| 国产精品国产福利国产秒拍 | 男人天堂999| 亚洲欧美在线另类| www.久久精品.com| 欧美一级电影免费在线观看| 禁果av一区二区三区| 91日韩视频在线观看| 亚洲精品久久嫩草网站秘色| 天堂在线中文| 成人av片网址| 青娱乐精品视频| 免费毛片在线播放免费| 日韩电影在线观看中文字幕|