日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Memcached深度分析

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Memcached深度分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Memcached是danga.com(運營LiveJournal的技術團隊)開發的一套分布式內存對象緩存系統,用于在動態系統中減少數據庫負載, 提升性能。關于這個東西,相信很多人都用過,本文意在通過對memcached的實現及代碼分析,獲得對這個出色的開源軟件更深入的了解,并可以根據我們 的需要對其進行更進一步的優化。末了將通過對BSM_Memcache擴展的分析,加深對memcached的使用方式理解。 本文的部分內容可能需要比較好的數學基礎作為輔助。 ◎Memcached是什么 在闡述這個問題之前,我們首先要清楚它“不是什么”。很多人把它當作和SharedMemory那種形式的存儲載體來使用,雖然memcached使用了 同樣的“Key=>Value”方式組織數據,但是它和共享內存、APC等本地緩存有非常大的區別。Memcached是分布式的,也就是說它不是 本地的。它基于網絡連接(當然它也可以使用localhost)方式完成服務,本身它是一個獨立于應用的程序或守護進程(Daemon方式)。 Memcached使用libevent庫實現網絡連接服務,理論上可以處理無限多的連接,但是它和Apache不同,它更多的時候是面向穩定的持續連接 的,所以它實際的并發能力是有限制的。在保守情況下memcached的最大同時連接數為200,這和Linux線程能力有關系,這個數值是可以調整的。 關于libevent可以參考相關文檔。 Memcached內存使用方式也和APC不同。APC是基于共享內存和MMAP的,memcachd有自己的內存分配算法和管理方式,它和共享內存沒有 關系,也沒有共享內存的限制,通常情況下,每個memcached進程可以管理2GB的內存空間,如果需要更多的空間,可以增加進程數。 ◎Memcached適合什么場合 在很多時候,memcached都被濫用了,這當然少不了對它的抱怨。我經常在論壇上看見有人發貼,類似于“如何提高效率”,回復是“用memcached”,至于怎么用,用在哪里,用來干什么一句沒有。memcached不是萬能的,它也不是適用在所有場合。 Memcached是“分布式”的內存對象緩存系統,那么就是說,那些不需要“分布”的,不需要共享的,或者干脆規模小到只有一臺服務器的應用, memcached不會帶來任何好處,相反還會拖慢系統效率,因為網絡連接同樣需要資源,即使是UNIX本地連接也一樣。 在我之前的測試數據中顯示,memcached本地讀寫速度要比直接PHP內存數組慢幾十倍,而APC、共享內存方式都和直接數組差不多。可見,如果只是 本地級緩存,使用memcached是非常不劃算的。 Memcached在很多時候都是作為數據庫前端cache使用的。因為它比數據庫少了很多SQL解析、磁盤操作等開銷,而且它是使用內存來管理數據的, 所以它可以提供比直接讀取數據庫更好的性能,在大型系統中,訪問同樣的數據是很頻繁的,memcached可以大大降低數據庫壓力,使系統執行效率提升。 另外,memcached也經常作為服務器之間數據共享的存儲媒介,例如在SSO系統中保存系統單點登陸狀態的數據就可以保存在memcached中,被 多個應用共享。 需要注意的是,memcached使用內存管理數據,所以它是易失的,當服務器重啟,或者memcached進程中止,數據便會丟失,所以 memcached不能用來持久保存數據。很多人的錯誤理解,memcached的性能非常好,好到了內存和硬盤的對比程度,其實memcached使用 內存并不會得到成百上千的讀寫速度提高,它的實際瓶頸在于網絡連接,它和使用磁盤的數據庫系統相比,好處在于它本身非常“輕”,因為沒有過多的開銷和直接 的讀寫方式,它可以輕松應付非常大的數據交換量,所以經常會出現兩條千兆網絡帶寬都滿負荷了,memcached進程本身并不占用多少CPU資源的情況。 ◎Memcached的工作方式 以下的部分中,讀者最好能準備一份memcached的源代碼。 Memcached是傳統的網絡服務程序,如果啟動的時候使用了-d參數,它會以守護進程的方式執行。創建守護進程由daemon.c完成,這個程序只有一個daemon函數,這個函數很簡單(如無特殊說明,代碼以1.2.1為準):
CODE: #include <fcntl.h> #include <stdlib.h> #include <unistd.h> int daemon(nochdir, noclose) int nochdir, noclose; { int fd; switch (fork()) { case -1: return (-1); case 0: break; default: _exit(0); } if (setsid() == -1) return (-1); if (!nochdir) (void)chdir("/"); if (!noclose && (fd = open("/dev/null", O_RDWR, 0)) != -1) { (void)dup2(fd, STDIN_FILENO); (void)dup2(fd, STDOUT_FILENO); (void)dup2(fd, STDERR_FILENO); if (fd > STDERR_FILENO) (void)close(fd); } return (0); }
這個函數 fork 了整個進程之后,父進程就退出,接著重新定位 STDIN 、 STDOUT 、 STDERR 到空設備, daemon 就建立成功了。 Memcached 本身的啟動過程,在 memcached.c 的 main 函數中順序如下: 1 、調用 settings_init() 設定初始化參數 2 、從啟動命令中讀取參數來設置 setting 值 3 、設定 LIMIT 參數 4 、開始網絡 socket 監聽(如果非 socketpath 存在)( 1.2 之后支持 UDP 方式) 5 、檢查用戶身份( Memcached 不允許 root 身份啟動) 6 、如果有 socketpath 存在,開啟 UNIX 本地連接(Sock 管道) 7 、如果以 -d 方式啟動,創建守護進程(如上調用 daemon 函數) 8 、初始化 item 、 event 、狀態信息、 hash 、連接、 slab 9 、如設置中 managed 生效,創建 bucket 數組 10 、檢查是否需要鎖定內存頁 11 、初始化信號、連接、刪除隊列 12 、如果 daemon 方式,處理進程 ID 13 、event 開始,啟動過程結束, main 函數進入循環。 在 daemon 方式中,因為 stderr 已經被定向到黑洞,所以不會反饋執行中的可見錯誤信息。 memcached.c 的主循環函數是 drive_machine ,傳入參數是指向當前的連接的結構指針,根據 state 成員的狀態來決定動作。 Memcached 使用一套自定義的協議完成數據交換,它的 protocol 文檔可以參考: http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt 在API中,換行符號統一為/r/n ◎Memcached的內存管理方式 Memcached有一個很有特色的內存管理方式,為了提高效率,它使用預申請和分組的方式管理內存空間,而并不是每次需要寫入數據的時候去malloc,刪除數據的時候free一個指針。Memcached使用slab->chunk的組織方式管理內存。 1.1和1.2的slabs.c中的slab空間劃分算法有一些不同,后面會分別介紹。 Slab可以理解為一個內存塊,一個slab是memcached一次申請內存的最小單位,在memcached中,一個slab的大小默認為 1048576字節(1MB),所以memcached都是整MB的使用內存。每一個slab被劃分為若干個chunk,每個chunk里保存一個 item,每個item同時包含了item結構體、key和value(注意在memcached中的value是只有字符串的)。slab按照自己的 id分別組成鏈表,這些鏈表又按id掛在一個slabclass數組上,整個結構看起來有點像二維數組。slabclass的長度在1.1中是21,在 1.2中是200。 slab有一個初始chunk大小,1.1中是1字節,1.2中是80字節,1.2中有一個factor值,默認為1.25 在1.1中,chunk大小表示為初始大小*2^n,n為classid,即:id為0的slab,每chunk大小1字節,id為1的slab,每 chunk大小2字節,id為2的slab,每chunk大小4字節……id為20的slab,每chunk大小為1MB,就是說id為20的slab里 只有一個chunk:
CODE: void slabs_init(size_t limit) { int i; int size=1; mem_limit = limit; for(i=0; i<=POWER_LARGEST; i++, size*=2) { slabclass[i].size = size; slabclass[i].perslab = POWER_BLOCK / size; slabclass[i].slots = 0; slabclass[i].sl_curr = slabclass[i].sl_total = slabclass[i].slabs = 0; slabclass[i].end_page_ptr = 0; slabclass[i].end_page_free = 0; slabclass[i].slab_list = 0; slabclass[i].list_size = 0; slabclass[i].killing = 0; } /* for the test suite: faking of how much we've already malloc'd */ { char *t_initial_malloc = getenv("T_MEMD_INITIAL_MALLOC"); if (t_initial_malloc) { mem_malloced = atol(getenv("T_MEMD_INITIAL_MALLOC")); } } /* pre-allocate slabs by default, unless the environment variable for testing is set to something non-zero */ { char *pre_alloc = getenv("T_MEMD_SLABS_ALLOC"); if (!pre_alloc || atoi(pre_alloc)) { slabs_preallocate(limit / POWER_BLOCK); } } }
在1.2 中,chunk大小表示為初始大小*f^n,f為factor,在memcached.c中定義,n為classid,同時,201個頭不是全部都要初始 化的,因為factor可變,初始化只循環到計算出的大小達到slab大小的一半為止,而且它是從id1開始的,即:id為1的slab,每chunk大 小80字節,id為2的slab,每chunk大小80*f,id為3的slab,每chunk大小80*f^2,初始化大小有一個修正值 CHUNK_ALIGN_BYTES,用來保證n-byte排列 (保證結果是CHUNK_ALIGN_BYTES的整倍數)。這樣,在標準情況下,memcached1.2會初始化到id40,這個slab中每個 chunk大小為504692,每個slab中有兩個chunk。最后,slab_init函數會在最后補足一個id41,它是整塊的,也就是這個 slab中只有一個1MB大的chunk:
CODE: void slabs_init(size_t limit, double factor) { int i = POWER_SMALLEST - 1; unsigned int size = sizeof(item) + settings.chunk_size; /* Factor of 2.0 means use the default memcached behavior */ if (factor == 2.0 && size < 128) size = 128; mem_limit = limit; memset(slabclass, 0, sizeof(slabclass)); while (++i < POWER_LARGEST && size <= POWER_BLOCK / 2) { /* Make sure items are always n-byte aligned */ if (size % CHUNK_ALIGN_BYTES) size += CHUNK_ALIGN_BYTES - (size % CHUNK_ALIGN_BYTES); slabclass[i].size = size; slabclass[i].perslab = POWER_BLOCK / slabclass[i].size; size *= factor; if (settings.verbose > 1) { fprintf(stderr, "slab class %3d: chunk size %6d perslab %5d/n", i, slabclass[i].size, slabclass[i].perslab); } } power_largest = i; slabclass[power_largest].size = POWER_BLOCK; slabclass[power_largest].perslab = 1; /* for the test suite: faking of how much we've already malloc'd */ { char *t_initial_malloc = getenv("T_MEMD_INITIAL_MALLOC"); if (t_initial_malloc) { mem_malloced = atol(getenv("T_MEMD_INITIAL_MALLOC")); } } #ifndef DONT_PREALLOC_SLABS { char *pre_alloc = getenv("T_MEMD_SLABS_ALLOC"); if (!pre_alloc || atoi(pre_alloc)) { slabs_preallocate(limit / POWER_BLOCK); } } #endif }
由上可以看出,memcached的內存分配是有冗余的,當一個slab不能被它所擁有的chunk大小整除時,slab尾部剩余的空間就被丟棄了,如id40中,兩個chunk占用了1009384字節,這個slab一共有1MB,那么就有39192字節被浪費了。 Memcached使用這種方式來分配內存,是為了可以快速的通過item長度定位出slab的classid,有一點類似hash,因為item的長度 是可以計算的,比如一個item的長度是300字節,在1.2中就可以得到它應該保存在id7的slab中,因為按照上面的計算方法,id6的chunk 大小是252字節,id7的chunk大小是316字節,id8的chunk大小是396字節,表示所有252到316字節的item都應該保存在id7 中。同理,在1.1中,也可以計算得到它出于256和512之間,應該放在chunk_size為512的id9中(32位系統)。 Memcached初始化的時候,會初始化slab(前面可以看到,在main函數中調用了slabs_init())。它會在slabs_init() 中檢查一個常量DONT_PREALLOC_SLABS,如果這個沒有被定義,說明使用預分配內存方式初始化slab,這樣在所有已經定義過的 slabclass中,每一個id創建一個slab。這樣就表示,1.2在默認的環境中啟動進程后要分配41MB的slab空間,在這個過程里, memcached的第二個內存冗余發生了,因為有可能一個id根本沒有被使用過,但是它也默認申請了一個slab,每個slab會用掉1MB內存 當一個slab用光后,又有新的item要插入這個id,那么它就會重新申請新的slab,申請新的slab時,對應id的slab鏈表就要增長,這個鏈表是成倍增長的,在函數grow_slab_list函數中,這個鏈的長度從1變成2,從2變成4,從4變成8……:
CODE: static int grow_slab_list (unsigned int id) { slabclass_t *p = &slabclass[id]; if (p->slabs == p->list_size) { size_t new_size = p->list_size ? p->list_size * 2 : 16; void *new_list = realloc(p->slab_list, new_size*sizeof(void*)); if (new_list == 0) return 0; p->list_size = new_size; p->slab_list = new_list; } return 1; }
在 定位item時,都是使用slabs_clsid函數,傳入參數為item大小,返回值為classid,由這個過程可以看出,memcached的第三 個內存冗余發生在保存item的過程中,item總是小于或等于chunk大小的,當item小于chunk大小時,就又發生了空間浪費。 ◎Memcached的NewHash算法 Memcached的item保存基于一個大的hash表,它的實際地址就是slab中的chunk偏移,但是它的定位是依靠對key做hash的結果, 在primary_hashtable中找到的。在assoc.c和items.c中定義了所有的hash和item操作。 Memcached使用了一個叫做NewHash的算法,它的效果很好,效率也很高。1.1和1.2的NewHash有一些不同,主要的實現方式還是一樣的,1.2的hash函數是經過整理優化的,適應性更好一些。 NewHash的原型參考:http://burtleburtle.net/bob/hash/evahash.html。數學家總是有點奇怪,呵呵~ 為了變換方便,定義了u4和u1兩種數據類型,u4就是無符號的長整形,u1就是無符號char(0-255)。 具體代碼可以參考1.1和1.2源碼包。 注意這里的hashtable長度,1.1和1.2也是有區別的,1.1中定義了HASHPOWER常量為20,hashtable表長為 hashsize(HASHPOWER),就是4MB(hashsize是一個宏,表示1右移n位),1.2中是變量16,即hashtable表長 65536:
CODE: typedef unsigned long int ub4; /* unsigned 4-byte quantities */ typedef unsigned char ub1; /* unsigned 1-byte quantities */ #define hashsize(n) ((ub4)1<<(n)) #define hashmask(n) (hashsize(n)-1)
在assoc_init ()中,會對primary_hashtable做初始化,對應的hash操作包括:assoc_find()、assoc_expand()、 assoc_move_next_bucket()、assoc_insert()、assoc_delete(),對應于item的讀寫操作。其中 assoc_find()是根據key和key長尋找對應的item地址的函數(注意在C中,很多時候都是同時直接傳入字符串和字符串長度,而不是在函數 內部做strlen),返回的是item結構指針,它的數據地址在slab中的某個chunk上。 items.c是數據項的操作程序,每一個完整的item包括幾個部分,在item_make_header()中定義為: key:鍵 nkey:鍵長 flags:用戶定義的flag(其實這個flag在memcached中沒有啟用) nbytes:值長(包括換行符號/r/n) suffix:后綴Buffer nsuffix:后綴長 一個完整的item長度是鍵長+值長+后綴長+item結構大小(32字節),item操作就是根據這個長度來計算slab的classid的。 hashtable中的每一個桶上掛著一個雙鏈表,item_init()的時候已經初始化了heads、tails、sizes三個數組為0,這三個數 組的大小都為常量LARGEST_ID(默認為255,這個值需要配合factor來修改),在每次item_assoc()的時候,它會首先嘗試從 slab中獲取一塊空閑的chunk,如果沒有可用的chunk,會在鏈表中掃描50次,以得到一個被LRU踢掉的item,將它unlink,然后將需 要插入的item插入鏈表中。 注意item的refcount成員。item被unlink之后只是從鏈表上摘掉,不是立刻就被free的,只是將它放到刪除隊列中(item_unlink_q()函數)。 item對應一些讀寫操作,包括remove、update、replace,當然最重要的就是alloc操作。 item還有一個特性就是它有過期時間,這是memcached的一個很有用的特性,很多應用都是依賴于memcached的item過期,比如 session存儲、操作鎖等。item_flush_expired()函數就是掃描表中的item,對過期的item執行unlink操作,當然這只 是一個回收動作,實際上在get的時候還要進行時間判斷:
CODE: /* expires items that are more recent than the oldest_live setting. */ void item_flush_expired() { int i; item *iter, *next; if (! settings.oldest_live) return; for (i = 0; i < LARGEST_ID; i++) { /* The LRU is sorted in decreasing time order, and an item's timestamp * is never newer than its last access time, so we only need to walk * back until we hit an item older than the oldest_live time. * The oldest_live checking will auto-expire the remaining items. */ for (iter = heads[i]; iter != NULL; iter = next) { if (iter->time >= settings.oldest_live) { next = iter->next; if ((iter->it_flags & ITEM_SLABBED) == 0) { item_unlink(iter); } } else { /* We've hit the first old item. Continue to the next queue. */ break; } } } }
CODE: /* wrapper around assoc_find which does the lazy expiration/deletion logic */ item *get_item_notedeleted(char *key, size_t nkey, int *delete_locked) { item *it = assoc_find(key, nkey); if (delete_locked) *delete_locked = 0; if (it && (it->it_flags & ITEM_DELETED)) { /* it's flagged as delete-locked. let's see if that condition is past due, and the 5-second delete_timer just hasn't gotten to it yet... */ if (! item_delete_lock_over(it)) { if (delete_locked) *delete_locked = 1; it = 0; } } if (it && settings.oldest_live && settings.oldest_live <= current_time && it->time <= settings.oldest_live) { item_unlink(it); it = 0; } if (it && it->exptime && it->exptime <= current_time) { item_unlink(it); it = 0; } return it; }
Memcached的內存管理方式是非常精巧和高效的,它很大程度上減少了直接alloc系統內存的次數,降低函數開銷和內存碎片產生幾率,雖然這種方式會造成一些冗余浪費,但是這種浪費在大型系統應用中是微不足道的。

總結

以上是生活随笔為你收集整理的Memcached深度分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

欧美地下肉体性派对 | 国内精品久久久久影院优 | 色婷婷久久 | 午夜av剧场| 91在线在线观看 | 国产精品 国内视频 | 亚洲作爱视频 | 波多野结衣资源 | 91av在线免费播放 | 国产在线91精品 | 又紧又大又爽精品一区二区 | 久久久鲁| 欧美日韩三级 | 久久久国产精品人人片99精片欧美一 | 免费av片在线| 国产精品综合在线 | 啪啪小视频网站 | 国产免费作爱视频 | 日韩乱色精品一区二区 | 久久91久久久久麻豆精品 | 正在播放久久 | 99久久99视频只有精品 | 狠狠躁日日躁夜夜躁av | 久草视频在线免费看 | 13日本xxxxxⅹxxx20 | 91在线视频精品 | 黄色看片| 香蕉视频亚洲 | 在线影院 国内精品 | 国产成人亚洲精品自产在线 | 99精品视频网站 | 91在线超碰| 久久五月婷婷丁香社区 | 最近中文字幕大全 | 国产精品久久99精品毛片三a | 国产一区二区精品 | 99福利片 | 日韩爱爱网站 | av综合av | 成年人在线播放视频 | 深夜免费网站 | 99热精品久久| 亚洲性视频| 一本一道波多野毛片中文在线 | 日韩极品在线 | 天天操夜夜曰 | 国产麻豆精品传媒av国产下载 | 亚洲专区路线二 | 免费看国产一级片 | av电影av在线 | 欧美极品一区二区三区 | 精品一区二区三区在线播放 | 二区三区av | 国产精品永久免费在线 | 麻豆一区在线观看 | 久久久久免费网 | 久久久一本精品99久久精品 | 免费开视频 | 天天色视频 | 欧美性天天 | 久久免费一 | 国外成人在线视频网站 | 国产免费一区二区三区最新 | 久久综合色综合88 | 波多野结衣在线播放一区 | 久精品视频| 色综合天天狠天天透天天伊人 | 2023av在线 | a级片在线播放 | 五月激情久久 | 中中文字幕av在线 | 国内精品国产三级国产aⅴ久 | 国产香蕉视频在线观看 | 日韩av高清在线观看 | 91久久国产露脸精品国产闺蜜 | 一区二区精品在线视频 | 国产免费av一区二区三区 | 亚洲天天在线日亚洲洲精 | 亚洲国产经典视频 | 国外成人在线视频网站 | 美女久久一区 | 亚洲精品久久久久中文字幕m男 | 国内精品99 | 国产在线观看你懂的 | 九七视频在线 | 91少妇精拍在线播放 | 国内小视频 | 国产亚洲在线视频 | 九色琪琪久久综合网天天 | 亚洲高清视频在线观看免费 | 99999精品视频 | 四虎国产精品免费 | 视色网站 | 九月婷婷人人澡人人添人人爽 | 国产午夜精品理论片在线 | 天堂在线视频免费观看 | 天天干天天操天天拍 | 69精品视频 | 国产手机精品视频 | 久久精品视频在线 | 五月天色站| 午夜精品一区二区三区在线播放 | 正在播放国产91 | 国产精品嫩草影院123 | 91在线小视频 | 欧美久久影院 | 国产精品va在线观看入 | av免费在线观看网站 | 成人在线视频一区 | 高潮久久久久久 | 久久激情视频 | 亚洲在线视频免费观看 | 国产精品影音先锋 | 国产精品精 | 手机在线视频福利 | 欧美成人h版电影 | www.亚洲黄色 | 蜜臀av麻豆| 国产涩涩在线观看 | 欧美a√大片 | 国产成人av综合色 | 一区精品久久 | 国产乱对白刺激视频不卡 | 97人人人人 | 99在线观看免费视频精品观看 | 天天干天天干天天色 | 在线久久 | 久久综合九色综合欧美就去吻 | 狠狠色丁香婷婷综合基地 | 亚洲国产精品小视频 | 在线观看一区 | 亚洲久久视频 | 欧美日韩高清一区二区 国产亚洲免费看 | av一级片 | 免费福利小视频 | 国产在线1区 | 亚洲黄色av网址 | 日韩免费视频在线观看 | 欧美另类亚洲 | 亚洲人成人99网站 | 香蕉视频在线免费 | 天天综合婷婷 | 99r国产精品| 久久国产电影 | 日本电影黄色 | 看国产黄色片 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 午夜性生活| 国产精品视频资源 | 亚洲每日更新 | 久久激情视频 久久 | 免费人成在线观看网站 | 久久国产精品免费观看 | 丁香色婷 | 久爱精品在线 | 亚洲日本三级 | 全久久久久久久久久久电影 | 在线精品观看国产 | 国产中文欧美日韩在线 | 亚洲一区美女视频在线观看免费 | 久久99视频免费 | 欧美日韩高清一区二区三区 | 欧美一级久久久久 | 成人a级免费视频 | 色片网站在线观看 | 手机看国产毛片 | 亚洲高清在线视频 | 欧美日韩高清一区二区 | 日韩伦理一区二区三区av在线 | 午夜av免费在线观看 | 国产免费又爽又刺激在线观看 | 久草在线综合网 | 国产成人免费观看久久久 | 成人免费在线网 | www一起操| 久久久久久久久久福利 | 精品久久中文 | 久草在线免费新视频 | av片一区 | 欧洲精品亚洲精品 | 日日干天天爽 | 久久视频6 | 91成人黄色 | 97在线精品 | 久久成年人视频 | 激情欧美xxxx | 亚洲一区二区精品3399 | 久久精品久久精品久久39 | 丁香六月国产 | 日本在线视频一区二区三区 | 久久精品国产成人精品 | 亚洲三级毛片 | 欧美日韩一区二区三区在线观看视频 | 国产精品久久久久久久久大全 | 日韩乱理| 中文字幕乱码一区二区 | 色天天综合久久久久综合片 | 国产精选在线 | 91亚洲狠狠婷婷综合久久久 | 精品国产自 | 久久久久视| 最新国产在线视频 | 久久影视一区二区 | 激情视频区 | 涩五月婷婷 | 免费网址在线播放 | 在线观看日韩视频 | 韩国av一区二区 | 中文字幕一区二区三区在线视频 | 久草在线播放视频 | 亚洲国产精品va在线 | 亚洲一区美女视频在线观看免费 | 美女久久久久久久 | 国产精品乱码一区二三区 | 欧美激情第28页 | 日韩在线电影一区 | 中文字幕日韩在线播放 | 婷婷六月综合网 | 懂色av一区二区三区蜜臀 | 99久久99热这里只有精品 | 日韩精品网址 | 91色在线观看视频 | 久久国内精品99久久6app | 日本爱爱片| 最近中文字幕大全中文字幕免费 | 高清av网站 | 国产白浆在线观看 | 日韩欧美久久 | 一区二区三区日韩在线观看 | 亚洲精品午夜aaa久久久 | 亚洲国产午夜精品 | 国产精品毛片一区二区在线看 | 91女神的呻吟细腰翘臀美女 | 精品网站999www | 中文字幕一区二区三区四区 | 精品久久久久久久久久 | 最新国产精品拍自在线播放 | 国产成人在线一区 | 国产99久久 | 91久久久久久久一区二区 | 成年人免费看的视频 | 91在线免费播放 | 色久五月 | 日日夜夜婷婷 | 国产在线视频不卡 | 热久久99这里有精品 | av大全在线播放 | 国产黄色片网站 | 国产美女精品在线 | 国产不卡一二三区 | 韩国精品一区二区三区六区色诱 | 99久久精品国产亚洲 | 福利视频午夜 | 狠狠色丁香久久婷婷综合_中 | 人人射| 欧美日韩视频在线观看一区二区 | 99久久精品国产系列 | 亚洲一区天堂 | 9在线观看免费高清完整版在线观看明 | 午夜精品电影 | 国产精品 中文在线 | www.狠狠色.com | 日韩专区 在线 | 97人人艹| 色就是色综合 | 97国产精品久久 | 国产精品久久久久久高潮 | 狠狠的操狠狠的干 | 午夜视频在线观看一区二区三区 | 久久人人爽 | 国产视频黄| 中文字幕在线观看一区 | 欧美成人一二区 | 麻豆 91 在线| 欧美男同视频网站 | 国产 欧美 在线 | 欧美一级片免费在线观看 | 久久国产精品99久久久久久丝袜 | 日韩国产精品一区 | 国产一区欧美一区 | 婷婷五月在线视频 | 免费视频一二三区 | 精品国产1区2区 | 免费观看www7722午夜电影 | 中文字幕一区二区三区乱码在线 | 成人动漫一区二区三区 | 五月婷婷婷婷婷 | 中文在线√天堂 | 日韩一二区在线观看 | 91大神一区二区三区 | 久草网站在线 | 又爽又黄在线观看 | 精品久久久久久亚洲 | 欧美日韩精品在线观看 | 99精品黄色 | 日日夜夜天天 | 国产五月天婷婷 | 欧洲成人av | 国产精品一区二区三区观看 | 2019天天干天天色 | 日韩v欧美v日本v亚洲v国产v | 国产视频在线观看免费 | 久久久久国 | 在线免费视频一区 | 国产99久久九九精品免费 | 国内精品久久久久久久久 | 麻豆高清免费国产一区 | 欧美日韩一级视频 | 久久欧美在线电影 | 久久精品欧美一区二区三区麻豆 | 中文字幕第 | 精品国产一区二区三区在线观看 | 伊人超碰在线 | 国产3p视频 | 91漂亮少妇露脸在线播放 | www操操操| 亚洲狠狠操| 九九九九精品九九九九 | 国产精品手机播放 | 国产一级一片免费播放放 | 欧美日本国产在线观看 | 久久免费精品视频 | 国产精品一区二区av日韩在线 | 色综合久 | 国产91国语对白在线 | 一区二区 不卡 | 日韩一区二区三区高清免费看看 | 久久久久综合 | 国产又粗又猛又色 | 波多野结依在线观看 | 久久人人添人人爽添人人88v | 久久视频免费 | 在线黄色av | 日批视频在线播放 | 五月婷婷视频在线 | 亚洲日本一区二区在线 | 麻豆国产精品视频 | 992tv成人免费看片 | 免费黄色看片 | 亚洲午夜精品久久久久久久久久久久 | 97精品在线视频 | 99色免费 | 久久精品日产第一区二区三区乱码 | 在线观看午夜av | 精品视频在线观看 | 国产区在线 | 国产视频精品免费播放 | 蜜臀久久99精品久久久无需会员 | 伊人在线视频 | 欧美日韩电影在线播放 | av黄免费看 | 天天摸夜夜添 | 久久天堂亚洲 | 精品在线观看国产 | 免费中文字幕 | 又黄又爽又刺激的视频 | 五月婷婷色丁香 | 黄色a视频免费 | 国产午夜精品一区 | 亚洲综合网站在线观看 | 亚洲综合在线播放 | 国产福利一区二区三区视频 | 久久99热精品这里久久精品 | 久久国产精品二国产精品中国洋人 | 激情久久影院 | 91看片一区二区三区 | 欧美日本不卡视频 | 成人欧美一区二区三区黑人麻豆 | 麻豆精品视频 | 不卡的一区二区三区 | 波多野结衣视频一区二区三区 | 久久99操| 99热最新精品 | 国产精品区在线观看 | 色婷婷丁香| 亚洲欧洲日韩在线观看 | 国产精品91一区 | 久久亚洲专区 | 日韩美av在线| 国产日韩视频在线 | 亚洲视频 一区 | 人人干在线观看 | 91看片淫黄大片在线播放 | 日韩二区在线播放 | 国产精品一区二区美女视频免费看 | 国产一区二区精 | 丁香色婷 | 亚洲黄网站 | 国产a级片免费观看 | 国产在线传媒 | 中文字幕在线视频国产 | 天天干中文字幕 | 久久96 | 成人av影视观看 | 干综合网 | 午夜精品久久久久久久99热影院 | 国产精品免费久久久久久久久久中文 | 国内精品免费久久影院 | 偷拍精偷拍精品欧洲亚洲网站 | 免费看一级黄色 | 黄av在线| 99久久精品久久久久久动态片 | 九九av| 免费成人黄色av | 色婷婷综合久久久中文字幕 | 黄色小网站在线 | 国产精品成人久久久久久久 | 国产精品一区二区三区电影 | 天天操天天射天天爽 | 少妇自拍av | 午夜国产影院 | 丁香六月在线观看 | 93久久精品日日躁夜夜躁欧美 | 人人狠 | 一区二区欧美日韩 | 狂野欧美激情性xxxx | 精品麻豆入口免费 | 人人插人人费 | 最近高清中文字幕 | 久久66热这里只有精品 | 在线日韩视频 | 久久亚洲影视 | 欧美日韩精品在线免费观看 | 欧美999| 久久久久久久久久久福利 | 日韩亚洲在线 | 国产亚洲视频在线观看 | 天堂av在线网站 | 日韩欧美高清一区二区 | 久久久久一区二区三区 | 欧美日韩在线第一页 | 久久草草影视免费网 | 午夜少妇一区二区三区 | 亚洲高清精品在线 | 在线观看国产日韩欧美 | www.在线观看视频 | 婷婷综合视频 | 五月天激情视频在线观看 | 狠狠色噜噜狠狠狠狠2021天天 | 久久久国产一区 | 在线视频精品播放 | 国产很黄很色的视频 | 中文字幕二区三区 | 亚洲精品综合欧美二区变态 | 97视频免费在线看 | 国产精品网红福利 | 国产精品免费视频久久久 | 精品一区二区av | 国产麻豆精品免费视频 | 狠狠夜夜 | 国产精选在线观看 | 中文字幕在线观看一区二区三区 | 欧美亚洲精品一区 | 三级av免费| 亚洲黄色激情小说 | www.色五月| 天干啦夜天干天干在线线 | 久久天天操 | 亚州激情视频 | 狠狠狠色丁香婷婷综合久久88 | 免费色网 | 久久婷综合 | 丝袜美腿一区 | 国产v欧美 | 成人影音在线 | 97视频人人免费看 | 日本精品视频在线 | 精品国产中文字幕 | 精品一区三区 | 黄色三级视频片 | 国产日韩三级 | 亚洲爱爱视频 | 五月天婷婷狠狠 | 射射色 | 亚洲精品影视在线观看 | 色悠悠久久综合 | 国精产品永久999 | 国产在线色 | 国产最新在线 | 国产 日韩 在线 亚洲 字幕 中文 | av免费观看网址 | 久久99精品国产麻豆婷婷 | 国产区在线视频 | 久久久久久久亚洲精品 | 日日草视频 | 成人av片免费观看app下载 | 日本中文字幕视频 | 国产乱对白刺激视频在线观看女王 | 99久久精品免费看国产一区二区三区 | 欧美淫视频 | 草久久精品 | 免费在线国产视频 | 亚洲高清久久久 | 亚洲成免费 | 久精品视频免费观看2 | 欧美日韩性视频在线 | 91爱爱视频 | 国产麻豆精品传媒av国产下载 | 国产一区二区在线免费观看 | 又湿又紧又大又爽a视频国产 | 午夜影院一级 | 久久久综合香蕉尹人综合网 | 亚洲伦理一区二区 | 日韩com | 伊人五月天综合 | 色婷五月| 国产一区二区在线免费 | av三级在线免费观看 | 日韩一区精品 | 天天天综合 | 在线亚洲日本 | 久精品在线观看 | 久久亚洲二区 | 成年人视频在线免费播放 | 国产精品久久久久久超碰 | 日韩理论片在线观看 | 久综合网 | 久草香蕉在线视频 | 国产婷婷 | 欧美日一级片 | 中文字幕888| 99久久综合精品五月天 | 亚洲成年人免费网站 | 看片一区二区三区 | 日韩av中文在线观看 | 午夜.dj高清免费观看视频 | 国产中文字幕一区二区 | 日韩精品在线播放 | 色婷婷六月天 | av电影免费看 | 亚洲精品午夜aaa久久久 | 久久av影院 | 一区二区三区高清在线 | 国产在线精品播放 | 亚洲一区动漫 | 久久99热国产 | 亚洲一区二区三区在线看 | 亚洲国产精品免费 | 91精品国产高清 | 免费在线观看不卡av | 最新国产福利 | 91天天视频 | 色综合咪咪久久网 | 精品国产乱码久久久久 | av中文在线 | 日韩在线观看中文字幕 | 日韩欧美在线一区二区 | 日韩91在线 | 91精品国自产拍天天拍 | 草久视频在线观看 | 2021国产精品视频 | 美州a亚洲一视本频v色道 | 精品免费视频 | 欧美日韩国产页 | 91成人看片| 久久神马影院 | 久久九九免费视频 | 在线亚州| 亚洲黄a| 国产91精品久久久久 | 亚洲精品国产自产拍在线观看 | 成人网在线免费视频 | 色网免费观看 | 午夜精品视频免费在线观看 | 天天射网 | 国产高清视频在线 | 97在线观 | 国产精品国产自产拍高清av | 精品国产乱码一区二区三区在线 | 粉嫩一区二区三区粉嫩91 | 亚洲午夜激情网 | 黄色免费看片网站 | 99精品欧美一区二区蜜桃免费 | 国产精品免费在线播放 | 狠狠的干狠狠的操 | 综合天天 | av一区二区在线观看中文字幕 | 欧美日韩在线视频一区 | 就要色综合 | 视频在线亚洲 | 亚洲午夜精 | 欧美精品在线观看免费 | 国产一区二区三区免费在线观看 | 91网址在线看| 国产手机在线观看 | 国产麻豆精品久久 | 色婷婷亚洲综合 | 日韩网站在线播放 | 久久短视频 | 日韩在线第一 | 国产精品影音先锋 | 中文字幕在线一区二区三区 | 久久久久久久久久久福利 | 成人一区不卡 | 91香蕉视频720p | 久久久精品高清 | 菠萝菠萝在线精品视频 | 亚洲午夜久久久久久久久电影网 | 911精品美国片911久久久 | 久香蕉| 91av在线看| 亚洲国产成人高清精品 | 天天插伊人 | 人人澡人人舔 | 国产视频在线观看一区 | 国产精品淫片 | 视频在线日韩 | 怡红院av久久久久久久 | 亚洲毛片久久 | 欧美污在线观看 | 欧美一级性生活视频 | 亚洲精品天天 | 日韩免费在线网站 | 激情综合五月 | 亚洲综合色av | 中文在线中文a | 人人爽人人看 | 婷婷在线资源 | 日韩免费在线一区 | 国产成人在线免费观看 | 日韩精品久久久 | 日日摸日日爽 | 亚洲国产手机在线 | 高清av免费一区中文字幕 | 国产一级片久久 | 久久精品一区二区三区国产主播 | 午夜精品一区二区三区四区 | 久久久久久麻豆 | 国产a级免费 | 人人看黄色 | 国产精品一区二区中文字幕 | 色资源二区在线视频 | 亚洲免费在线播放视频 | 五月天婷婷在线播放 | 懂色av一区二区在线播放 | 国产精品久久久久久吹潮天美传媒 | www.av在线.com | 色综合久久88色综合天天免费 | 91免费高清 | 日韩欧美一级二级 | 国内小视频在线观看 | 欧美国产亚洲精品久久久8v | 久久久久久久久久久免费视频 | 精品国产一区二区三区四区在线观看 | 国产在线不卡一区 | www.福利| 九九久久精品视频 | 999久久| 国产精品都在这里 | 天天激情综合 | 久久精品99国产国产精 | 国产精品人人做人人爽人人添 | 一区二区电影在线观看 | 日韩在线观看小视频 | 成人一级在线观看 | 国产精品日韩在线观看 | 狠狠色婷婷丁香六月 | 久久国产精品色婷婷 | 麻豆久久精品 | 日韩中文字幕视频在线 | 亚洲色图激情文学 | 国产精品一区二区三区99 | 久久国产精品二国产精品中国洋人 | 欧美日高清视频 | 一区二区三区高清在线观看 | 亚洲婷婷综合色高清在线 | 人人舔人人干 | 一区二区三区四区五区在线 | 欧美激情视频一区 | 在线中文字幕网站 | 国产精品毛片久久久久久久久久99999999 | 久久久久综合精品福利啪啪 | 久久久私人影院 | 韩国av不卡 | 黄色www在线观看 | 国产专区精品视频 | www.五月天激情 | 日韩精品一区二区三区在线视频 | 色爱成人网| 1024手机在线看 | 久久爽久久爽久久av东京爽 | 成人久久亚洲 | 偷拍福利视频一区二区三区 | 综合色久 | 久久中文精品视频 | 中文字幕日韩免费视频 | 亚洲精品国产精品久久99热 | 国产午夜精品一区二区三区 | 国产福利午夜 | 久久综合九色综合久久久精品综合 | 国产原创在线 | 99精品在线观看视频 | 六月色丁香 | 伊色综合久久之综合久久 | 六月丁香社区 | 一区二区三区免费在线 | 91中文字幕一区 | 久久精品国产亚洲精品 | 激情网站网址 | 日韩精品一区二区三区在线播放 | 精品一区二区在线免费观看 | 免费看的黄网站 | 五月婷色 | 精品嫩模福利一区二区蜜臀 | 亚洲精品乱码白浆高清久久久久久 | 黄色毛片视频 | 国产精品久久久久久99 | 国产精品久久久久久久久久直播 | 操夜夜操 | 激情网综合| 色偷偷网站视频 | av网站在线观看免费 | 三级av免费| 999国内精品永久免费视频 | 亚洲一区二区高潮无套美女 | 中文字幕av免费在线观看 | 中文字幕丝袜美腿 | 激情网五月天 | 国产福利在线免费观看 | 久久理论片 | 91桃色视频 | 精品一区二区综合 | 天堂资源在线观看视频 | 国产aaa大片 | 国产精品久久久久久久久久久久冷 | 国内精品久久久久久久久久久 | 久久九九精品 | 久久精品视频网站 | av电影免费在线看 | 日本精品视频一区 | 国产精品专区在线观看 | 五月天激情综合网 | 99热这里只有精品国产首页 | 中文字幕在线不卡国产视频 | 精品a视频 | 午夜在线免费观看 | 在线一区观看 | 夜夜操天天 | 欧美综合久久 | 最新午夜 | 国产精品久久久久久久久久白浆 | 国产精品久久久毛片 | 4p变态网欧美系列 | 国产小视频91 | 97超碰人人澡 | 一级黄色片在线免费看 | 97在线免费观看 | 亚洲每日更新 | 欧美成人影音 | www亚洲精品 | 二区视频在线观看 | 好看av在线 | 香蕉视频免费在线播放 | 一区二区视频在线免费观看 | 91精品一区二区三区蜜臀 | 国产精品国产自产拍高清av | 中国一级特黄毛片大片久久 | 婷婷五天天在线视频 | 香蕉视频在线观看免费 | 91免费视频网站在线观看 | 久久99亚洲网美利坚合众国 | 精品国自产在线观看 | 国产精品一区二区久久精品爱微奶 | 久久欧美在线电影 | 国产色视频网站2 | 婷婷av综合 | 日韩av男人的天堂 | 日韩免费高清在线 | 菠萝菠萝在线精品视频 | 久久人人爽视频 | av在线直接看 | 免费三级黄色 | 欧美日韩性视频 | 国产三级香港三韩国三级 | 日日夜夜狠狠干 | 国产黄色成人 | 最新国产在线观看 | 99一级片| 狠狠干成人综合网 | 美女免费视频一区 | 久久一区二区三区四区 | 久久久久久久免费看 | 日韩精品一区二区三区免费观看视频 | 久久成人毛片 | 国产精品刺激对白麻豆99 | 国产麻豆视频网站 | 国产偷v国产偷∨精品视频 在线草 | 操久 | 91免费看黄 | 久久国产精品视频观看 | av在线免费观看不卡 | 久久久久久久久久久成人 | 国产 日韩 在线 亚洲 字幕 中文 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 久久久人人爽 | 国产视频99 | 日韩高清精品免费观看 | 欧美日韩国产网站 | 亚洲情感电影大片 | 亚洲精品视频免费观看 | 国产专区一 | 久久99影院| 天天色天天爱天天射综合 | 国产精品资源在线 | 久久精品精品 | 国产精品69av | 人人插人人干 | 亚洲三级网 | 日韩久久久久久久 | 日韩在线免费播放 | av免费观看网站 | 香蕉色综合 | 97福利视频 | 久久久久久久久久影视 | 久久精品在线免费观看 | 国色天香在线观看 | 99久久久国产精品 | 99理论片| 久久公开免费视频 | 国产九色视频在线观看 | 麻豆精品视频在线观看免费 | 91免费在线播放 | 国产高清视频网 | 亚洲精品视频一 | 精品国产精品久久一区免费式 | 亚洲3级| 成人播放器 | 一区二区三区免费在线观看视频 | 午夜av色 | 午夜精品一区二区三区在线视频 | 欧美精品在线一区二区 | 亚洲精品午夜国产va久久成人 | 人人看人人做人人澡 | 高潮久久久久久 | 玖玖爱免费视频 | 狠狠狠色丁香婷婷综合久久五月 | 夜夜高潮夜夜爽国产伦精品 | 国产精品嫩草影院99网站 | 日本性高潮视频 | 欧美日韩免费看 | 久热av| 色综合久久精品 | 午夜电影久久久 | 精品欧美日韩 | 91日韩精品一区 | 久久久精品电影 | 99久久精品日本一区二区免费 | 黄色网址av| 欧美激情操| 亚洲免费在线 | 一区 在线 影院 | 国产精品99久久久久久人免费 | 中文字幕丝袜制服 | 久久久久成| 成人av在线播放网站 | 成人网色 | 韩国精品在线 | 久久99操| 亚洲永久精品在线 | 国产一区二区三区视频在线 | 激情电影在线观看 | 免费网址你懂的 | 久久久18| 久久久亚洲麻豆日韩精品一区三区 | 婷婷色综 | 在线国产一区二区三区 | 夜色成人av | 在线观看色视频 | 国产最新在线观看 | 久久久久久久久久久久电影 | 欧美日韩一级视频 | 久久久在线观看 | 成人教育av | 国产色视频网站 | 中文字幕视频免费观看 | 久久视频免费观看 | 久久国内精品99久久6app | 免费高清在线视频一区· | 久久久久免费电影 | 国产精品 国内视频 | 97人人模人人爽人人喊中文字 | 国产黄色av | 在线 视频 一区二区 | 成年人黄色免费看 | 99在线精品视频在线观看 | 成人动漫一区二区 | 欧美一进一出抽搐大尺度视频 | 国产97视频 | 亚洲精品88欧美一区二区 | 中文在线中文资源 | 国产亚洲精品久久久久久无几年桃 | 天天操天天射天天操 | 成人在线视频论坛 | 久久精品视频3 | 日韩成人不卡 | 97电影在线 | 天天射天天射天天射 | 免费日韩精品 | 国产视频精品久久 | 插婷婷 | 999视频在线播放 | 91在线视频精品 | 久久男人中文字幕资源站 | 亚洲乱码久久久 | 麻豆免费在线视频 | 99久久精品免费看国产麻豆 | 97品白浆高清久久久久久 | 99婷婷狠狠成为人免费视频 | 99精品国产在热久久下载 | 黄色软件在线观看免费 | 九九热只有精品 | 久久99精品久久久久蜜臀 | 日韩三级中文字幕 | 精品国产黄色片 | 97成人免费 | 奇米影视999| 国产高清视频免费最新在线 | 91女子私密保健养生少妇 | 欧美大jb| 黄色精品久久久 | 狠狠狠色丁香婷婷综合激情 | 中文字幕免费久久 | 一区二区视频欧美 | 欧美精品小视频 | 在线一二区 | 999电影免费在线观看 | 国产日女人 | 狠狠色丁香久久婷婷综合_中 | 久久伦理视频 | 免费久草视频 | 亚洲精品2区 | 日韩在线视频在线观看 | 久久精品国产亚洲精品 | 免费三级在线 | 91精品国产自产在线观看 | 五月天堂色 | 久草手机视频 | 激情久久五月 | 超碰个人在线 | 免费在线观看av电影 | 在线观看深夜视频 | 国产综合香蕉五月婷在线 | 天天要夜夜操 | 99在线精品免费视频九九视 | 国产精品毛片一区二区 | 日日麻批40分钟视频免费观看 | 日韩特黄av | 欧美日韩综合在线观看 | 欧美久久精品 | 婷婷六月在线 | 欧美精品久久天天躁 | 亚洲在线观看av | 国产一二区视频 | 日韩在线观看三区 | 丁香婷婷综合激情五月色 | 97精品欧美91久久久久久 | 天天天操天天天干 | 性色av免费在线观看 | 国产三级午夜理伦三级 | 国产精品一区二区在线看 | 久久综合九色欧美综合狠狠 | 久久新| 亚洲精品自在在线观看 | 成年人在线播放视频 | 狠狠狠狠狠狠操 | 欧美 日韩 性| 18性欧美xxxⅹ性满足 | 狠狠狠色丁香综合久久天下网 | 国产亚洲日 | 黄色在线免费观看网址 | 国产精品男女啪啪 | 999国产在线| 黄色性av| 久久午夜国产精品 | 久久免费看片 | 日本韩国精品在线 | 亚洲毛片一区二区三区 | 色婷婷综合五月 | 日韩中文字幕电影 | 69av国产 | 亚洲性xxxx | 看片网站黄色 | 日日综合网 | 亚在线播放中文视频 | 亚洲综合欧美精品电影 | 亚洲精品视频在线观看网站 | 免费网站黄 | 色网站免费在线看 | 91中文字幕永久在线 | 久久国产网站 | 国产黄色av影视 | 午夜精品久久久久久久99 | 国产精品麻豆一区二区三区 | 国产成人福利在线 | 成人影片在线免费观看 | 免费视频一二三区 | 国产成a人亚洲精v品在线观看 | 国产精品国产三级在线专区 |