免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實戰(zhàn)洞察。

Linux內(nèi)存管理實戰(zhàn):虛擬內(nèi)存、物理內(nèi)存與進(jìn)程地址空間排查

Linux內(nèi)存管理實戰(zhàn):虛擬內(nèi)存、物理內(nèi)存與進(jìn)程地址空間排查 1. 先把三個詞的邊界劃清楚虛擬內(nèi)存、物理內(nèi)存與進(jìn)程地址空間線上告警一響很多人第一反應(yīng)是敲 top看到 used 高就慌看到 free 少就想加內(nèi)存條。這套反應(yīng)我早年也走過后來被一位老運(yùn)維按住手先把 VSZ、RSS、available 三個數(shù)讀明白再決定要不要動刀。 Linux 內(nèi)存管理這件事繞不開虛擬內(nèi)存、物理內(nèi)存、進(jìn)程地址空間這三個概念——它們是整塊拼圖的骨架也是面試和實戰(zhàn)里被問得最多、錯得最多的部分。虛擬內(nèi)存給進(jìn)程發(fā)的是提貨憑證物理內(nèi)存才是真正堆貨的倉庫而進(jìn)程地址空間就是每本憑證上標(biāo)注的取貨范圍。三者的配合一旦理解錯你看到的每一個數(shù)字都會騙你。這篇內(nèi)容偏向?qū)崙?zhàn)拆解適合三類人剛?cè)胄胁痪谩⒈籪ree輸出繞暈的運(yùn)維新人寫 C/C、Go、Java 服務(wù)想搞清楚自己進(jìn)程到底吃多少內(nèi)存的后端開發(fā)以及準(zhǔn)備系統(tǒng)方向面試、需要把碎片知識串成一條線的同學(xué)。我不會一上來就甩源碼結(jié)構(gòu)體而是先講清楚為什么要這么設(shè)計再落到可以親手敲的命令和參數(shù)最后把踩過的坑攤開說。1.1 用一個借書證類比三者的分工想象一座城市的圖書館。每一本書有固定的架位號這是物理地址但圖書館不會讓讀者直接沖進(jìn)書庫亂翻而是給每人發(fā)一張借書證證上寫的是第 3 排第 5 層左手第二本這樣的虛擬地址。讀者拿著證去前臺前臺查一張對照表把編號翻譯成真實架位再把書遞出來。這張對照表就是頁表負(fù)責(zé)翻譯的前臺就是MMU內(nèi)存管理單元集成在 CPU 里而借書證上的那個可用編號范圍就是進(jìn)程地址空間。這個類比里最關(guān)鍵的一點(diǎn)是每位讀者的借書證編號都從 1 開始互相看不見對方。進(jìn)程 A 眼里的 0x400000 和進(jìn)程 B 眼里的 0x400000完全是兩個不同的物理位置。地址隔離這件事帶來的收益遠(yuǎn)超成本——沒有它一個程序?qū)懺浇缇湍芨膲牧硪粋€程序的數(shù)據(jù)操作系統(tǒng)就得回到單道批處理的年代。另一個隱性收益是稀疏使用你申請 1GB 內(nèi)存內(nèi)核立刻給你 1GB 虛擬地址區(qū)間但物理頁要等你真正寫到那一頁才分配這叫按需分頁demand paging。很多程序申請了 1GB實際只用了 100MB靠的就是這套機(jī)制活著。1.2 用戶態(tài)、內(nèi)核態(tài)、硬件三層各管一段Linux 內(nèi)存管理的代碼橫跨三個層次理清分層之后看源碼才不迷路。最上層是用戶態(tài)接口malloc、mmap、brk、shmget這些屬于 libc 和系統(tǒng)調(diào)用層進(jìn)程能直接感知中間層是內(nèi)核的內(nèi)存管理子系統(tǒng)它負(fù)責(zé)維護(hù)進(jìn)程地址空間mm_struct、vm_area_struct、管理物理頁框struct page、做頁表映射和缺頁處理mm/目錄下那幾萬行代碼全在這里最下層是硬件包括 MMU、TLB快表、各級緩存它們按照頁表給出的規(guī)則默默工作內(nèi)核只能通過 TLB 刷新指令如invlpg和緩存控制指令去影響它。理解這個分層帶來的直接好處是以后看到內(nèi)存沒釋放你先判斷問題出在哪一層。用戶態(tài)malloc沒調(diào)free那是應(yīng)用層泄漏free調(diào)了但 RSS 不降可能是 glibc 沒把內(nèi)存還給內(nèi)核arena 緩存內(nèi)核層 slab 緩存持續(xù)增長得用slabtop去看具體哪個緩存項在膨脹再往下如果是頁表本身占得太多那就是映射數(shù)量爆炸vm.max_map_count相關(guān)。不同的層有不同的觀察工具用錯工具等于白忙一場。2. 進(jìn)程地址空間是怎么被畫出來的從一次 malloc 說起一個 C 程序啟動之后內(nèi)核給它準(zhǔn)備了一整套虛擬地址布局代碼段、數(shù)據(jù)段、BSS、堆、棧、共享庫映射區(qū)、內(nèi)核映射區(qū)每一塊都有明確的范圍和權(quán)限。這套布局不是拍腦袋定的而是幾十年演進(jìn)下來的折中結(jié)果——既要給共享庫留出足夠的隨機(jī)化空間ASLR又要讓brk擴(kuò)展堆的路徑盡量短還得給棧留出向低地址生長的余量。想搞懂valgrind、pmap、/proc/PID/maps輸出的那些行到底代表什么先得把這張布局圖刻在腦子里。2.1 32 位與 64 位的地址空間布局差在哪32 位時代最經(jīng)典的劃分是03GB 給用戶34GB 給內(nèi)核也就是 1:3 的分割比例。這個比例在 4GB 物理內(nèi)存的機(jī)器上剛剛好內(nèi)存一漲到 8GB、16GB內(nèi)核就不得不用HIGHMEM高端內(nèi)存來做臨時映射才能訪問到全部物理內(nèi)存——因為內(nèi)核能直接線性映射的虛擬地址只有 1GB。這是 32 位系統(tǒng)的歷史包袱也是為什么很多老服務(wù)在 32 位環(huán)境下會出現(xiàn)明明內(nèi)存夠用卻分配失敗的怪現(xiàn)象。x86-64 下事情寬松多了。當(dāng)前主流是四級頁表、48 位虛擬地址用戶空間和內(nèi)核空間各占 128TB0x0000_0000_0000_0000到0x0000_7fff_ffff_ffff是用戶態(tài)高地址一半是內(nèi)核態(tài)。128TB 什么概念你可以在一臺 16GB 物理內(nèi)存的機(jī)器上讓一個進(jìn)程映射 100TB 的虛擬內(nèi)存而毫無壓力——只要不去寫它。這也是容器和 JVM 敢把虛擬地址空間規(guī)劃得那么大的底氣所在。近幾年 5 級頁表LA57開始在新硬件上鋪開虛擬地址擴(kuò)大到 57 位用戶空間漲到 64PB但那是給超大規(guī)模內(nèi)存場景準(zhǔn)備的日常碰不到。需要注意的是 ASLR地址空間布局隨機(jī)化。同一份代碼跑兩次棧基址、共享庫基址、堆基址都會不一樣這是內(nèi)核故意加的安全特性。調(diào)試時如果發(fā)現(xiàn)某次崩潰地址和上次對不上別急著懷疑人生先cat /proc/sys/kernel/randomize_va_space看一眼是不是 2完全隨機(jī)化。臨時定位問題時可以設(shè)為 0 復(fù)現(xiàn)但生產(chǎn)環(huán)境千萬別關(guān)。2.2 mm_struct 與 vm_area_struct內(nèi)核眼里的進(jìn)程內(nèi)存地圖內(nèi)核怎么描述一個進(jìn)程的內(nèi)存答案是一主多從的數(shù)據(jù)結(jié)構(gòu)。mm_struct是總賬本每個進(jìn)程一個線程之間共享里面記錄著整個地址空間的起止范圍、各段起始地址start_code、end_code、start_data、start_brk、brk、start_stack、頁表根指針pgd、映射區(qū)域的紅黑樹根mm_rb、VMA 鏈表頭mm_mmap以及駐留集統(tǒng)計rss_stat。vm_area_struct簡稱 VMA是分賬明細(xì)每一段連續(xù)、權(quán)限相同的虛擬區(qū)間對應(yīng)一個 VMA記錄vm_start、vm_end、vm_flags讀/寫/執(zhí)行/共享、vm_file如果是文件映射和vm_ops操作函數(shù)集。一個普通進(jìn)程有多少個 VMA空殼程序大概十幾個一個跑著 JVM 或者帶了幾十個.so的服務(wù)幾百到幾千個都正常。/proc/PID/maps里每一行就是一個 VMA/proc/PID/maps的行數(shù)直接等于 VMA 數(shù)量。為什么要用紅黑樹加鏈表兩套結(jié)構(gòu)因為查找方式不同——按地址查找 VMA缺頁時用走紅黑樹O(log n)順序遍歷全部映射fork時復(fù)制、munmap時檢查走鏈表。內(nèi)核里這種一套數(shù)據(jù)、兩種索引的設(shè)計非常常見看到類似結(jié)構(gòu)別覺得冗余先想清楚兩個訪問路徑分別是誰在用。VMA 還有一個容易被忽略的作用它承載了分配語義。當(dāng)進(jìn)程調(diào)用malloc(1MB)時glibc 通常走mmap內(nèi)核創(chuàng)建一個新的匿名 VMA權(quán)限是讀寫、不關(guān)聯(lián)文件而malloc(16)走的是堆擴(kuò)展改寫的是brk指針VMA 只是被拉伸或合并。這就是為什么同一份程序里不同大小的分配在/proc/PID/maps里表現(xiàn)完全不同。2.3 malloc 到底是走 brk 還是 mmap這是被問得最多的問題之一答案是有閾值。glibc 默認(rèn)的M_MMAP_THRESHOLD是128KB小于它的分配從堆上切brk區(qū)域大于等于它的走mmap單獨(dú)映射一個匿名段。這個閾值不是固定的glibc 有動態(tài)調(diào)整機(jī)制當(dāng)你free掉一塊大于當(dāng)前閾值的 mmap 內(nèi)存時閾值會被抬高到那塊內(nèi)存的大小上限 32MB64 位。這個動態(tài)機(jī)制是為了避免大塊分配、釋放、再分配反復(fù)觸發(fā) mmap/munmap 系統(tǒng)調(diào)用。分配方式典型觸發(fā)條件釋放行為常見觀察現(xiàn)象brk小塊 128KB不一定歸還內(nèi)核可能留在 arenaRSS 不降VSZ 穩(wěn)定mmap匿名映射大塊≥ 128KBfree后通常直接munmapRSS 立即下降mmap文件映射mmap()顯式調(diào)用依賴引用計數(shù)與msync計入Mapped字段實操上有個細(xì)節(jié)值得記查看閾值可以用MALLOC_MMAP_THRESHOLD_環(huán)境變量覆蓋也可以用mallopt(M_MMAP_THRESHOLD, size)在代碼里調(diào)。我處理過一個日志服務(wù)的 RSS 緩慢增長問題最后定位到就是頻繁分配 100KB200KB 的緩沖區(qū)正好卡在閾值邊緣來回震蕩導(dǎo)致 arena 里堆了一片無法回收的碎片。把緩沖區(qū)改成固定大小的對象池之后RSS 曲線立刻拉平。提示glibc的多線程分配有一個常被忽略的設(shè)定——arena 數(shù)量默認(rèn)是8 × CPU 核數(shù)64 位下。每個線程第一次分配內(nèi)存時可能綁定到一個新 arena而單個 arena 在 64 位下的虛擬地址上限是 64MB。線程多、分配頻繁的服務(wù)光 arena 的虛擬地址占用就可能上千 MB。設(shè)MALLOC_ARENA_MAX2~4往往能顯著壓低 VSZ 和碎片代價是極端并發(fā)下鎖競爭會變強(qiáng)。3. 虛擬地址到物理地址的那一跳頁表、MMU 與缺頁異常前面說的都是賬本現(xiàn)在看翻譯這一步。CPU 執(zhí)行指令時拿到的是虛擬地址必須經(jīng)過 MMU 翻譯成物理地址才能訪問內(nèi)存。翻譯的依據(jù)是頁表翻譯的結(jié)果被緩存進(jìn) TLB。翻譯過程中如果發(fā)現(xiàn)缺少映射或者權(quán)限不符硬件會拋出一個缺頁異常page fault把控制權(quán)交給內(nèi)核的do_page_fault由內(nèi)核決定是補(bǔ)一頁、換一頁還是直接給進(jìn)程發(fā) SIGSEGV。這一步是整個內(nèi)存管理里唯一每次訪存都要走的路徑它的效率直接決定程序性能。3.1 多級頁表與 TLB為什么不做一本大字典最樸素的想法是一張大表把 48 位虛擬地址全映射一遍。算一下就知道不行——48 位地址空間、4KB 頁大小需要 2^36 個頁表項每項 8 字節(jié)合計 512GB。每個進(jìn)程一張內(nèi)存直接爆掉。真實做法是多級頁表x86-64 四級頁表把 48 位虛擬地址切成PGD(9) PUD(9) PMD(9) PTE(9) 頁內(nèi)偏移(12)每一級 512 項。關(guān)鍵在于按需分配進(jìn)程只用了幾百 MB 內(nèi)存那么絕大部分 PGD 表項是空的下面的 PUD/PMD/PTE 表根本不存在。稀疏結(jié)構(gòu)換空間這是多級頁表存在的唯一理由。代價是訪存次數(shù)。一次翻譯理論上要走 4 次內(nèi)存讀取每級頁表一次加上真正取數(shù)據(jù)那次一次訪存變五次性能直接腰斬。所以 CPU 里塞了 TLB——一個幾十到幾百項的高速緩存專門存最近用過的虛擬頁到物理頁的映射。TLB 命中時翻譯是零開銷的。TLB 有多大典型的數(shù)據(jù) TLB 一級緩存 64 項左右二級 15002000 項。這組數(shù)字解釋了一個現(xiàn)象頻繁訪問大范圍、隨機(jī)分布的地址TLB 命中率會崩性能隨之驟降。這也是大頁HugePage能提速的根本原因——一個 2MB 大頁只用一項 TLB 覆蓋 512 倍于 4KB 頁的范圍。3.2 缺頁異常的三種典型面孔缺頁異常不是錯誤是正常流程。它至少有三種形態(tài)用ps -o maj_flt,min_flt或者/proc/PID/stat的對應(yīng)字段能看到計數(shù)。類型觸發(fā)條件內(nèi)核動作代價次缺頁minor fault頁已在內(nèi)存只是當(dāng)前進(jìn)程沒有映射建立頁表項建立反向映射微秒級主缺頁major fault頁不在內(nèi)存需從磁盤/swap 讀入發(fā)起 I/O阻塞等待毫秒級慢 1000 倍非法訪問地址未映射或權(quán)限不符發(fā)送 SIGSEGV / SIGBUS進(jìn)程終止次缺頁最常見的場景是fork之后子進(jìn)程第一次寫內(nèi)存以及匿名內(nèi)存首次被寫。主缺頁則和文件讀取、swap 換入強(qiáng)相關(guān)。判斷一個服務(wù)的性能瓶頸是不是內(nèi)存導(dǎo)致看一眼主缺頁率就能篩掉一大半可能性——如果maj_flt每秒幾百上千次說明系統(tǒng)正在反復(fù)從磁盤撈數(shù)據(jù)內(nèi)存明顯不夠用了。注意maj_flt計數(shù)是累計值別直接看絕對值。正確做法是間隔采樣算差值cat /proc/PID/stat | awk {print $12, $10}取兩次除上間隔秒數(shù)得到每秒速率。這個坑我見太多人踩了。3.3 fork 為什么快寫時復(fù)制的賬怎么算fork一個占 2GB 內(nèi)存的進(jìn)程理論上要復(fù)制 2GB 數(shù)據(jù)實際上幾毫秒就返回了。原因就是寫時復(fù)制Copy-On-WriteCOW。fork時內(nèi)核并不復(fù)制物理頁只復(fù)制頁表——父子的頁表項都指向同一批物理頁同時把這些頁標(biāo)記為只讀。誰先寫誰觸發(fā)一次缺頁內(nèi)核此時才真正復(fù)制一頁出來改好頁表、恢復(fù)可寫。這套機(jī)制帶來的第一個后果是父子進(jìn)程共用未修改的內(nèi)存實際物理占用遠(yuǎn)小于 2×2GB。第二個后果更微妙——fork之后立刻exec啟動新程序那么 COW 復(fù)制的頁幾乎全被丟棄等于白做。所以現(xiàn)代啟動子進(jìn)程的場景更推薦posix_spawn或者vfork能繞開這一層。COW 還有一個隱形成本容易被低估頁表本身的復(fù)制。大內(nèi)存進(jìn)程的頁表可能有幾十 MBfork時這部分是要實打?qū)崗?fù)制的。所以一個進(jìn)程如果映射了 100GB 的稀疏地址空間比如 JVM 堆預(yù)留fork出來的子進(jìn)程光是頁表拷貝就要花掉幾十毫秒。高頻fork的場景比如老式 CGI、某些 PHP-FPM 配置性能差很多時候根子在這里。4. 物理內(nèi)存怎么發(fā)出去伙伴系統(tǒng)、slab 與頁緩存虛擬地址講完了該看真實的物理頁怎么管。Linux 的物理內(nèi)存管理是分層的從上往下依次是 NUMA 節(jié)點(diǎn)、內(nèi)存區(qū)域zone、頁框page分配時從伙伴系統(tǒng)拿整頁小對象則走 slab 分配器從頁里切。除此之外還有一大塊內(nèi)存被頁緩存占用它既不是某個進(jìn)程的私有財產(chǎn)也不能簡單地算作已用。絕大多數(shù)關(guān)于內(nèi)存的誤判都發(fā)生在沒搞清楚這個數(shù)字屬于哪一層上。4.1 node、zone、page物理內(nèi)存的三層組織最頂層是節(jié)點(diǎn)node對應(yīng) NUMA 架構(gòu)里的一個 CPU 內(nèi)存控制器。單路機(jī)器通常只有一個 node雙路服務(wù)器有兩個。每個節(jié)點(diǎn)用pglist_data描述節(jié)點(diǎn)內(nèi)再劃分 zone。zone 的劃分是歷史遺留和硬件限制的產(chǎn)物ZONE_DMA給那些只能做 24 位尋址的老式外設(shè)用通常在 16MB 以下現(xiàn)代系統(tǒng)基本空著。ZONE_DMA32只能做 32 位尋址的設(shè)備用x86-64 上常見。ZONE_NORMAL常規(guī)內(nèi)存絕大多數(shù)內(nèi)核分配都從這里來。ZONE_HIGHMEM32 位時代的高端內(nèi)存64 位系統(tǒng)上不存在。ZONE_MOVABLE為內(nèi)存熱插拔和減少碎片預(yù)留的可遷移區(qū)。每個 zone 內(nèi)部用free_area[MAX_ORDER]數(shù)組管理空閑頁MAX_ORDER默認(rèn)是 11對應(yīng)最大 4MB 的連續(xù)塊2^10 × 4KB。每個物理頁有一個struct page描述符典型的 64 字節(jié)大小。算一下16GB 內(nèi)存、4KB 頁共 400 萬個頁光是struct page數(shù)組就要吃掉 256MB。這就是為什么內(nèi)核會選擇用vmemmap把struct page數(shù)組映射成一個緊湊的虛擬連續(xù)區(qū)域——節(jié)省的是 TLB 和尋址開銷。4.2 伙伴系統(tǒng)與內(nèi)存碎片伙伴系統(tǒng)的核心思想是按 2 的冪次分配。你要 3 個頁它給你 4 個頁的塊你要 5 個頁它給你 8 個頁。釋放時如果伙伴塊也空閑就合并成更大的塊向上遞歸。這保證了分配和釋放都是 O(log n)也保證了總能找到盡可能大的連續(xù)塊。問題是長期運(yùn)行后不可避免的外部碎片??臻e頁總數(shù)可能還有 1GB但沒有一塊連續(xù)的 4MB需要大塊連續(xù)內(nèi)存的分配比如某些 DMA 緩沖區(qū)、大頁申請就會失敗。內(nèi)核提供了兩個應(yīng)對手段內(nèi)存壓縮compaction把可遷移頁挪走騰出連續(xù)區(qū)域以及ZONE_MOVABLE機(jī)制把可遷移和不可遷移的頁分開放。看碎片情況直接用/proc/buddyinfo$ cat /proc/buddyinfo Node 0, zone DMA 1 1 1 0 2 1 1 0 1 1 3 Node 0, zone DMA32 1234 1088 823 512 301 188 102 61 30 11 4 Node 0, zone Normal 30012 20114 12003 6102 3011 1502 701 312 140 55 12每一列表示該 order 下的空閑塊數(shù)量order 0 是 4KB 單頁order 10 是 4MB 塊。如果左邊幾列數(shù)字很大、右邊幾列接近 0說明系統(tǒng)碎片嚴(yán)重遇到需要大塊連續(xù)內(nèi)存的分配就可能失敗即使總空閑量看起來還很充裕。這個現(xiàn)象在老機(jī)器上的典型表現(xiàn)是fork或者mmap大頁時報 ENOMEM。4.3 slab/slub 與 kmalloc小對象怎么省著花內(nèi)核自己要分配的對象大多很小task_struct、dentry、inode、網(wǎng)絡(luò)套接字緩沖區(qū)都是幾百字節(jié)。如果每個都占一整頁 4KB浪費(fèi)太夸張。slab 分配器就是為了切頁而生它從伙伴系統(tǒng)拿整頁按對象大小切成等份用空閑鏈表管理。同一個緩存里的對象類型相同初始化一次可以反復(fù)復(fù)用。Linux 歷史上有三種實現(xiàn)slab、slub、slob。現(xiàn)在主流是slub代碼更簡潔、調(diào)試友好、在大型系統(tǒng)上擴(kuò)展性更好。查看方式$ sudo slabtop -o -s c | head -15 Active / Total Objects (% used) : 2891234 / 3120987 (92.6%) Active / Total Slabs (% used) : 98234 / 98234 (100.0%) Active / Total Caches (% used) : 118 / 165 (71.5%) Active / Total Size (% used) : 512345.67K / 561234.12K (91.3%) Minimum / Average / Maximum Object : 0.01K / 0.29K / 8.00K OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME 892500 882301 98% 0.19K 42500 21 3400000K dentry 621400 601200 96% 1.05K 31070 20 2485600K ext4_inode_cache ...dentry和inode緩存排在前兩名是極其正常的現(xiàn)象它們會隨著文件訪問自然增長也會在內(nèi)存壓力下被回收——注意SReclaimable和SUnreclaim的區(qū)別前者能還后者不能還。如果某天發(fā)現(xiàn)SUnreclaim持續(xù)漲而不落那才是真問題一般是某個內(nèi)核模塊的緩存泄漏。實操心得kmalloc和vmalloc的區(qū)別值得記住。kmalloc從線性映射區(qū)分配物理連續(xù)速度快但大小受限一般不超過 4MBvmalloc只保證虛擬連續(xù)物理上可以不連續(xù)代價是多一層頁表和多一次 TLB 未命中。寫驅(qū)動或者看內(nèi)核日志時看到vmalloc分配失敗但內(nèi)存還有富余八成是虛擬地址空間不夠x86-64 上 32TB 左右得查/proc/vmallocinfo。4.4 頁緩存、臟頁回寫與回收水位文件讀寫不會直接落到磁盤中間隔著頁緩存page cache。讀的時候內(nèi)核先把文件頁讀進(jìn)內(nèi)存下次讀同一塊直接命中內(nèi)存寫的時候先寫進(jìn)內(nèi)存里對應(yīng)的頁標(biāo)記為臟頁dirty再由pdflush/writeback內(nèi)核線程批量刷回磁盤。這就是為什么free輸出里buff/cache常年占大頭也是為什么很多內(nèi)存泄漏的錯覺其實來自頁緩存。臟頁刷盤的策略由兩組 sysctl 控制參數(shù)默認(rèn)值含義vm.dirty_background_ratio10臟頁占內(nèi)存比例超過此值后臺線程開始異步回寫vm.dirty_ratio20超過此值寫操作同步阻塞直到臟頁降下來vm.dirty_expire_centisecs3000臟頁最長駐留時間30 秒vm.dirty_writeback_centisecs500回寫線程喚醒間隔5 秒這兩個 ratio 參數(shù)是很多服務(wù)周期性卡頓的真兇。如果你的服務(wù)在大文件寫入時每幾十秒出現(xiàn)一次幾百毫秒的停頓大概率就是臟頁沖到dirty_ratio觸發(fā)了同步寫回所有寫入線程一起被阻塞。把dirty_ratio調(diào)低比如 5、dirty_background_ratio調(diào)更低比如 2讓回寫更平滑地發(fā)生往往能明顯改善延遲毛刺。代價是磁盤 IO 更頻繁SSD 上這點(diǎn)代價可以忽略?;厥者@部分還涉及水位線機(jī)制。每個 zone 有三個水位WMARK_MIN、WMARK_LOW、WMARK_HIGH由vm.min_free_kbytes決定基準(zhǔn)。空閑頁降到 LOW 以下喚醒kswapd后臺回收降到 MIN 以下任何分配請求都要先自己做一次直接回收direct reclaim這時分配線程會被拖住表現(xiàn)為分配內(nèi)存變慢。這就是內(nèi)存吃緊時服務(wù)響應(yīng)變慢的底層原因而不是 CPU 不夠。5. 動手排查命令和內(nèi)核接口怎么用才不誤判理論說完了進(jìn)入實操。這一節(jié)按看全局 → 看進(jìn)程 → 看細(xì)節(jié)的順序來每條命令都配上怎么讀、容易誤讀在哪。我自己的習(xí)慣是先看free定大方向再用smaps_rollup定具體進(jìn)程最后用smaps或采樣對比找具體區(qū)域。5.1 free、top、ps、pmap 的正確讀法先看free -h的輸出$ free -h total used free shared buff/cache available Mem: 62Gi 28Gi 3.2Gi 1.1Gi 31Gi 32Gi Swap: 8.0Gi 512Mi 7.5Giavailable才是還能給新程序用多少內(nèi)存的答案不是free。free只有 3.2GB 看著嚇人但available有 32GB因為那 31GB 的buff/cache大部分是可回收的頁緩存。這個字段是老版本free沒有的procps 3.3.10 之后才有現(xiàn)在還在用老版本系統(tǒng)的同學(xué)建議順手升級一下工具包能少踩很多坑。再看進(jìn)程級。ps aux里的VSZ和RSS是新手最容易搞混的兩個數(shù)指標(biāo)全稱含義用途VSZ / VIRTVirtual Set Size整個虛擬地址空間大小判斷映射規(guī)模不能當(dāng)內(nèi)存占用量RSS / RESResident Set Size已駐留在物理內(nèi)存的頁大小粗看實際占用但共享頁會重復(fù)計算PSSProportional Set Size共享頁按共享進(jìn)程數(shù)均攤?cè)萜?多進(jìn)程場景更公平USSUnique Set Size進(jìn)程獨(dú)占的物理內(nèi)存判斷進(jìn)程真實私有開銷RSS的坑在于100 個進(jìn)程映射了同一個 200MB 的.so這 200MB 會在每個進(jìn)程的 RSS 里各算一次加起來變成 20GB實際物理上只有一份。容器內(nèi)存限制打不準(zhǔn)、賬單算不清很多時候就栽在這里。想知道真實的均攤值得看PSS$ cat /proc/1234/smaps_rollup Rss: 5123456 kB Pss: 1023456 kB Pss_Anon: 800000 kB Pss_File: 223456 kB Pss_Shmem: 0 kB Shared_Clean: 4000000 kB Private_Dirty: 800000 kB Anonymous: 800000 kB Swap: 0 kBsmaps_rollup是內(nèi)核 4.14 引入的把原來要遍歷整個smaps的統(tǒng)計一次算好代價極低可以放心放進(jìn)監(jiān)控腳本里定期采集。老的smaps文件在大內(nèi)存進(jìn)程上跑一次要幾秒甚至幾十秒監(jiān)控系統(tǒng)里高頻調(diào)用它會直接把系統(tǒng)拖垮這個坑我親身經(jīng)歷過——某次告警腳本每分鐘掃一遍所有 Java 進(jìn)程的smaps導(dǎo)致磁盤 IO 和 CPU 雙雙飆高排查了半天才發(fā)現(xiàn)是監(jiān)控自己干的。5.2 /proc/meminfo 里最容易誤讀的字段/proc/meminfo是內(nèi)核內(nèi)存狀態(tài)的權(quán)威快照字段有六十多個下面挑幾個必須搞明白的$ head -20 /proc/meminfo MemTotal: 65863456 kB MemFree: 3355440 kB MemAvailable: 33000000 kB Buffers: 512000 kB Cached: 30000000 kB SwapCached: 2048 kB Active: 20000000 kB Inactive: 15000000 kB Active(anon): 12000000 kB Inactive(anon): 2000000 kB Active(file): 8000000 kB Inactive(file): 13000000 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 8388608 kB SwapFree: 7864320 kB Dirty: 51200 kB Writeback: 0 kB AnonPages: 14000000 kB Mapped: 512000 kB Shmem: 1100000 kB Slab: 3400000 kB SReclaimable: 2800000 kB SUnreclaim: 600000 kB PageTables: 120000 kB幾個要點(diǎn)Active/Inactive是 LRU 鏈表長度不是活躍內(nèi)存的語義。內(nèi)核回收時會先在 inactive 里挑不夠再把 active 降級??吹紸ctive(anon)特別大說明匿名內(nèi)存多且訪問密集這部分回收起來要去 swap代價高。AnonPages是所有匿名頁總和包括堆、棧、私有映射。它和Cached是兩大陣營前者是進(jìn)程的后者是文件的。Mapped是文件映射和共享內(nèi)存的總和通常遠(yuǎn)小于Cached因為頁緩存里很多頁只是被讀過沒有被任何進(jìn)程映射。PageTables是頁表本身占用的內(nèi)存。這個值平時幾 MB 到幾十 MB但如果一個進(jìn)程映射了幾十萬個 VMA它能漲到幾 GB。我見過一個內(nèi)存數(shù)據(jù)庫把PageTables頂?shù)?6GB最后發(fā)現(xiàn)是映射數(shù)量爆炸。CommitLimit和Committed_AS在vm.overcommit_memory2時才有強(qiáng)約束意義前者是允許承諾的上限后者是已承諾量。默認(rèn)模式 0 下這兩個值參考價值有限。5.3 幾個 sysctl 參數(shù)的取舍與實操記錄參數(shù)調(diào)優(yōu)最忌諱照抄網(wǎng)上的最佳實踐。同樣一個vm.swappiness1在數(shù)據(jù)庫服務(wù)器上是必要的在內(nèi)存只有 2GB 的老舊虛擬機(jī)上可能是災(zāi)難。下面是我自己反復(fù)驗證過的幾個參數(shù)以及調(diào)整時的判斷依據(jù)。vm.swappiness控制內(nèi)核在回收時更傾向于丟頁緩存還是換出匿名頁。默認(rèn) 60 意味著兩類內(nèi)存被同等對待。數(shù)據(jù)庫、Redis 這類自己管理內(nèi)存的服務(wù)通常希望盡量別換出匿名頁換出后延遲飆升會調(diào)成 110而桌面環(huán)境希望閑置程序盡快換出、給當(dāng)前應(yīng)用讓路可以調(diào)高。改之前先確認(rèn) swap 分區(qū)大小——如果 swap 只有 1GB調(diào)低 swappiness 基本沒意義因為換出空間本來就小。# 臨時生效 sysctl -w vm.swappiness10 # 永久生效 echo vm.swappiness10 /etc/sysctl.d/99-memory.conf sysctl --systemvm.overcommit_memory值得說一下。默認(rèn)值 0 是啟發(fā)式內(nèi)核憑經(jīng)驗判斷這次分配是否離譜1 是永遠(yuǎn)答應(yīng)適合那些自己清楚內(nèi)存用量的場景比如 Redis 官方明確建議設(shè)為 1因為它的 forkCOW 依賴過量承諾2 是嚴(yán)格模式內(nèi)核按公式CommitLimit swap RAM × overcommit_ratio / 100限制承諾總量。嚴(yán)格模式一旦開錯表現(xiàn)是內(nèi)存明明空著fork卻報 Cannot allocate memory排查起來非常反直覺。遇到這類報錯先查這個參數(shù)別急著懷疑物理內(nèi)存。vm.max_map_count默認(rèn) 65530不同內(nèi)核版本有出入用sysctl vm.max_map_count現(xiàn)場確認(rèn)。這個值限制單進(jìn)程 VMA 數(shù)量。跑 Elasticsearch、部分 JVM 應(yīng)用、或者用 mmap 處理超大文件的程序很容易撞上這個限制表現(xiàn)是OutOfMemoryError: Map failed或者mmap: Cannot allocate memory。調(diào)大到 262144 一般是安全的代價是每個 VMA 有約 200 字節(jié)的內(nèi)核開銷。vm.min_free_kbytes決定內(nèi)存回收的水位基準(zhǔn)。默認(rèn)值隨內(nèi)存大小自動計算大內(nèi)存機(jī)器可能算出幾 GB這個值并非越大越好——它直接降低了可用的緩沖空間太小又會導(dǎo)致直接回收頻繁觸發(fā)。我在一臺 128GB 的機(jī)器上把它從默認(rèn)值手動調(diào)到 2GB 后kswapd不再頻繁喚醒但服務(wù)延遲沒有變化說明默認(rèn)值本來就是合適的。沒有明確指標(biāo)支撐的調(diào)參本質(zhì)上是在制造不確定性。6. 高頻坑與排查速查表這一節(jié)講的是知道原理之后依然會錯的地方。這類問題的共同特點(diǎn)是命令都敲對了數(shù)值也都讀到了但結(jié)論錯了。原因通常是沒考慮上下文——是容器還是物理機(jī)是看總量還是看增量是匿名內(nèi)存還是文件緩存。6.1 OOM Killer 為什么挑中了你的進(jìn)程系統(tǒng)內(nèi)存耗盡時oom_killer會挑一個進(jìn)程殺掉。選擇依據(jù)是oom_score計算時考慮幾個因素進(jìn)程的 RSS swap 頁表占用越大越容易被殺、是否為特權(quán)進(jìn)程CAP_SYS_ADMIN等會降分、oom_score_adj調(diào)整值-1000 到 1000。分?jǐn)?shù)越高越容易被殺。查看方式# 看某個進(jìn)程的當(dāng)前分?jǐn)?shù) $ cat /proc/1234/oom_score 847 # 看調(diào)整值 $ cat /proc/1234/oom_score_adj 0最反直覺的一點(diǎn)占內(nèi)存最多的進(jìn)程不一定被殺。因為計算時會做開方rss / total × 1000的平方根縮小了差距再加上其他扣分項實際被殺的常常是內(nèi)存較大但不是最大、又沒有特權(quán)保護(hù)、oom_score_adj還較高的那個。我見過 MySQL 因為配了oom_score_adj -500而幸存旁邊一個只占一半內(nèi)存的日志收集進(jìn)程被干掉事后被業(yè)務(wù)方質(zhì)問為什么殺小的就是這個原因。反過來說如果你想保護(hù)某個關(guān)鍵進(jìn)程做法是# 臨時調(diào)整需要 root echo -900 /proc/$(pidof mysqld)/oom_score_adj # systemd 服務(wù)里永久配置 [Service] OOMScoreAdjust-900別設(shè)成 -1000。-1000 表示完全免疫一旦這個進(jìn)程自己泄漏長成巨獸系統(tǒng)就只能眼睜睜看著它把整機(jī)拖死連最后一道保險都沒了。生產(chǎn)環(huán)境我一般建議 -500 到 -900 之間。6.2 內(nèi)存泄漏與正常增長怎么區(qū)分RSS 一直在漲是最高頻的誤報。要區(qū)分泄漏和正常增長關(guān)鍵是看增長的形態(tài)和歸屬。正常增長通常是啟動后快速爬升到平臺期之后隨業(yè)務(wù)量波動在內(nèi)存壓力出現(xiàn)時能被換出或回收匿名頁進(jìn) swap、頁緩存被丟棄。泄漏的特征是在業(yè)務(wù)量穩(wěn)定的情況下RSS 單調(diào)上漲且不回落kswapd反復(fù)回收也壓不下去最終 OOM。判定的具體操作我一般這么走# 1. 先確認(rèn)增長的是匿名內(nèi)存還是文件緩存 $ awk /^Rss:|^Private_Dirty:|^Private_Clean:|^Shared_Clean:|^Anonymous:|^Swap:/ /proc/PID/smaps_rollup # 2. 間隔采樣算增長速率 $ for i in $(seq 1 10); do grep VmRSS /proc/PID/status; sleep 60; done # 3. 看具體是哪一段在漲 $ cat /proc/PID/smaps | awk /^[0-9a-f]/{addr$0} /^Rss:/{if($210000) print addr, $0} # 4. 用 bcc 的 memleak 抓分配棧需要內(nèi)核支持 $ sudo memleak-bpfcc -p PID -a 60第 3 步是最有價值的。它直接告訴你哪一段虛擬區(qū)間在膨脹結(jié)合區(qū)間名稱[heap]、[anon]還是某個.so基本能鎖定方向。第 4 步的memleak工具需要內(nèi)核 4.9 并安裝 bcc它通過采樣分配調(diào)用棧來定位泄漏點(diǎn)代價是開起來之后會有額外開銷別在生產(chǎn)高峰期隨便用。一個大量服務(wù)都會遇到的假泄漏glibc arena 碎片。表現(xiàn)為 RSS 緩慢上漲但mallinfo顯示uordblks已分配塊穩(wěn)定。這時候不是代碼有問題而是分配模式太碎arena 里到處是沒法合并的空洞。解決辦法是換 jemalloc/tcmalloc或者把MALLOC_ARENA_MAX調(diào)小或者干脆用malloc_trim(0)定期主動歸還。6.3 常見現(xiàn)象速查表下面這張表是我自己排查時常用的對照覆蓋了過去幾年里處理過的大多數(shù)內(nèi)存類問題。列的時候把現(xiàn)象、可能原因、驗證動作、常見處理放在一起方便直接拿去用?,F(xiàn)象可能原因驗證動作常見處理free顯示 free 極少但服務(wù)正常頁緩存占用看MemAvailable是否充足無需處理緩存會自動回收RSS 持續(xù)漲業(yè)務(wù)量不變應(yīng)用泄漏 / arena 碎片smaps分段采樣對比修代碼 / 換分配器 / 調(diào)MALLOC_ARENA_MAXfork報 Cannot allocate memoryovercommit 嚴(yán)格模式 / VMA 上限查vm.overcommit_memory、vm.max_map_count調(diào)整對應(yīng) sysctlmaj_flt速率很高內(nèi)存不足反復(fù)從磁盤/swap 取頁vmstat 1看si/so加內(nèi)存 / 調(diào)swappiness/ 檢查熱點(diǎn)數(shù)據(jù)集服務(wù)周期性卡頓數(shù)百毫秒臟頁同步回寫阻塞vmstat 1看bo尖峰調(diào)低dirty_ratioPageTables漲到 GB 級VMA 數(shù)量過多wc -l /proc/PID/maps減少映射數(shù)合并小映射內(nèi)存充足但進(jìn)程被 OOM 殺cgroup 限制 /oom_score_adjcat /sys/fs/cgroup/.../memory.max調(diào)大限制或調(diào)整 adjSUnreclaim持續(xù)上漲內(nèi)核緩存/模塊泄漏slabtop定位具體緩存升級內(nèi)核 / 卸載問題模塊這張表里的每一條我都至少真實遇到過兩次以上能背下來基本能覆蓋一線大部分場景。剩下的邊角案例靠的是對前面幾節(jié)原理的理解去推。7. 再往里一層容器、大頁與性能觀測前六節(jié)講的都是單機(jī)視角?,F(xiàn)代服務(wù)大量跑在容器里內(nèi)存的可見性和限制方式都變了大頁和高性能場景又會引入另一套機(jī)制。這一節(jié)把這兩塊補(bǔ)上最后講兩個我自己踩過的真實案例。7.1 cgroup 內(nèi)存限制與容器里的 free 陷阱容器通過 cgroup 來限制內(nèi)存。cgroup v1 用的是memory.limit_in_bytesv2 用的是memory.max路徑分別是/sys/fs/cgroup/memory/group/和/sys/fs/cgroup/group/。當(dāng)前用量看memory.usage_in_bytesv1或memory.currentv2。最大的坑是容器里執(zhí)行free看到的是宿主機(jī)的內(nèi)存不是容器的限制。因為/proc/meminfo是內(nèi)核全局?jǐn)?shù)據(jù)沒有做命名空間隔離。一個限制 512MB 的容器里free可能顯示 62GB total于是應(yīng)用啟動時按有 62GB 可用去計算堆大小一啟動就被 OOM 干掉。解決辦法有三種應(yīng)用側(cè)讀取 cgroup 文件而不是/proc/meminfo推薦JVM 從 8u191 之后默認(rèn)這么做參數(shù)-XX:UseContainerSupport掛載 lxcfs 之類的工具它對/proc/meminfo做了一層偽裝讓容器內(nèi)看到經(jīng)過計算的值顯式設(shè)置應(yīng)用的內(nèi)存上限參數(shù)-Xmx、GOMEMLIMIT等不讓它自己猜。第二個要注意的是memory.high和memory.max的區(qū)別。max是硬限制超了直接觸發(fā) OOMhigh是軟限制超了會限速——分配變慢、回收加急但不會殺進(jìn)程。生產(chǎn)環(huán)境我建議兩個都設(shè)high設(shè)在max的 80%90%這樣能在真正 OOM 之前先有一個緩沖帶從監(jiān)控上能看到限速開始的信號有時間介入而不是直接被打死。7.2 透明大頁、NUMA 與性能觀測透明大頁THP是內(nèi)核自動把 4KB 頁合并成 2MB 頁的機(jī)制好處是 TLB 覆蓋范圍擴(kuò)大 512 倍、頁表層級減少、缺頁次數(shù)大幅下降。對內(nèi)存密集型應(yīng)用大數(shù)組遍歷、數(shù)據(jù)庫緩存加速效果明顯5%15% 的性能提升很常見。但 THP 有個著名的副作用khugepaged內(nèi)核線程后臺做頁合并時會持鎖導(dǎo)致某些延遲敏感型應(yīng)用出現(xiàn)幾十毫秒的抖動。所以現(xiàn)在的主流建議是數(shù)據(jù)庫、Redis、低延遲交易類服務(wù)用madvise模式echo madvise /sys/kernel/mm/transparent_hugepage/enabled讓應(yīng)用自己決定哪塊內(nèi)存用大頁一般業(yè)務(wù)用always沒問題。查看大頁使用情況$ cat /sys/kernel/mm/transparent_hugepage/enabled always [madvise] never $ grep -i huge /proc/meminfo AnonHugePages: 512000 kB ShmemHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 Hugepagesize: 2048 kBAnonHugePages表示已經(jīng)被 THP 覆蓋的匿名內(nèi)存量。如果這個值一直是 0說明 THP 沒生效可能被never關(guān)掉了。NUMA 是另一塊。雙路服務(wù)器上CPU 訪問本地節(jié)點(diǎn)的內(nèi)存比訪問遠(yuǎn)端節(jié)點(diǎn)快 30%50%。默認(rèn)策略是就近分配但一個進(jìn)程在 CPU 0 上啟動、之后被調(diào)度到 CPU 1它的內(nèi)存可能還留在節(jié)點(diǎn) 0于是所有訪問都變成跨節(jié)點(diǎn)。觀察方式是用numastat看numa_miss和numa_foreign計數(shù)。對內(nèi)存帶寬敏感的應(yīng)用可以用numactl --membind0 --cpunodebind0綁死在一個節(jié)點(diǎn)上代價是浪費(fèi)另一半資源。除非確認(rèn)跨節(jié)點(diǎn)訪問是瓶頸否則不要輕易綁 NUMA坑比收益多。觀測工具上除了前面提到的/proc系列和slabtop值得掌握的是 bcc 工具集里的幾個工具用途典型場景cachestat頁緩存命中率判斷文件讀是否走緩存cachetop按進(jìn)程統(tǒng)計緩存命中定位哪個進(jìn)程在 missmemleak分配棧采樣定位用戶態(tài)泄漏點(diǎn)kmem內(nèi)核分配跟蹤定位內(nèi)核態(tài)泄漏oomkill捕獲 OOM 事件事后追溯被殺進(jìn)程這些工具需要內(nèi)核 4.9 和 bcc 環(huán)境在容器里跑還需要--privileged或者掛載/sys/kernel/debug部署前先確認(rèn)權(quán)限。7.3 我踩過的兩個真實案例第一個案例是容器里的 Java 服務(wù)反復(fù) OOM?,F(xiàn)象是容器限制 4GB-Xmx設(shè)了 2.5GB按理說很寬裕但運(yùn)行幾小時后必被 OOM 殺。用smaps_rollup一看RSS 只有 3.2GB其中堆占用 2.4GB剩下的 800MB 分散在線程棧200 多個線程 × 1MB 200MB、元空間150MB、JIT 代碼緩存240MB、直接內(nèi)存100MB、還有 glibc arena 碎片100MB 左右。堆只占 RSS 的四分之三其余部分如果按-Xmx去規(guī)劃必然失手。最終的解法是把-Xmx降到 2GBMaxMetaspaceSize和ReservedCodeCacheSize顯式設(shè)上限MALLOC_ARENA_MAX2并給容器留出 20% 的余量。調(diào)整后穩(wěn)定運(yùn)行了大半年。第二個案例是頁緩存把監(jiān)控搞瘋了。一臺跑著日志聚合服務(wù)的機(jī)器free顯示 used 58GB總 64GB監(jiān)控告警連著響了三天值班同事一直以為是內(nèi)存泄漏反復(fù)重啟服務(wù)沒用。我接手后先看MemAvailable有 52GB再slabtop一切正常smaps_rollup看各進(jìn)程 RSS 加起來不到 6GB。剩下的全在Cached里——是日志服務(wù)的輸出文件以 200MB/s 的速度寫入頁緩存自然堆滿。問題根本不在內(nèi)存而在于監(jiān)控用的是used而不是available并且這臺機(jī)器的日志輪轉(zhuǎn)策略有問題寫入量和保留時間都過長。改掉監(jiān)控指標(biāo)、縮短日志保留窗口之后告警消失。這兩個案例的共同點(diǎn)是卷進(jìn)去的時候所有人都在討論一個錯誤的數(shù)字。前者用堆大小當(dāng) RSS后者用 used 當(dāng)可用內(nèi)存。回到第一節(jié)那句話——先把三個詞的邊界劃清楚后面每一步判斷才有依托。Linux 內(nèi)存管理這套機(jī)制設(shè)計得相當(dāng)自洽難的不是理解某個單點(diǎn)而是在模糊的現(xiàn)場把它和眼前這堆數(shù)字對應(yīng)上。多做幾次采樣、多留一份對照慢慢就形成直覺了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99久久综合网| 六月婷基地| 安息电影在线观看完整版| 激情五月综合网| 另类天堂| 亚洲综合色婷婷| 99热久草| 思思热99er在线视频| 五月婷中文字幕| 激情av在线| 任你爽精品免费视频6| 生活片五区| 色色色色色色色色五月先| 91人人操.COM| 亚洲乱码日产精品BD| 亚洲综合网激情小说| 欧美成人精品A片免费一区99| 欧美激情xxxXX| 禁欲电影完整版在线播放| 深爱五月中文字幕| 欧美亚洲成人在线| 人人播| 热久久77777| 国产偷人爽久久久久久老妇APP| 婷婷成人综合五月| 久久婷婷激情四射五月天| www.亭亭五月天| 大天天伊人| 91视频一起草| 五月天婷婷开心| 亚洲欧美成人在线观看| 成人在线不卡| 五月丁香基地| 欧美在线视频99| 国产亚洲精品久久久久久豆腐| 九九久久综合网站| 丁香婷婷黄网站| 日日操天天操| 五月婷婷激情四月| 色色色色色热| 激情五月瑟瑟| 桃色五月天| 久久这里只有精品22| 色色五月天com| 夜夜躁婷婷AV| 久久99最新| 男人操女人高潮91视频| av在线免费播放| 激情 五月 婷婷 丁香| 屁股翘好撅高迎合跪趴| 日本久久婷| 只有精品视频在线观看| 亚洲免费av观看| 六月婷婷五月天| 免費亭亭成人| 激情婷婷丁香五月天| 色爱综合网| www.成人婷婷综合| 噜色精品| 激情九月婷婷| 99噜噜噜| 久久色六月| 久9视频免费播放| 丁香六月婷婷综合激情欧美 | 丁香婷婷综合激情五月色| 六月丁香好婷婷| 日韩一级A片黄色| 香蕉AV777XXX色综合一区| 欧美黄色韩日网| tingtingjiqingwuyue| 国产jd1024基地手机看国产| 97色视频网| 久久久香| 激情五月婷婷她| 成人网在线视频| 亚洲色域网| 久9热视频在线观看| 欧美性生交XXXXX无码小说| 激情小说在线视频| 成年人看Va免费视频| 就是色婷婷五月亚洲色| 91碰碰碰久久久久| 日本一級黃色一級片| 婷婷大乡焦噜噜| 五月丁香在线国产| 婷婷五月色花丁香社区| 99啪啪视频| 狠狠色九月| 精品国产AV色一区二区深夜久久 | 成人国产欧美大片一区| 色中色综合| 真实亲子乱子伦高清在线观看| www.五月天婷婷.com| 九九艹女| 成人丁香婷婷| 热91久| 人人爱操| 99热最新| 色色五月天丁香| 天天插天天操| 人人干天天操五月丁香| 99热精在线九九久久保| 色六月天天激情综合网| 99小视频| 丁香六月色香蕉视频| 大香蕉久热| 久久蜜臀婷婷| 丁香九月激情在线视频| ZpRSw| 久久婷婷视频| 丁香五月香蕉| 婷婷欧美| 欧美日韩99| 超碰二区| 日本美女上人| 99久久综合网| 婷婷五月激情丁香| 天天日天天爽| 色婷婷丁香五月| 99久久综合| 五月天婷婷AV| 亚洲综合五月天婷婷丁香| 五月婷婷五月| 99热在线看| 丁香色综合| 丁香成人色情五月天| AV色五月婷婷| 婷婷丁香五月天欧美| 国产伦理精品高清在线观看网站一区二区| 无码地址| 极品人妻videosss人妻| 婷婷五月天成人网站| 激情综合亚洲色婷婷五月| 9999热这里只有精品| ww亚洲ww在线观看| 五月天激情网图片 - 百度| 丁香五月婷婷深爱综合激情| 色婷婷六月激情| 久久这有这里精品| 五月天影院| 狠狠草婷婷| 五月激激网w'w'w| 99热思思久| 色狠狠综合网| 男人天堂亚洲综合| 99er久久| 79精品视频在线观看,| 婷婷五月六月| 99久在线精品| 五月丁香综合激情| 激情综合五月丁香六月婷婷| 97资源碰碰在线| 五月婷婷色播| 狠狠干天天内射| 先锋男人99资源| 五月天成人在线| 色婷婷五月天不卡| 97久久人人| 天天操天天曰| 九九99精品免费播放| 天天射天天操天天干| 九九99热精品| 97婷婷色| 日本 @ va 免费| 日本色爽| 开心激情婷婷| 伊综合蕉| 99热99在线| 婷婷色五月亚洲| 婷婷五月天首页| 狠狠做婷婷| 9久久久久久久久久久| 夜夜干天天操| 99九九99九九九视频精品| 婷婷五月无码| 99热国产国产| www.激情| 色情五月婷婷| 久久亭亭电影| 亚洲成人色五月天| 精品无吗va视频免费观看| 大香蕉伊人99| 伊人久久丁香狠狠婷婷综合香蕉 | 97黑人精品区| 狠狠擼综合| 激情四射五月天偷偷看婷婷| 亚洲成人婷婷| 激情五月综合网| 欧美成综合在线观看| AV在线免费播放| 九九九九九无码| 伊人婷婷五月天av| 色婷婷黄色网络| 色情五月天婷婷| 九色91视频| 欧美人与性动交CCOO| 欧美一级毛卡片无码| 亚洲在线综合| AAAA网站| 日本视频久久| 亚洲sesesese| 婷婷五月天综合AV| 婷婷五月丁香基| 丁香婷婷五月激情| 激情五月天 婷婷| 日本欧美成人片AAAA| 久久婷综合网| 婷婷五月天综合色| 五月婷婷综合网| 九9九9无码| 婷婷午夜精品久久久| 激情亚洲色图片丁香综合| 色五月超碰| 9热网站| 婷婷丁香97| 五月婷AV| 免费视频在线观看的网站| 色婷婷五月天成人网| 亚洲五月婷天天操| 亚洲午夜AV| 国内久久亭亭| 九九精品在线观看视频6| 中文字幕在线免费观看视频| 丁香六月狠狠干| www.激情五月天com| 丁香五月婷婷六月| 一区二区三区四区牛| 翔田千里aV中文字幕| 五月丁香综合中文| www激情网站| 天天色天天爱天天爽| 九九在线视频| 开心婷婷中文字慕| 亚洲五月花| 国产性爱色| 婷婷开心激情综合五月天| 开心四月婷婷在线色播播| 丁香五月社区| 99免费偷拍视频| 欧美色色色| 99热精品在线| 亚洲第一色色色| 五月丁香亭亭操逼| 九九色大香蕉| 91一起操| 亚洲中文字幕网| 五月婷婷视频| 久99久99精品免| 99热这里只有精品13| 人妻久久久久久久 | 成人一区在线观看| 激情五月婷婷网| 五月天丁香婷婷久久九| 热久久国产视频| 大香蕉综合| 免费啪啪亚州视频| 超碰成人电影| 一起草av| 九九碰九九爱97超碰| 亚洲激情在线| 国产精品美女| 免费99情趣网视频| 亚洲亚洲人成综合网络| 国产五月天激情小说| 婷婷五月天福利| 九九热re99re6在线精品| 日撸夜撸日操| 婷婷丁香五月综合| 人妻久久做| 天天色丁香| 婷婷五月综合社区| 九九香蕉网| 欧美色色色| 最新av在线观看| 激情99| 99热大香蕉| 99久久精品色老| 亚洲在线操| 久久久999精品| 99这里只有| .操區COm| 五月天激情国产综合婷婷婷| 天天舔天天摸天天透| 日本婷婷色| 丁香五月激情啪啪| 日韩一级A片黄色| 六月婷婷激情| 天天爱天天做天天舔| 国精产品一区一区三区免费视频 | 婷婷五月天国产| 91嫩草久久| 五月丁香激| 99综合久久| 99在线视频播放| 日本九九视频| 五月丁香成人网| 6080av| 91av视频| 色婷婷大香蕉| 看婷婷五月天网| 五月天综合视频| 婷婷九月激情| 国产午夜精品一区二区三区嫩草| www.操逼comm| www.色色色com| 五月婷婷色五月| 在线视频你懂得| 激情久久久| 五月婷婷六月基地| 91久久国产综合久久| 日韩超碰在线| 插插网爽妇五月丁香| 久久婷婷五月综合网| 色五月涩涩婷婷| av久热| 婷婷丁香激情五月天色色| 丁香熟女乱| 丁香激情网| 五月天另类综合网| 丁香婷婷色九月| 天天日天天插| 开心网五月色婷婷| 婷婷综合色| 热久久91| 婷婷激情五月吧| 91夫妻网站九色| 激情99| 亚洲 精品 综合 精品| 色综合婷婷99| 九九在线视频| 99久久精品视频女神1| 婷婷操超碰| 欧美搡BBBBB摔BBBBB| 一级A片天天操夜夜操| 9l视频自拍9l视频自拍九色学生| 色99在线观看| 日日操日日撸| 亚洲综合婷婷五月| 开心五月激情网| 99国产99| 色色亚洲| 六月激情婷婷| 激情六月综合| 深爱激情四射| 网色99| 啪啪啪丁香五月| 97色色色色色| 欧美狠狠色| 狠狠五月天婷婷| 欧美在线视频免费播放| 五月美女婷婷风骚| 亚洲激情综合| 婷婷五月色情天| 毛片毛片毛片毛片| 狠狠狠狠狠狠狠狠草| 欧美性久| 久婷婷视平| 天天草天天爽| 亚洲综合1024| 婷婷五月天激情在线| 亚洲小视频免费看| 成人在线日韩欧美| 久久99免费视屏| 久久精品99国产精品日本| 26uuu亚洲欧美另类| 亚洲成人网在线观看| 婷婷五月欧美AA片免费| 五月婷婷天天| 九玖欧洲亚洲| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 久久五月天综合| 五月天欧美 另类小说| 五月丁香操婷逼| 无码人妻一区二区一牛影视| 被强行糟蹋的女人A片| 99综合一区| 成 久久| 99热爱爱干干日| 91综合视频在线| 岛国在线观看91| 日日日日日| 无码人妻激情| 日日夜夜狠狠| 中文av网| 欧美色性色好| 九九热99热| 操一操| 五月丁香六月婷婷色| 亚洲精品乱码久久久久久按摩观| 91超级碰碰碰| 午夜一区| 99久久久| 琪琪秋霞| 丁香 婷婷五月| 色综合久久五月| 亚洲综合激情五月天婷婷| 任你爽在线视频| 超碰免费成人网站| 中文成人在线| 爱久久小说下载网| www.久99| 五月丁香婷草| 8区视频在线| www.色婷婷.com| 色五月婷婷五月| 五月丁香另类图片| 婷婷五月天电影区小说区| 激情综合五月色在线| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 狠狠色综合精品视频在线| 欧美va欧美va差| 天堂草在线观| 久久99精品久久只有精品| 婷婷五月色丁香在线看| 丁香六月婷婷激情| 色欲影香| 9精品在线| 婷久久| 日本五月天激情| 五月婷婷九月婷婷九月婷婷| 这里只有精品在线观看视频| 婷婷久久精品| 夜夜撸天天操| 国产精品天天狠天天看| 玖玖爱伊人网| 婷婷综合偷拍| 久久久91| 九九这里只这里只有精品| 777久久综合视频| 婷婷激情六月中文| 婷婷伊人五月天| 99视频在线| 婷婷六月天天| 久久九九99| 天天综合网站| 色综合色色色色色色综合| 99视频在线啪| 热99这里只是精品| 色性日本| 五月丁香啪啪啪啪| 天天色情站| 丁香狠狠色婷婷久久无码视频| 九九精品re免费视频| 亚洲一区二区无遮挡A片| 91超碰在线播放| 色六月天天激情综合网| 狠狠色噜噜狠狠| 婷婷成人五月天| 激情综合久久| 激情五月天激情五月天| 五月婷婷色色色| 香蕉AV福利精品导航| 激情第四色| 中字幕视频在线永久在线观看免费| 色噜噜狠狠狠狠色综合久欧美| 亚洲另类av| 五月丁香婷婷色| 九九九成人在线视频| 久久婷婷六月综合| 看片视频在线免费日产在线看| 五月天播播| 激情五月四色| 强伦轩人妻一区二区电影| 婷婷的激情五月| 婷婷五月天在线观看免费| 婷婷射综合| 香蕉AV777XXX色综合一区| 伊人五月天久久| 91.com男女操| 五月婷婷欲色| 99激情| www.夜夜| 亭亭色网| 99 频99热国里只有精品| 婷婷五月视屏| 天天操天天插| 综合久久影院| 色噜噜狠狠插综合| 天天弄天天操| 七七九色| 婷婷色情五月| www.丁香五月| 97人人操| 99亚洲日韩| 五月激情综合网| 超级碰 久久9| 五月亭亭六月激情| 色五月婷婷久久| 亚洲视频在线观看区| 99精品久久| 婷婷 伊人 久久| 丁香五月激情综合网激情五月| 久久成人人妻| 精品一二三区久久AAA片| 操逼六区| 五月天激情无码| 婷婷中文字幕| 日韩婷婷| 日本欧美成人片AAAA| 成人.在线日韩| 丁香婷婷网| 五月激情婷婷丁香天堂| 狠狠操狠狠色| 婷婷五月俺要去| 99ri精品视频在线观看| 视频久久9| 亚洲人妻一区二区 | 丁香五月天堂| 金品在线视频99| 狠狠色精品综合| 婷婷色婷婷| 色九九丁香九月色九九色| 中文字幕日韩无码制服诱或| 久久久久er热| 97碰在线| 99A片| 精品久久久91久久影视网| 丁香伊人五月色婷婷五十路| 呦呦视频无码播放| 国产看真人毛片爱做A片| 九九亚洲视频| 99综合久久| 婷婷激情啪啪| 婷婷五月天激情文学| 人妻第九页| 五月天激情小说电影| 五月天丁香网| 色99网| 91要啪| 天天综合五月天| 精品色| 欧在线一区| 久久大香免费| 丁香五月香蕉| 做爰丰满少妇1313| 高清激情av在线观看| 思思热在线| 丁香五月1页| 国产精品久久久久久白浆色欲| 国产精品丝| 九九热这里只有精品6| 久9热在线免费观看| 天天综合网亚洲综合网| 亚洲黄色操逼| 婷婷婷婷婷婷婷五月丁香| 婷久久高清| 九九精品在线网| 九月丁香八月婷婷加勒比| 美女要搞搞天天搞搞搞网站| 提提热五月天婷婷| 色色国产| 操碰91| 成人视频在线免费播放| 久热在线观看视频9| 色五月在线| 国产亚洲色婷婷久久99精品91| 丁香婷婷久| 五月色导航| 五月丁香六月激情在线| 超碰人人操人人干| 26uuu精品一区二区| 婷婷五月天久| 日韩在线婷婷五月天综合| 在线观看中文字幕| 伊人喵咪a V| 99热在线观看精品| 婷婷五月激情的图片| 国产97色在线| 婷五月天天| 色婷婷丁香A片区毛片区女人区| 五月婷婷六月激情在线| 婷婷五月激情基地| 国产欧美va| 九热精品| 99网| 色五月激情五月天| 97操碰人人| 91人妻人人做人碰人人爽九色| 人人播| 色婷婷色九月| 综合色五月| 久久久精品99亚洲综合| 97干干干丁香| 欧美日本va| 另类激情四射| 涩五月婷婷| 不卡影院午夜理论片| 超碰在线观看成人视| 日本久久综合| 99色视频在线观看| 最新日韩久热免费视频看看| 五月成人网站| 中文人妻主播久久| 亚州精品成人片| 日韩免费乱轮网站| 99国产精品久久久久久久久久久 | 婷婷激情综合网| 色色婷婷丁香| 99丁香五月| 超碰成人av| 久久加勒比| 丁香五月综合| 激情五月天婷婷五月天| 亚洲精品乱码久久久久久按摩观| 99久久国产综合精品五月天喷水\| www.五月丁香| 9.1综合网| 无码字幕中文| 丁香婷婷色五月| 天天爽夜夜爽| 99精品在线| 五月婷婷色影院| 五月丁香六月色婷婷| 91成人电影| 婷婷99| 五月婷婷导航| 好好干av| 婷婷丁香18| 超碰97色| 九九色99| 这里只有精品久久| 91综合国免费久入| 美女丁香五婷婷| 成人国产欧美大片一区| 人人97碰| 激情六月婷| 久久五月综合| av在线观看免费| 99.色| 婷婷丁香五月综合| 丁香五月综合激情啪啪| 久久黄色片| 久久AV无码精品人妻系列试探| 婷婷的99视频网站| 精品无码99| 五月激情小说| 欧美情月伍月天| 亚洲免费av在线| 亚洲成人电影在线免费观看| 极品人妻videosss人妻| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 91综合视频丁香| 99这里有精品视频| 99热青青草| 五月丁香亚洲婷婷| 五月色丁香婷婷中文字幕| 色色色婷婷五月天| 五月丁香毛片| www网站在线观看| 国产精品久久久久久久久久| 丁香婷婷深情五月亚洲| 97人人搞| 五月婷婷影院| 五月婷婷官网色| 五月天婷爱综合| 亚洲无码成人网| 大香蕉视频99| 少妇人妻人伦A片| 99热免| 天堂久久精品| 久久WW| 99热一区| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 丁香五月天激情综合网| 三区激情四射av| 97福利视频| 婷婷丁香精品视频在线观看| 五月婷婷av在线| 日本欧美成人片AAAA| 操碰99| xxxx久| 99热这里只有在线| 亚洲视频在线网| 两性婷婷丁香五月| 色吧婷婷五月亚洲| 秋霞少妇AV网站| 婷婷丁香社区| 成人国产欧美大片一区| 色婷婷成人做爰A片免费看网站| 色婷婷导航| 色五月综合在线| 五月激情婷婷在线| 色色色综合| 欧美激情五月天| 人妻久久久| 99综合网| www.91.com黄| 五月婷婷性爱| 天天搡日日搡aaaaⅩ| 天天操中文字幕| 玖玖热视频| 婷婷无码五月天| 日韩操逼小电影| 中文字幕婷婷五月天在线观看| 五月丁香网站在线播放| 另类激情五月| 中文无码精品一区二区三区| 五月久久亚洲| 天天狠狠色噜噜| av在线色五月丁香婷区久| 色婷婷视频| 天天舔天天| 五月丁香六月婷婷婷婷| 玖玖资源站中文| 国产精品成人av在线观看春天| 五月婷在线视频免费看| 婷婷成人视频| 婷婷五月天av| 69精品人人人人| 日韩一本操| 超碰人人妻| 激情伊人网| 国产在线中文字幕| 丁香婷婷偷拍| 色五月首页| 九九热免费视频| 五月天激情四射| 可以看的av| 激情五月丁香五月综合| 久久久91精品| 人妻激情视频| 激情综合网之激情五月| 天天草天天日| 激情五月综合亚洲另类| 色五月激情五月| www.五月天婷婷| 色狠久| 亚洲狠狠干| 亚洲婷婷91丁香| 五月天色五月| 一起草AV| 久久久久久久久久婷婷| 九月丁香| 能直接看的AV网站| 久99综合婷婷| 五月天电影网| 色色婷婷丁香五月天| 99久久精| 丁香美女主播视频在线观看 | 性爱视频99| 日韩av变天就操逼不卡区| 性爱网六月丁香| 26uuu青青| 日日干日日色| 婷婷丁香五月亚洲17cao| 久久三级视频| 99热10在线高清播放| 亚洲精品视频电影| 色。 日日日| 丁香五月综合| 国产真实乱了老女人视频| 97色视频网| 在线视频色五月| 色婷婷五月视频| 免费黄色AV| 一级黄色影片| 激情五月天情色| 婷婷激情小说网| 天天草天天摸| 国自产拍偷拍精品啪啪一区二区 | 免费婷婷| 亚洲日韩乱码一区二区三区四区| 久婷婷久草| 日本99视频| 五月六月丁香激情| 精品夜夜澡人妻无码AV| 中文字幕AV网址| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 久久99精品久久久| 天天操天天爽天天爱| 亚洲网站999| 狠狠婷婷色综合| 五月丁香手机在线| 五月激情综合网| av网址在线播放| 免费看成人747474九号视频在线观看| 久久婷婷色| 丁香六月婷婷综合欧美| 国产一区男女| 五月婷婷色五月| 丁香 亚洲 久久| 激情 婷婷 丁香五月天| 五月丁香啪啪网| 青996青| 亚洲 五月 婷婷 成人| 五月天桃色深爱网| 97久人人| 天天做综合网色综合| 丁香五月天激情视频| 色色色97| 丁香激情综合| 五月天开心色色网| 亚洲激情校园| 99久热| 综合一区二区三区| 婷婷瑟瑟五月天| 大学生高潮无套内谢视频| 亚洲成人在线免费| 情色婷婷五月天| 色婷婷久久视屏| 综合久久五月天| 久久久宗合| 91天天操天天干天天射| 国产成人网址| 热久久成人| renre人人操国产超碰在线| 婷婷色五月色妇| 天天爽夜夜爽天天爽夜夜爽| 激情伊人五月天| 丁香五月婷婷激情蜜桃| 丁香五月婷婷香| 亚洲婷婷丁香| 久久丁香五月天| 97精品人人A片免费看| 日本操B视频| 91综合视频在线| 1024操逼视频| 亚洲婷婷五月天在线激情综合网| 91人人网| 激情婷婷五六月天| 色婷婷色人人射| 桃色激情婷婷伊人网| 丁香色情五月综合网站| 五月天亭亭俺也| 9精品在线| 色色色色色综合| 天天综合精品| Caoub青青超碰| 精品牛仔裤超碰| 综合激情开心五月| 婷婷午夜天| 97久久超级| 婷婷五月天电影网| 色色日本欧美| 久久香蕉丁香| 综合精品啪啪| 色五月综合资源推荐| 六月婷婷九月丁香| 欧美精产国品一二三区| 91操片| 综合五月婷婷| 91avse| 特级西西4444www无码| 亚洲视频a| 丁香激情网| 久久五月天精品视频| 国产毛片精品一区二区色欲黄A片| 日本人妻丁香婷婷久久寝取熟女五月| 色婷五月天| 狠狠色丁香婷婷综合久久97AV| 九九色情网站| 国产精品色色色色| 五月天综合在线| 九月丁香婷婷综合激情| 色色99| 九九热a| 亚洲无AV在线中文字幕| 色区域网站视频| 色色色天堂网| 爆乳熟妇一区二区三区爆乳照片| 激情五月综合网| 极品人妻VIDEOSSS人妻| 五月天婷婷自拍图片在线观看| 超碰在线人人| 99精品视频在线6| 激情五月天婷婷| AⅤ网站在线看| 久久久久久人妻久久久久久久久久人妻久久久 | 97碰在线视频| 精品久久人妻热| 色婷婷亚洲综合网站| www,超碰| 丁香五月图片| 欧美三级韩国三级日本三斤| 丁香久久五月婷综合| 精品九九在线观看视频| 婷婷综合九色伊人| 婷婷丁香五月激情密臀av| 五月天开心激情网色欲无码| 人妻激情久久| 亚洲av午夜精品一区二区| 色丁香五月| 天天射综合网天天插| 91在线看免费 九九九九| 色婷婷99| 夜夜综合色| 97资源碰碰| 亚洲成人网址在线观看| www.五月天色色.com| 婷婷五月丁香激情色情| 九9九9无码| 嫩BBB槡BBBB搡BBBB| 99免费热视频在线| 伊人青草成人| 97ai婷婷| 国外亚洲成AV人片在线观看| 久久国产色| 色爱综合视频| 久久的爱大香蕉| 天天插天天插| 婷婷丁香五月综合| 亚洲尤物在线| 五月天激情四射网站| 久久无码成人| www超碰| 99re热免费观看视频精品| 激情久久久久| 91jiuseshunv| 激情网五月天| 色综合中文| 久久婷婷操| 成人在线视频网| 亚洲AV成人在线观看| 色色A| 久久久久这里只有精品| 丁香5月综合啪啪| 欧美在线看| 9|在线观看视频| 天天肏夜夜肏| 991国产精选视频在线播放下载| 激情五月丁香在线观看直播| 丁香五月香蕉| AV六月丁香| 久热在线中文字幕色999舞| 91精品无码| 日日杆天天| 久久婷婷五月综合激情国产| 亚洲激情av| 无码人妻激情| 狠狠色婷婷777| 色婷婷婷综合五月天| 色婷婷狠狠18禁| 成人短视频免费| 性爱网五月婷婷| 色五月五月婷婷| 内射综合网| 综合久久五月天| 色宗合久久五月婷婷| aaaaa不卡| 欧美大香蕉视频| 久久五月天丁香花| 亚洲99热| 99在线精品免费视频| 99热这里只有精品在线| 国产毛片精品一区二区色欲黄A片| 激情综合网 激情五月天| 视频这里只有精品| 五月丁香综合啪啪| 91久久综合亚洲噜噜成人在线| 97在线天堂| 五月丁久久| 专区无日本视频高清8| 狠狠香蕉| 丁香色成人| 激情五月天婷婷丁香| 欧美va亚洲va在线播放| 亚洲AAA| 天天爽成人综合网站| 色色五月婷| 国产激情av| 超碰av天堂| 久久久久九九九九视屏小说88| 99精品视频在线观看| 国自产拍偷拍精品啪啪一区二区| 欧美激情综合| 亚洲综合在线视频| 久久精典| 99热这里是精品| 午夜激情综合| 成人AV免费观看| 天天操婷婷| 色婷| 亚洲成人网站在线观看| 婷婷大香蕉| 丁香六月激情综合| 亚洲九九视频| 亚洲av骚货| 久久亚洲婷婷| 99热这里有精品| 免费视频WWW在线观看网站| 色狠狠色噜噜AV天堂五区| 粉嫩AV久久一区二区三区| 亚洲12p| 四季8848精品成人免费网站| www.婷婷com| 色啦啦视频| 九月婷婷综合色干| 五月丁香狠狠爱婷婷综合| 97久操| 99九九热视频免费| 狼人婷婷久久| xx久久| 伊人狠狠丁香婷婷综合尤物| 欧美操人| 五月丁香综合网色欲| 五月婷婷六月爱| 丁香五月天精品| 激情婷婷五月社区| 亚洲激情五月天| 五月天影院| 九九久久网| 五月综合久久| 一区二区中文字幕| 天天婷婷天天| 色婷婷丁香五月综合| 日日操夜夜爽| 久久婷婷成人| 可以免费观看的AV| 少妇被躁爽到高潮无码文| 九九爱激情| 牛牛色av| 婷婷无码视频| 夜夜操夜夜爽| 99热精地址| 91超级碰在线| 99在线精品视频在线观看| 国产真人做爰视频免费| 亚洲综合色婷婷文学| 91人人超碰在线| 九九av| 亚洲人妻一区二区| 久久婷婷六月综合综合色| 综合久久影院| 国产精品日本一区二区在线播放 | 热久久国产视频| 91精品综合久久久久久五月丁香 | 狠狠色婷| 久久精品五月天| 五月天婷婷自拍图片在线观看| 五月婷婷之激情五月| 天天射影院| 亚洲欧洲另类| 色综合99色| 色婷婷九月| 草AV9999| 国产激情在线| 婷婷亚洲综合| 2013AV天堂| 激情五月深爱五月| 激情色视频| 九九综合久久| 中文字幕无线久必| 色呦呦美女| 天天噜天天爱| 超碰国产AV| 成人精品视频99在线观看免费 | 超碰93在线观看| 五月丁香啪| 99er热精品视频| 99丁香五月婷| 亭亭五月色男人| 欧美性爱五月天| 亚洲精品无码A片一区二区| 久9视频| 五月婷婷视频ab| 另类视频一区| 国产特级毛片AAAAAAA高清| 天天综合久久| 啪啪啪五月天| 久久9精品视频| av中文网| 久久综合干| 99爱精品视频| 色五月婷婷操逼| AAA级久久久精品| 丁香色六月婷婷| m色激情网| 五月丁香六月激情在线| 日韩AV成人电影| 99激情视频热| www.精品99| www.丁香六月婷婷久久天堂影院.con| AAA久久久| 无码色色| 国产精产国品一二三在观看| 丝袜激情网| 另类综合国产| 色婷婷香蕉| www.久久爱.c n| 五月婷婷在线网站| 99性爱| 五月丁香六月激情欧美综合| 大战熟女丰满人妻AV| 91久久精品无码一区二区三区| 五月天婷婷视频30| 亚洲综合视频在线| 五月丁香综合网| 大伊久久| 五月婷婷开心网| 色婷婷9| 久久成人综合五月天| 五月天激情国产综合婷婷| 国产亚洲99久久| 色五月婷婷啪啪五月| 99re在线观看| 久久精品63| 天天天天天天操| 北条麻妃伊人| 天天做天天爱天天爽在| 五月天伊人网| 色婷婷婷婷| 五月天婷婷激情综合| 大香焦A∨| 五月婷婷天天色| 色婷五月天| 99精品久久| 色综合大香蕉| 婷婷九月狠狠色| 激情五月婷婷丁香综合网| 艳妇野外情欲放荡HD| 婷婷五月天无码熟女| 九九久久精品| 丁香六月啪啪啪| 99热这里只有精品在线观看| 先锋影音男人的天堂AV| 思99热精品久久只有精品| 91色婷婷综合久久中文字幕二区| 97人妻碰碰中文无码久热丝袜| 五月婷婷六月丁香综合在线| 五月激情丁香啪啪| 久久婷婷色丁香| 日韩成人综合网| 偷偷狠狠久久婷婷五月天| 亚洲a色| 五月丁香无码| 日本久热| 天堂久久婷婷| 国产avapp 网| 久天综合| 一级精品999WWW| xx久久| 99熟女视频| 欧美性猛交99久久久99| 色婷久久| 97啪在线观看视频| 这里只有精品视频看看| 久久se 综合网| 99爱视频在线免费观看| 日本不卡一区二区三区| 五月天激情站| 欧美性色A片免费免费观看的| 五月婷久久| 久草热久草在线视频| 一个色的综合| 日日躁夜夜躁狠狠久久AV| 激情综合网,婷婷五月天| 婷婷的五月天另类视频| 天天模,夜夜模夜夜爽| 99热10在线高清播放| 狠狠色噜噜狠狠| 亚洲成人av在线观看 | 日韩超碰在线| 婷婷丁香九月| 五月婷婷婷丁香播| 亚洲国产99| 97碰碰碰| 久久99精品久久久久久三级| 金品在线视频99| 激情五月婷黄版| 日本不卡中文字幕| 色99色| 九九热只有精品6| 国产人妻777人伦精品HD| 亚洲人人操BD| 丁香啪啪中文字幕| 26uuu欧美| 偷偷操九九| 亚洲天堂啪啪| 久久丁香婷婷五月天| 另类少妇人与禽zOZZ0性伦| 视频这里只有精品16| 伊人在线大香蕉网| 五月六月丁香激情| 97人凄人人操人人爽| 国产成人网站在线观看| 天堂五月婷婷| 婷婷狠狠爱| 91啪啪视频| 五月婷婷六月丁| 中文超碰视在线| xxx.色婷婷| 秋霞AV淫| 九九AV| 天天日天天干天天插天天射| 丁香九月激情久久| www.婷婷五月| 青青草深爱激情网| 久久天堂色| 丁香色婷婷五月天| 五月婷婷久久爱| 久久九⑨| 丁香五月综合| 久久久人妻门| 六月婷久久| 国产毛片精品一区二区色欲黄A片| 日韩精品无码99| 日韩在线视频中文字幕| 国产精品A成V人在线播放| 蜜桃五月天| 大香蕉人妻| 日韩不卡123| 26.uuu丁香五月婷婷| 一根材五月婷成人| 人人爽欧美婷婷久久久五月丁香| 日韩成人电影AV| 俺去也在线视频| 丁香大香蕉| 日逼AV影音先锋男人资源站| 99性爱视频| 五月婷庭丁香在线| www.91AV.COM| 91精品91久久久中77777| 五月亚洲| 五月总合激情网| 大香人妻| 久99| 亚洲视频色婷婷| 人人色性网| 丁香激情四射| 五月激情四射网站| 国产9色在线/日韩| 久久久久久综合五月婷婷| 婷婷射丁香| 日韩乱轮AV| 日韩成人网址| 天天日,天天射,天天舔| 香蕉久久国产AV一区二区| 九九久久久综合| 97av在线视频| 丁香六月欧美| 天堂五月婷婷| 丁香激情网| 97伦乱| 播播网色播播| 99这里只有精品| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 人人玩人人橾| 综合 蜜月 婷婷| 免费视频WWW在线观看网站| 在线天堂9| 思思99热这里只有精品6| 日韩成人网址| 亚洲爱婷婷| 99精品偷自拍| 丁香五月久久| 五月久久婷婷成人网| 我爱婷婷五月天综合88| 日韩在线视频中文字幕| 在线精品97| 99精品在线观看| 99热| 国精产品一区二区三区| 五月丁香狠狠爱| 丁香五月婷婷色偷偷| 精品一二三区久久AAA片| 99碰网站| www夜夜操com| 天天日天天摸天天| 九九久久五月天| 99热一本久道| 五月大香蕉| 久久免片| 99re热久久| 性爱先锋AV| 国产1区2区3区| 欧美WW在线网|