久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

GlusterFS Statedump 完全指南:生成、解讀與內(nèi)存泄漏/掛起問題排查

GlusterFS Statedump 完全指南:生成、解讀與內(nèi)存泄漏/掛起問題排查 存儲(chǔ)網(wǎng)絡(luò)【免費(fèi)下載鏈接】glusterfsGluster Filesystem : Build your distributed storage in minutes項(xiàng)目地址https://gitcode.com/gh_mirrors/gl/glusterfs點(diǎn)擊查看免費(fèi)下載Statedump 是 GlusterFS 進(jìn)程在運(yùn)行時(shí)導(dǎo)出的內(nèi)部數(shù)據(jù)結(jié)構(gòu)快照文件覆蓋活動(dòng) inode、fd、內(nèi)存池mempool、iobuf、各 xlator 的數(shù)據(jù)結(jié)構(gòu)內(nèi)存分配統(tǒng)計(jì)等關(guān)鍵狀態(tài)。本文以 doc/debugging/statedump.md 為主線結(jié)合倉(cāng)庫(kù)源碼libglusterfs/src/statedump.c、cli/src/cli-cmd-volume.c 等深入講解如何對(duì) glusterd/glusterfs/glusterfsd 進(jìn)程生成 statedump、如何逐段解讀每一類輸出以及如何利用它定位內(nèi)存泄漏和由 frame 丟失引起的掛起問題。什么是 StatedumpStatedump 是 GlusterFS 進(jìn)程生成的、記錄其內(nèi)部各種數(shù)據(jù)結(jié)構(gòu)狀態(tài)的文本文件。文件中可能包含當(dāng)前活動(dòng)的 inode、fd文件描述符內(nèi)存池mempool、iobuf 池的狀態(tài)每個(gè) xlator 各類數(shù)據(jù)結(jié)構(gòu)的內(nèi)存分配統(tǒng)計(jì)掛起的 call-stack / call-frame用于排查 fop 掛起fuse 層的操作歷史、xlator 私有配置、inode table 狀態(tài)等在 libglusterfs/src/statedump.c 中g(shù)f_proc_dump_info()是生成 statedump 的核心入口它通過gf_proc_dump_add_section()/gf_proc_dump_write()兩個(gè)工具函數(shù)以[section]與keyvalue的鍵值對(duì)格式逐段寫入 dump 文件見 libglusterfs/src/statedump.c。也就是說statedump 的所有區(qū)塊本質(zhì)上都來自各模塊主動(dòng)注冊(cè)的 dump 回調(diào)通過統(tǒng)一的鍵值文本格式輸出。如何生成 Statedump1. 確認(rèn) statedump 目錄使用gluster --print-statedumpdir命令查詢 statedump 文件的默認(rèn)存放目錄gluster --print-statedumpdir在源碼中該命令直接打印DEFAULT_VAR_RUN_DIRECTORY見 cli/src/cli.c通常對(duì)應(yīng)/var/run/gluster一類路徑。如果該目錄在當(dāng)前安裝類型下尚不存在請(qǐng)先手動(dòng)創(chuàng)建。下文將該目錄統(tǒng)稱為statedump-directory。2. 使用 SIGUSR1 信號(hào)觸發(fā)對(duì)任意 GlusterFS 進(jìn)程glusterd / glusterfs / glusterfsd發(fā)送 SIGUSR1 即可觸發(fā)kill -USR1 pid-of-gluster-process從源碼看gf_proc_dump_info()就運(yùn)行在信號(hào)處理上下文gf_msg_trace(dump, 0, received statedump request (sig:USR1))見 libglusterfs/src/statedump.c并受gf_proc_dump_mutex保護(hù)防止多次觸發(fā)相互干擾。值得注意的是statedump 落在信號(hào)處理器內(nèi)執(zhí)行因此實(shí)現(xiàn)中特意避免在該路徑上使用可能阻塞鎖的gf_log見 libglusterfs/src/statedump.c。3. 針對(duì) brick / NFS / quotad 進(jìn)程Gluster 提供了專門的 CLI 命令來為不同類型進(jìn)程生成 statedumpgluster volume statedump volname gluster volume statedump volname nfs gluster volume statedump volname quotad其中第一條為brick 進(jìn)程brick 模式第二條為NFS 服務(wù)器進(jìn)程nfs 模式第三條為quotad 進(jìn)程quotad 模式。該命令的 CLI 側(cè)實(shí)現(xiàn)為cli_cmd_volume_statedump_cbk()見 cli/src/cli-cmd-volume.c其完整的命令語法在命令注冊(cè)表中定義如下見 cli/src/cli-cmd-volume.cvolume statedump VOLNAME [[nfs|quotad] [all|mem|iobuf|callpool|priv|fd|inode|history]... | [client hostname:process-id]]也就是說除nfs、quotad外還支持all、mem、iobuf、callpool、priv、fd、inode、history等細(xì)分選項(xiàng)inodectx、fdctx亦被cli_cmd_validate_dumpoption()接受完整選項(xiàng)表見 cli/src/cli-cmd-parser.c。這些選項(xiàng)決定了 dump 文件中包含哪些區(qū)塊對(duì)應(yīng)源碼中的gf_dump_options_t結(jié)構(gòu)libglusterfs/src/glusterfs/statedump.h。4. 針對(duì)使用 libgfapi 的應(yīng)用進(jìn)程對(duì)于通過 libgfapi 接入 Gluster 的應(yīng)用如 smbd、libvirtd不能直接使用SIGUSR1——這類進(jìn)程可能早已把SIGUSR1用于其他用途。此時(shí)可在 Gluster 集群中該 libgfapi 應(yīng)用所連接的任一節(jié)點(diǎn)上執(zhí)行g(shù)luster volume statedump volname client hostname:process idCLI 解析器會(huì)校驗(yàn)hostname:pid格式其中 IP 必須是合法地址、pid 必須為正整數(shù)見 cli/src/cli-cmd-parser.c。5. 生成文件的命名規(guī)則brick 進(jìn)程文件名為hyphenated-brick-path.pid.dump.timestampbrick 路徑中的/會(huì)替換為-見 libglusterfs/src/statedump.c其他所有進(jìn)程文件名為glusterdump.pid.dump.timestamp。文件最終路徑的構(gòu)造邏輯見 libglusterfs/src/statedump.c依次取glusterdump.options文件中的path配置 → 進(jìn)程自身的ctx-statedump_path→ 默認(rèn)目錄DEFAULT_VAR_RUN_DIRECTORY。寫入時(shí)先通過mkstemp創(chuàng)建臨時(shí)文件dumpXXXXXX全部寫完后再rename為最終文件名保證 dump 文件內(nèi)容完整見 libglusterfs/src/statedump.c。對(duì)使用 libgfapi 的應(yīng)用進(jìn)程dump 文件同樣位于statedump-directory命名為glusterdump.pid.dump.timestamp。由于一個(gè)應(yīng)用可能多次調(diào)用glfs_init()訪問多個(gè)卷同一個(gè) pid 可能對(duì)應(yīng)多個(gè)這樣的文件。6. 通過 glusterdump.options 控制 dump 內(nèi)容直接發(fā)送SIGUSR1時(shí)沒有命令行選項(xiàng)機(jī)制。為了讓 CLI 命令和 SIGUSR1 兩種方式都能配置 dump 內(nèi)容進(jìn)程會(huì)優(yōu)先讀取statedump-directory/glusterdump.options全局配置其次讀取statedump-directory/glusterdump.pid.options按進(jìn)程配置具體邏輯見 libglusterfs/src/statedump.c兩個(gè)文件都不存在時(shí)默認(rèn)開啟全部選項(xiàng)gf_proc_dump_enable_all_options()存在文件時(shí)先關(guān)閉全部選項(xiàng)再按文件中keyvalue逐行解析value以yes開頭即為開啟如memyes、iobufyes若解析后所有選項(xiàng)都被禁用則回退到默認(rèn)選項(xiàng)mem與callpoolgf_proc_dump_enable_default_options()。如何閱讀 Statedump下面按區(qū)塊逐一解讀各類輸出的含義。文件首尾時(shí)間戳dump 文件第一行和最后一行分別記錄了開始與結(jié)束寫入 statedump 的時(shí)間格式為DUMP-START-TIME/DUMP-END-TIME時(shí)區(qū)為UTC實(shí)現(xiàn)見 libglusterfs/src/statedump.c。兩端時(shí)間差可粗略衡量 dump 寫入耗時(shí)。Mallinfoglibc 堆內(nèi)存統(tǒng)計(jì)mallinfo區(qū)塊來自 glibc 的mallinfo()/mallinfo2()源碼根據(jù)HAVE_MALLINFO2宏選擇調(diào)用見 libglusterfs/src/statedump.c反映進(jìn)程堆的總體分配狀況[mallinfo] mallinfo_arena100020224 /* Non-mmapped space allocated (bytes) */ mallinfo_ordblks69467 /* Number of free chunks */ mallinfo_smblks449 /* Number of free fastbin blocks */ mallinfo_hblks13 /* Number of mmapped regions */ mallinfo_hblkhd20144128 /* Space allocated in mmapped regions (bytes) */ mallinfo_usmblks0 /* Maximum total allocated space (bytes) */ mallinfo_fsmblks39264 /* Space in freed fastbin blocks (bytes) */ mallinfo_uordblks96710112 /* Total allocated space (bytes) */ mallinfo_fordblks3310112 /* Total free space (bytes) */ mallinfo_keepcost133712 /* Top-most, releasable space (bytes) */各字段的詳細(xì)語義請(qǐng)參考man mallinfo。簡(jiǎn)單來說mallinfo_uordblks是已分配空間mallinfo_fordblks是空閑空間mallinfo_arena是非 mmap 區(qū)域的分配量mallinfo_hblkhd是 mmap 區(qū)域的分配量。它是判斷進(jìn)程整體內(nèi)存增長(zhǎng)趨勢(shì)的起點(diǎn)但要定位具體是哪類數(shù)據(jù)結(jié)構(gòu)在增長(zhǎng)還需要結(jié)合下面兩個(gè)區(qū)塊。數(shù)據(jù)結(jié)構(gòu)分配統(tǒng)計(jì)Data structure allocation stats對(duì)調(diào)用圖call-graph中加載的每個(gè) xlatorstatedump 會(huì)按數(shù)據(jù)結(jié)構(gòu)類型打印內(nèi)存記賬memory accounting信息。先給出匯總頭[global.glusterfs - Memory usage] #[global.xlator-name - Memory usage] num_types119 #It shows the number of data types it is using其中num_types是該 xlator 使用的數(shù)據(jù)類型數(shù)量。隨后對(duì)每一種有活動(dòng)分配的數(shù)據(jù)類型打印明細(xì)格式如下[global.glusterfs - usage-type gf_common_mt_gf_timer_t memusage] #[global.xlator-name - usage-type tag associated with the>[mempool] #Section name ---------- pool-namefuse:fd_t #pool-namexlator-name:data-type hot-count1 #number of mempool elements that are in active use. i.e. for this pool it is the number of fd_t s in active use. cold-count1023 #number of mempool elements that are not in use. If a new allocation is required it will be served from here until all the elements in the pool are in use i.e. cold-count becomes 0. padded_sizeof108 #Each mempool element is padded with a doubly-linked-list ptr of mempool is-in-use info to operate the pool of elements, this size is the element-size after padding pool-misses0 #Number of times the element had to be allocated from heap because all elements from the pool are in active use. alloc-count314 #Number of times this type of data is allocated through out the life of this process. This may include pool-misses as well. max-alloc3 #Maximum number of elements from the pool in active use at any point in the life of the process. This does *not* include pool-misses. cur-stdalloc0 #Denotes the number of allocations made from heap once cold-count reaches 0, that are yet to be released via mem_put(). max-stdalloc0 #Maximum number of allocations from heap that are in active use at any point in the life of the process.各字段含義字段含義pool-name池名稱格式為xlator-name:data-typehot-count池中處于活動(dòng)使用狀態(tài)的元素?cái)?shù)如該池即當(dāng)前活動(dòng)的fd_t數(shù)cold-count池中空閑未使用元素?cái)?shù)新分配優(yōu)先從這里取直到池元素全部被占用cold-count 為 0padded_sizeof每個(gè)元素經(jīng)過填充后的實(shí)際大小含雙向鏈表、池指針、是否在用標(biāo)記等池管理開銷pool-misses因池元素全部在用而從堆分配的次數(shù)alloc-count進(jìn)程生命周期內(nèi)該類型數(shù)據(jù)的總分配次數(shù)含 pool-missesmax-alloc進(jìn)程生命周期內(nèi)池元素活動(dòng)使用數(shù)的歷史峰值不含pool-missescur-stdalloccold-count 歸零后從堆分配、且尚未通過mem_put()歸還的分配數(shù)max-stdalloc任意時(shí)刻從堆分配且處于活動(dòng)使用的最大數(shù)量cold-count長(zhǎng)期為 0 且pool-misses持續(xù)增長(zhǎng)通常意味著內(nèi)存池被打穿、系統(tǒng)頻繁走堆分配cur-stdalloc持續(xù)增長(zhǎng)則說明有分配沒有歸還是內(nèi)存泄漏的強(qiáng)信號(hào)。IobufsI/O 緩沖池iobuf 是 GlusterFS 為 I/O 數(shù)據(jù)準(zhǔn)備的緩沖池其全局統(tǒng)計(jì)格式如下[iobuf.global] iobuf_pool0x1f0d970 #The memory pool for iobufs iobuf_pool.default_page_size131072 #The default size of iobuf (if no iobuf size is specified the default size is allocated) #iobuf_arena: One arena represents a group of iobufs of a particular size iobuf_pool.arena_size12976128 # The initial size of the iobuf pool (doesnt include the stdallocd memory or the newly added arenas) iobuf_pool.arena_cnt8 #Total number of arenas in the pool iobuf_pool.request_misses0 #The number of iobufs that were stdallocd (as they exceeded the default max page size provided by iobuf_pool).iobuf_pool.request_misses表示因?yàn)檎?qǐng)求尺寸超過池默認(rèn)最大頁(yè)大小而走 stdalloc 的次數(shù)。這些字段與 libglusterfs/src/iobuf.c 中iobuf_stats_dump()的輸出一一對(duì)應(yīng)。iobuf 池中存在3 種 arena 列表Arena 列表池創(chuàng)建時(shí)分配的 arena以及正在使用active_cnt ! 0的 arenaPurge 列表可以被回收的 arena無活動(dòng) iobufactive_cnt 0Filled 列表沒有空閑 iobuf 的 arena。每個(gè) arena 的明細(xì)如下[purge.1] #purge.S.No. purge.1.mem_base0x7fc47b35f000 #The address of the arena structure purge.1.active_cnt0 #The number of iobufs active in that arena purge.1.passive_cnt1024 #The number of unused iobufs in the arena purge.1.alloc_cnt22853 #Total allocs in this pool(number of times the iobuf was allocated from this arena) purge.1.max_active7 #Max active iobufs from this arena, at any point in the life of this process. purge.1.page_size128 #Size of all the iobufs in this arena. [arena.5] #arena.S.No. arena.5.mem_base0x7fc47af1f000 arena.5.active_cnt0 arena.5.passive_cnt64 arena.5.alloc_cnt0 arena.5.max_active0 arena.5.page_size32768如果某個(gè) arena 的active_cnt非零statedump 還會(huì)額外打印該 arena 的活動(dòng) iobuf 列表[arena.6.active_iobuf.1] #arena.S.No.active_iobuf.iobuf.S.No. arena.6.active_iobuf.1.ref1 #refcount of the iobuf arena.6.active_iobuf.1.ptr0x7fdb921a9000 #address of the iobuf [arena.6.active_iobuf.2] arena.6.active_iobuf.2.ref1 arena.6.active_iobuf.2.ptr0x7fdb92189000在任意時(shí)刻如果存在大量filled arena無空閑 iobuf則可能是iobuf 泄漏的跡象值得結(jié)合活動(dòng) iobuf 列表與調(diào)用棧進(jìn)一步分析。Call stack調(diào)用棧GlusterFS 收到的所有 fop 都通過 call-stack 處理。call-stack 中包含執(zhí)行該 fop 的進(jìn)程的 uid/gid/pid 等信息每個(gè) call-stack 由多個(gè) call-frame 組成——每個(gè) frame 對(duì)應(yīng)處理該 fop 路徑上的一個(gè) xlator。格式如下[global.callpool.stack.3] #global.callpool.stack.Serial-Number stack0x7fc47a44bbe0 #Stack address uid0 #Uid of the process which is executing the fop gid0 #Gid of the process which is executing the fop pid6223 #Pid of the process which is executing the fop unique2778 #Xlators like afr do copy_frame and perform the operation in a different stack, this id is useful to find out the stacks that are inter-related because of copy-frame lk-owner0000000000000000 #Some of the fuse fops have lk-owner. opLOOKUP #Fop type1 #Type of the op i.e. FOP/MGMT-OP cnt9 #Number of frames in this stack.其中unique尤其值得注意像 afr 這類 xlator 會(huì)通過copy_frame在新棧中執(zhí)行操作unique用于關(guān)聯(lián)因 copy-frame 而相互關(guān)聯(lián)的多個(gè)棧。Call-frame調(diào)用幀每個(gè) frame 記錄其所屬 xlator、從哪個(gè)函數(shù) wind、向哪個(gè)函數(shù) unwind以及是否已完成 unwind。當(dāng)系統(tǒng)出現(xiàn)掛起時(shí)取一個(gè) statedump找到最后一個(gè)尚未 unwind 的 xlator就能定位掛起發(fā)生的層[global.callpool.stack.3.frame.2]#global.callpool.stack.stack-serial-number.frame.frame-serial-number frame0x7fc47a611dbc #Frame address ref_count0 #Incremented at the time of wind and decremented at the time of unwind. translatorr2-client-1 #Xlator this frame belongs to complete0 #if this value is 1 that means this frame is already unwound. 0 if it is yet to unwind. parentr2-replicate-0 #Parent xlator of this frame wind_fromafr_lookup #Parent xlator function from which the wind happened wind_topriv-children[i]-fops-lookup unwind_toafr_lookup_cbk #Parent xlator function to which unwind happened關(guān)鍵字段字段含義ref_countwind 時(shí)遞增、unwind 時(shí)遞減的引用計(jì)數(shù)translator該 frame 所屬的 xlatorcomplete1 表示該 frame 已 unwind0 表示尚未 unwindparent該 frame 的父 xlatorwind_from父 xlator 中發(fā)起 wind 的函數(shù)wind_towind 目標(biāo)下一層 xlator 的 fopunwind_to父 xlator 中接收 unwind 的回調(diào)函數(shù)如果棧中靠前接近客戶端的 framecomplete1而靠后的 framecomplete0說明調(diào)用在某個(gè) xlator 處“丟失”了具體排查流程見文末 FAQ。Fuse 操作歷史History of operations in Fusefuse xlator 會(huì)維護(hù)在 fuse 層發(fā)生過的操作歷史輸出格式如下[xlator.mount.fuse.history] TIME2014-07-09 16:44:57.523364 message[0] fuse_release: RELEASE(): 4590:, fd: 0x1fef0d8, gfid: 3afb4968-5100-478d-91e9-76264e634c9f TIME2014-07-09 16:44:57.523373 message[0] send_fuse_err: Sending Success for operation 18 on inode 3afb4968-5100-478d-91e9-76264e634c9f TIME2014-07-09 16:44:57.523394 message[0] fuse_getattr_resume: 4591, STAT, path: (/iozone.tmp), gfid: (3afb4968-5100-478d-91e9-76264e634c9f)歷史記錄由 fuse xlator 的fuse_history_dump()回調(diào)輸出且受event-history選項(xiàng)控制見 xlators/mount/fuse/src/fuse-bridge.c。掛起發(fā)生時(shí)這段歷史能幫你判斷最后一個(gè)成功處理的操作是什么。Xlator 配置Xlator configuration每個(gè) xlator 的私有配置priv也會(huì)被 dump格式如下[cluster/replicate.r2-replicate-0] #Xlator type, name information child_count2 #Number of children to the xlator #Xlator specific configuration below child_up[0]1 pending_key[0]trusted.afr.r2-client-0 child_up[1]1 pending_key[1]trusted.afr.r2-client-1 data_self_healon metadata_self_heal1 entry_self_heal1 data_change_log1 metadata_change_log1 entry-change_log1 read_child1 favorite_child-1 wait_count1區(qū)塊標(biāo)題格式為[xlator-type.xlator-name]隨后是child_count與 xlator 特有的配置項(xiàng)此處為 replicate/afr 的 child 狀態(tài)、self-heal 開關(guān)、pending key 等。這部分通過各 xlator 注冊(cè)的dumpops-priv回調(diào)輸出見 libglusterfs/src/statedump.c。Graph / inode table當(dāng)前活動(dòng) graph 與 inode table 的統(tǒng)計(jì)如下[active graph - 1] conn.1.bound_xl./data/brick01a/homegfs.hashsize14057 conn.1.bound_xl./data/brick01a/homegfs.name/data/brick01a/homegfs/inode conn.1.bound_xl./data/brick01a/homegfs.lru_limit16384 #Least recently used size limit conn.1.bound_xl./data/brick01a/homegfs.active_size690 #Number of inodes undergoing some kind of fop to be precise on which there is at least one ref. conn.1.bound_xl./data/brick01a/homegfs.lru_size183 #Number of inodes present in lru list conn.1.bound_xl./data/brick01a/homegfs.purge_size0 #Number of inodes present in purge list關(guān)鍵統(tǒng)計(jì)active_size正在參與某種 fop、至少持有一個(gè)引用的 inode 數(shù)lru_size處于 LRU 列表中的 inode 數(shù)purge_size處于 purge 列表中的 inode 數(shù)lru_limitLRU 大小的上限。若active_size異常偏高且持續(xù)不降說明 inode 引用未被正確釋放。Inode 明細(xì)inode table 中的每個(gè) inode 也會(huì)被打印格式如下[conn.1.bound_xl./data/brick01a/homegfs.active.324] #324th inode in active inode list gfide6d337cf-97eb-44b3-9492-379ba3f6ad42 #Gfid of the inode nlookup13 #Number of times lookups happened from the client or from fuse kernel fd-count4 #Number of fds opened on the inode ref11 #Number of refs taken on the inode ia_type1 #Type of the inode. This should be changed to some string :-( Ref by xl:.patchy-md-cache11 #Further this there will be a list of xlators, and the ref count taken by each of them on this inode at the time of statedump [conn.1.bound_xl./data/brick01a/homegfs.lru.1] #1st inode in lru list. Note that ref count is zero for these inodes. gfid5114574e-69bc-412b-9e52-f13ff087c6fc nlookup5 fd-count0 ref0 ia_type2 Ref by xl:.fuse1 Ref by xl:.patchy-client-0-1要點(diǎn)active 列表中的 inoderef非零lru 列表中的 inode ref 為 0如上面的ref0所示Ref by xl:xlator名ref數(shù)逐條列出每個(gè) xlator 對(duì)當(dāng)前 inode 持有的引用數(shù)用于判斷是誰“拖住”了 inode 沒有釋放fd-count為 on inode 上打開的文件描述符數(shù)長(zhǎng)期不為 0 的 inode 可能與 fd 泄漏相關(guān)。Inode context含鎖信息每個(gè) xlator 還可能為 inode 保存上下文例如 locks xlator 的 inode 上下文會(huì)輸出鎖域與鎖明細(xì)[xlator.features.locks.homegfs-locks.inode] path/homegfs/users/dfrobins/gfstest/r4/SCRATCH/fort.5102 - path of the file mandatory0 inodelk-count5 #Number of inode locks lock-dump.domain.domainhomegfs-replicate-0:self-heal #Domain name where self-heals take locks to prevent more than one heal on the same file inodelk.inodelk0typeWRITE, whence0, start0, len0, pid 18446744073709551615, owner080b1ada117f0000, client0xb7fc30, connection-idcompute-30-029.com-3505-2014/06/29-14:46:12:477358-homegfs-client-0-0-1, granted at Sun Jun 29 11:01:00 2014 #Active lock information inodelk.inodelk1typeWRITE, whence0, start0, len0, pid 18446744073709551615, ownerc0cb091a277f0000, client0xad4f10, connection-idgfs01a.com-4080-2014/06/29-14:41:36:917768-homegfs-client-0-0-0, blocked at Sun Jun 29 11:04:44 2014 #Blocked lock information lock-dump.domain.domainhomegfs-replicate-0:metadata #Domain name where metadata operations take locks to maintain replication consistency lock-dump.domain.domainhomegfs-replicate-0 #Domain name where entry/data operations take locks to maintain replication consistency inodelk.inodelk0typeWRITE, whence0, start11141120, len131072, pid 18446744073709551615, owner080b1ada117f0000, client0xb7fc30, connection-idcompute-30-029.com-3505-2014/06/29-14:46:12:477358-homegfs-client-0-0-1, granted at Sun Jun 29 11:10:36 2014 #Active lock information鎖信息按鎖域domain分組self-heal、metadata、entry/data 等每個(gè)鎖條目標(biāo)注了類型ACTIVE/BLOCKED、鎖類型READ/WRITE、起始偏移與長(zhǎng)度、owner、client、連接 ID 以及加鎖/阻塞時(shí)間。當(dāng)懷疑鎖導(dǎo)致 I/O 掛起時(shí)這份數(shù)據(jù)可以直接給出“誰在等誰”的證據(jù)。實(shí)戰(zhàn) FAQ用 Statedump 排查典型問題如何用 Statedump 調(diào)試內(nèi)存泄漏方法一利用內(nèi)存記賬memory accounting特性一個(gè)真實(shí)案例對(duì)應(yīng) Bugzilla 1120151在 replicate 卷中擦除一個(gè) brick 并觸發(fā)fullself-heal 后進(jìn)程內(nèi)存持續(xù)增長(zhǎng)。對(duì) self-heal 守護(hù)進(jìn)程執(zhí)行kill -USR1 pid-of-gluster-self-heal-daemon抓取 statedump然后grep -w num_allocs glusterdump.5225.dump.1405493251 num_allocs77078 num_allocs87070 num_allocs117376 .... grep hot-count glusterdump.5225.dump.1405493251 hot-count16384 hot-count16384 hot-count4095 ....在 statedump 文件中定位這些高數(shù)值對(duì)應(yīng)的數(shù)據(jù)類型 tag。該案例中g(shù)rep 結(jié)果顯示 replicate 下以下數(shù)據(jù)類型的分配異常偏高gf_common_mt_asprintfgf_common_mt_chargf_common_mt_mem_pool隨后排查 afr 源碼中帶gf_common_mt_chartag 的分配發(fā)現(xiàn)data-self-heal代碼路徑有一處內(nèi)存沒有釋放gf_common_mt_mem_pool則提示池內(nèi)存存在泄漏——replicate-0:dict_t、glusterfs:data_t、glusterfs:data_pair_t這些池的cold_count為 0 且分配過多。檢查 libglusterfs/src/dict.c 源碼后發(fā)現(xiàn)dict中的key使用gf_common_mt_char分配對(duì)應(yīng)第 2 個(gè) tagvalue 通過gf_asprintf創(chuàng)建內(nèi)部使用gf_common_mt_asprintf對(duì)應(yīng)第 1 個(gè) tag。繼續(xù)在 self-heal 代碼路徑中排查定位到一行代碼在變量已持有某個(gè)字典引用的情況下又用新字典覆蓋了它舊引用丟失。修復(fù)泄漏后在同一測(cè)試heal 包含 10,000 個(gè)文件的目錄層級(jí)中驗(yàn)證self-heal 守護(hù)進(jìn)程 statedump 里所有num_allocs不再增長(zhǎng)。排查思路小結(jié)num_allocs反映“當(dāng)前活動(dòng)分配數(shù)”若某 tag 的num_allocs隨測(cè)試推進(jìn)持續(xù)上升就說明該類型數(shù)據(jù)結(jié)構(gòu)只增不減順著 tag 反查源碼中對(duì)應(yīng)分配點(diǎn)即可鎖定泄漏位置。方法二排查內(nèi)存池泄漏借助 -DDEBUG 構(gòu)建另一個(gè)案例對(duì)應(yīng) Bugzilla 1134221代碼分析發(fā)現(xiàn) name self-heal 過程中dict_t對(duì)象被反復(fù)創(chuàng)建而未被充分 unref。驗(yàn)證步驟如下用-DDEBUG編譯 glusterfs使cold count默認(rèn)為 0即內(nèi)存池默認(rèn)不預(yù)分配讓堆分配情況完全暴露在cur-stdalloc中在 plain replicate 卷上創(chuàng)建 100 個(gè)文件從其中一個(gè) brick 的后端刪除它們從掛載點(diǎn)對(duì)這些路徑觸發(fā) lookup測(cè)試前后分別對(duì) fuse 掛載進(jìn)程取 statedump。測(cè)試前的 statedumpfuse mount 進(jìn)程pool-nameglusterfs:dict_t hot-count0 cold-count0 padded_sizeof140 alloc-count33 max-alloc0 pool-misses33 cur-stdalloc14 max-stdalloc18測(cè)試后的 statedumppool-nameglusterfs:dict_t hot-count0 cold-count0 padded_sizeof140 alloc-count2841 max-alloc0 pool-misses2841 cur-stdalloc214 max-stdalloc220在cold count為 0 的前提下cur-stdalloc表示通過mem_get()從堆分配、尚未用mem_put()歸還的dict_t對(duì)象數(shù)。測(cè)試100 個(gè)文件的 name self-heal之后dict_t的cur-stdalloc從 14 漲到 214泄漏被證實(shí)。mempool 工作機(jī)制的更多細(xì)節(jié)可參考 datastructure-mem-pool.md。修復(fù)泄漏后再次以-DDEBUG編譯并重復(fù)相同步驟測(cè)試前后的結(jié)果如下——修復(fù)前pool-nameglusterfs:dict_t hot-count0 cold-count0 padded_sizeof140 alloc-count33 max-alloc0 pool-misses33 cur-stdalloc14 max-stdalloc18修復(fù)后測(cè)試后pool-nameglusterfs:dict_t hot-count0 cold-count0 padded_sizeof140 alloc-count2837 max-alloc0 pool-misses2837 cur-stdalloc14 max-stdalloc119cur-stdalloc在測(cè)試前后保持 14 不變分配峰值max-stdalloc也明顯回落說明修復(fù)確實(shí)生效。排查思路小結(jié)cur-stdalloc是堆上“已分配未歸還”對(duì)象的實(shí)時(shí)計(jì)數(shù)測(cè)試前后對(duì)比該值即可判斷是否有對(duì)象被分配后從未釋放。如何用 Statedump 調(diào)試因 frame 丟失導(dǎo)致的掛起真實(shí)案例對(duì)應(yīng) Bugzilla 994959中掛起發(fā)生時(shí)對(duì)所有進(jìn)程抓取 statedump。mount 進(jìn)程的 statedump 中出現(xiàn)了如下調(diào)用棧[global.callpool.stack.1.frame.1] ref_count1 translatorfuse complete0 [global.callpool.stack.1.frame.2] ref_count0 translatorr2-client-1 complete1 ----- Client xlator completed the readdirp call and unwound to afr parentr2-replicate-0 wind_fromafr_do_readdir wind_tochildren[call_child]-fops-readdirp unwind_fromclient3_3_readdirp_cbk unwind_toafr_readdirp_cbk [global.callpool.stack.1.frame.3] ref_count0 translatorr2-replicate-0 complete0 ---- Afr xlator is not unwinding for some reason. parentr2-dht wind_fromdht_do_readdir wind_toxvol-fops-readdirp unwind_todht_readdirp_cbk [global.callpool.stack.1.frame.4] ref_count1 translatorr2-dht complete0 parentr2-io-cache wind_fromioc_readdirp wind_toFIRST_CHILD(this)-fops-readdirp unwind_toioc_readdirp_cbk [global.callpool.stack.1.frame.5] ref_count1 translatorr2-io-cache complete0 parentr2-quick-read wind_fromqr_readdirp wind_toFIRST_CHILD (this)-fops-readdirp unwind_toqr_readdirp_cbk分析要點(diǎn)frame.2r2-client-1complete1說明 client xlator 已完成readdirp調(diào)用并 unwind 回 afr其unwind_toafr_readdirp_cbkframe.3r2-replicate-0complete0說明afr xlator 沒有繼續(xù) unwind其下的 frame.4、frame.5dht、io-cache、quick-read自然全部處于complete0的掛起狀態(tài)。順著unwind_toafr_readdirp_cbk檢查 afr 源碼中該回調(diào)的實(shí)現(xiàn)發(fā)現(xiàn)當(dāng) fop 失敗時(shí)afr 沒有對(duì)棧執(zhí)行 unwind導(dǎo)致整個(gè)調(diào)用鏈懸掛。找到根因并修復(fù)后掛起消失。排查思路小結(jié)在棧中尋找“上方 frame 已 complete、但本 frame 仍未 complete”的斷層點(diǎn)——那個(gè) frame 所屬的 xlator 就是 fop 被卡住的地方。unwind_to字段直接指明了應(yīng)當(dāng)被調(diào)用卻沒有被調(diào)用的回調(diào)函數(shù)據(jù)此即可精確定位源碼位置。附相關(guān)源碼路徑速查關(guān)注點(diǎn)文件statedump 核心實(shí)現(xiàn)信號(hào)處理、文件生成、選項(xiàng)解析libglusterfs/src/statedump.cstatedump 選項(xiàng)結(jié)構(gòu)定義與對(duì)外 APIlibglusterfs/src/glusterfs/statedump.hiobuf 池狀態(tài) dumparena/purge/filled 列表libglusterfs/src/iobuf.cgluster volume statedumpCLI 命令回調(diào)cli/src/cli-cmd-volume.cstatedump 選項(xiàng)校驗(yàn)與client hostname:pid解析cli/src/cli-cmd-parser.cgluster --print-statedumpdir實(shí)現(xiàn)cli/src/cli.cfuse 操作歷史 dump 回調(diào)xlators/mount/fuse/src/fuse-bridge.cmempool 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)說明datastructure-mem-pool.md總結(jié)Statedump 是 GlusterFS 運(yùn)維與開發(fā)調(diào)試中最高效的“現(xiàn)場(chǎng)快照”工具kill -USR1與gluster volume statedump兩條路徑覆蓋 glusterd、brick、NFS、quotad 以及 libgfapi 應(yīng)用進(jìn)程輸出中的 mallinfo、數(shù)據(jù)結(jié)構(gòu)分配統(tǒng)計(jì)、mempool、iobuf、call-stack/call-frame、fuse 歷史、鎖上下文等區(qū)塊分別服務(wù)于內(nèi)存泄漏定位、iobuf 泄漏判斷、fop 掛起歸因等典型故障場(chǎng)景。掌握“先抓 dump、再按區(qū)塊交叉印證、最后反查源碼”的方法論就能把一次莫名的內(nèi)存增長(zhǎng)或 I/O 掛起快速收斂到具體的 xlator、數(shù)據(jù)結(jié)構(gòu)和代碼路徑。贊分享存儲(chǔ)網(wǎng)絡(luò)【免費(fèi)下載鏈接】glusterfsGluster Filesystem : Build your distributed storage in minutes項(xiàng)目地址https://gitcode.com/gh_mirrors/gl/glusterfs點(diǎn)擊查看免費(fèi)下載相關(guān)推薦CodeForge內(nèi)存泄漏問題排查方法CodeForge內(nèi)存泄漏問題排查方法 引言為什么內(nèi)存泄漏是CodeForge的關(guān)鍵問題 作為一款多語言代碼執(zhí)行器CodeForge面臨著獨(dú)特的內(nèi)存管理挑開發(fā)工具代碼編輯器桌面應(yīng)用數(shù)據(jù)庫(kù)客戶端數(shù)據(jù)可視化MimicKit深度解析輕量級(jí)運(yùn)動(dòng)模仿框架如何徹底改變控制器訓(xùn)練MimicKit深度解析輕量級(jí)運(yùn)動(dòng)模仿框架如何徹底改變控制器訓(xùn)練 MimicKit是一款輕量級(jí)運(yùn)動(dòng)模仿框架專為訓(xùn)練控制器提供一套全面的運(yùn)動(dòng)模仿方法。該框架告別內(nèi)存噩夢(mèng)前端內(nèi)存泄漏完全排查指南告別內(nèi)存噩夢(mèng)前端內(nèi)存泄漏完全排查指南 你是否遇到過網(wǎng)頁(yè)越用越卡甚至崩潰的情況用戶投訴頁(yè)面操作卡頓卻找不到明確報(bào)錯(cuò)這很可能是內(nèi)存泄漏在作祟。本文將帶你從文檔技術(shù)博客教程上一篇完整指南How to Train Your GPT 詳解 LLM 推理加速與采樣參數(shù)設(shè)置KV Cache、Temperature、Top-k/Top-P 一次講透下一篇Laya-CoreML W8 調(diào)色板壓縮實(shí)戰(zhàn)K-means 權(quán)重量化帶來3.19倍能效的完整過程創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
中文乱码字幕观看| 97超碰69| 国产v亚洲v日韩v欧美v片另类| 欧美日韩人人精品| 男人的天堂在线有码| 四虎影视永久在线免费| 亚洲 日韩 丝袜 熟女 变态| 国产精品午夜福利亚洲综合网| 熟女91网| 久久久禁| 亚洲激情天堂网| 少妇99成人麻豆| 久操精品网| 日本成人A片网站| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 欧美一级在线观看成人| 欧美人妖内射| 91精品久久久久| 欧美日韩青操| 欧美人妻中出| 久久久免费视频18| 欧美色日| 啊啊啊啊在线播放| 夜夜夜夜爽| 鸥美插入视频| 中文久久96| 久久久熟妇熟女国产| 日本免费不卡二区| 亚洲天堂另类小说男人| 亚洲情色一区三区| 有码色中文字幕在线观看| 日本 欧美 亚中文字幕| 久久久久免费少妇| 久久99国产综合精品女同| 最新国产精品久久精品| 亚洲AV成人无码一区二区三区在线观看| 麻豆国产视频精品观看| 一个人免费视频观看在线WWW| 久久69| 蜜区区视频79| 99久久亚洲精品无码毛片潘甜甜 | 丁香五月AV| 婷婷色导航| wwwss在线观看| 麻豆60秒| 亚洲色图加勒比| 亚洲综合在线高清| 91久久久老司机| 精品国产国产AV| 免费看国产大AB| 夜夜夜夜爽| 国产精品香蕉| 日韩亚洲中文字幕在线| 日本精品成人无码| 久久久久人妻| 国产亚洲精品美女| 中文乱码字字幕在线第5页| 一本色道久久天天射天天干| 美国一区二区免费视频| 国产免费永久精品无码| 欧美黑人性猛交91| 熟妇高潮精品一区二区三区下载| 人妻蜜桃臀| 精品亚洲天堂| 欧美日本国产日韩激情视频| 在线播放成人网站| 久久啊哟| 美女网站黄页| 啪啪综合网| 日本成人A片网站| 日韩欧美tv一区二区在线观看| 女人 A一级| 久久五月视频| 欧美熟妇色| 精品久久久久久无码| jizzjizz欧美| 久久啊哟| 美女性91| 激情五月激情综合网| 老熟女综合网| 一区二区 韩日AV| 亚洲日韩狠狠撸视频| 精品无人区麻豆乱码久久久| 啊啊啊啊啊好舒服视频| 欧美天天综合网| 91美女視頻| 国产久久天堂资源| 亚洲无码免费看| 99热这里只有精品9| 97人人爱人人做人人乐| 啊啊啊啊啊在线| 日韩人妻免费精品| 久久综合久色欧美综合狠狠| 日本操逼视频免费| 色5月婷婷| 久久骚少妇| 97超碰欧美| 一区二区三区视频在线观看免费| 久久黄色网址| 91日韩国产欧美亚洲另类精盘州至城都| 亚洲精品乱码线路中文字幕| 91色综合激情| 日韩性爱一级片| 婷婷99狠狠| 亚欧洲一区二区视频| 日韩性爱小视频| 67194国产| 天天综合,91入口| 91午夜无码| 插老姨肥穴| 美女久久久久久久久久久| 91精品久久综合熟女| 熟妇艹鸡八| 伊人国产成人av网站| 欧美综合站| 欧美 日韩第一性色| 人人看人人插| 伊人国产视频| 欧美经典一区二区三区| 国产情色在线| 亚州操逼图| 99热这里只有是精品10| 在线色导航| 国产熟妇一区二区| 大黄片做爱的大的| 舔舔啊| av日韩在线观看电影| 最新制服中文第一页| 岛国黄色短视频| 久久久久密臀一区二区| 国产 日韩 另类 视频一区爱| 懂色影视久久| 96精品在线| 亚洲欧美第一页| 天天操天天射青青草| 亚洲欧美高清无码| 美女骚尻视频| 日本特黄f c2| 333kkkk·亚洲com久久| 97精品在线视频| 欧美综合站| 蜜乳中文字幕a在线| 夜夜福利| 美女刺激久久国产欧美| 国产精品com| 亚洲熟妇无码一区二区三区| 日韩性爱1级片视频| 啊啊啊啊啊啊啊啊啊啊在线观看| 91人妻素女| 97久操| 久妇网| 性影在线视频| 一起草视频在线| 日韩一区二区熟女| 丁香九月激情啪| 麻豆三极片| av东京热男人的天堂| 亚洲色图A| 天天透伊人| 成人日韩3| 国产青视频| 国产超碰| 热久久国产| 色婷婷日韩精品一区二区三区| 婷婷久月| 啪啪啪东京| 麻豆色99999| 色综合中文字幕不卡| 乱伦av麻豆| 一级一性爱免费视频| 国产精品视频在线播放 | 亚洲aV无码成人在线观看| 香蕉99秘 一区精品蜜桃臀| 麻豆婷婷成人一二三| 国产精品视频白浆免费| 久久黄片国产一区二区| 国产日韩怡红院| 亚洲精品天天影视综合网 | www.色婷婷| 国产传媒操逼视频| 中文字幕人成乱码熟女香港| 亚洲图片另类| 黑人精品欧美一区二区蜜桃| 99re8免费高清在线| 五月婷婷啪啪| 国产18精品亚洲精品| 无码 黑人一区二区三区| 少妇高潮一区二区三区在线| 青娱乐亚洲自拍| 亚洲人天堂| 亚欧美色图| 久久久99999久网站| 91色综| 免费网色网站| 精爱久久| 天天天肏屄欧美| 美女刺激久久国产欧美| 97视频网站在线观看| 91大学精品激情戏| 亚洲精品视频在线播放| 午夜高清成人在线视频| 国产精品自在自拍视频| 婷婷五月天成人网| 色综合色色| 婷婷五月天激情小说| 人人透人人操| 狠狠综合| 久热色情精品| 中文字幕神马久久| 91男女| 美女主播色欲91抠b在线播放| 国产夜夜操| 中文字幕91综合| 大香蕉伊人网WWWn0n| 91 国产丝袜在线放观看| 女人的久久久| 熟女欧美日韩综合婷婷| 亚洲限制级| 91天天c| 综合一区二区影视| 国产精品另类一区大香蕉| 亚洲少妇免费视频\| 午夜福利 成人 91| 日本人妻伦在线中文字幕| a亚洲欧美色欲| 懂色中文一区二区三区| 黄色av片三级三级三级免费看| 日韩精品视频在线观看一卡二卡| 亚洲人人操| 青娱乐av在线| 热热色综合网| 日韩中文字幕国产| 性色av婷婷久久一区二区点复制| 日韩三级一区| 久久久久大香青草精品综合| 人妻欧美| 韩日性爱av| 岛园激情| 亚洲男人天堂网久久| 99啪啪| 91欧美丝袜| 水滴偷拍| 伦理片秋霞免费影院| 67194国产| 东北女人av| 91夜色| 日韩成人精品| 人妻AV在线| 麻豆人妻少妇在线免费观看| 在线播放欧洲免费av| 国产强奸无码乱伦| 國產尤物AV尤物在線觀看| www.婷婷| 日本黄色精品| 精品国产91av一区二区三区| 九九色影院| 神马久久久久久久久久久久| 国内一级精品| 亚洲精品亚洲人成在线麻豆| 大香蕉十区| 久久噜噜噜精品国产亚洲综合| 91网站18| 国产免费一区在线观看| 超碰地址97| 亚州91| 无遮挡猛进视频免费无限观看| 日日日啊啊啊| 美女91网站| 五月婷婷性爱| 91高潮喷水美女| 欧美岛国精品在线观看| 荡小穴在线观看| 欧美淫乱视频| 播播亚洲小说亚洲| 欧美成人国产精品| 少妇一区二区三区高速| 久操高青| 国产精品96| 丁香五月性| 国产免费一区| 亚洲欧洲日韩天堂av| 啪啪91| 78精品| 婷婷在线播放| 老女人综合| 黄色av一区二区在线| 欧美91精彩| 欧美精品成人在线播放| 久久久久亚洲一区女同性恋中文字幕| 亚洲最新Av| 日本九九久久99播| 看大黄色大片原件| 国产精品久久久久久久久久久久久久久久久久 | 国产人伦精品一区二区三区| 亚洲九九九| 四虎 精品 WWW| 国内伊人久久久久久网站视频| 99色热| 欧美日韩精品久久久久久久久东北老熟妇| 亚洲蜜桃V妇女| 九草九九九| 国产精品成人蜜臀AV在线| 91在线/欧洲| 综合操逼| 精品美女少妇一区二区| 国产又粗又又黄又猛| 密臀在线一区尤物| 亚洲情色1区| 91精品亚洲内射孕妇| 中文字幕免费观看| 白丝AV网站| 色黄污美女啪啪啪免费网站| 人人妻人人色一区二区三区| 久久极品伊人| 男人女人18禁片免费看网站| 啊好爽快点-国产一区二区三区撒尿在线-成人AV| 色色毛片| 婷婷久久久精品| 五月天伊人| 日产操逼| 走光一区92下载| 精品久久人妻成人网| 亚洲无码一区成人免费午夜| 伊人久久大香蕉线AV五月天| 殴美大黄片| 天天干18禁| 99自拍B亚洲 | 91美女在线视频| www成人啪啪18秘 免费| 日韩欧洲操屄视频| 欧美色图自拍| 天天操女人| 岛国黄| 久操频道免费在线呗看| 欧美第38页| 超碰人人干| 欧美激情性久久久久久| 国产免费内射视频| a人片中文字幕一区二区| 人人插人人搞人人操| 91精品人| 综合欧美色图| 久草草一二三四区久久| 99色悠悠| 国产一区二区啪啪视频| 日本操逼视频不卡直接放| 久久久久96| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 久久久性爱| 69久久久久久久久久久久久| 久久精品欧美一区蜜桃| 婷婷亚洲综合| 熟女人妇一区二区三区| 操逼无码操逼| 亚洲91色| 好涩综合| 久操视频这里只有精品| 后入福利| 欧美 亚洲 另类 综合| 少妇国产不卡| 欧美有码激情视频一区二区三区| 久久一区二区三区入口| 女人午夜视频777| 亚洲欧洲日本精品中文a∨| 午夜在线播放| 欧美美女视频| 综合网亚洲在线| 超碰综合97在线| 中文久久| 天躁夜夜躁2021| 亚洲成人AB| 国产诱惑| 欧美高潮| 热G综合热G中文| 中文无线日韩一区| 超碰欧美97资源| 男人的天堂无码| 久久久噜噜噜久久人妻| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 好舒服视频| 婷婷丁香一区二区三区| AV老汉| 91网18| 亚洲美女30b| 亚洲欧美另类少妇精品| 色九九九| 欧美A√综合网 | 麻豆av一区二区| 国产成人精品网站| 97亚洲综合影院| 久久六六| 98人妻精品一区二区色欲 | 国厂麻豆77q4| 人人爽夜夜玩视频| 诱惑网综合| 亚洲毛片基地专区| 青青免费在线视频一区 | 国产乱人妻精品入口| 97超级欧美| 嗯嗯啊啊的视频| 91欧美情色| 亚洲高清综合网| 亚洲欧美日韩免费观看| 一个国产在线综合网站| 综合操逼| 操狠狠| 99啪啪| 国模久久在线| 九九九九9999| 久久国产乱子伦精品免费女人| 一区二区视频在线播放| 九九热精品| 欧美黑人与女人91~| 97精品视频网站| 东北老熟女| 视频一区二区三区精品| 殴美在线AⅤ| 夜夜嗨AV一区天天| 亚洲熟女乱色一区二区三区久久久| 天天天操天天天爱| 欧差乱伦二三| 日本一级性爱| 中文字幕乱码人妻一区二区三区,99精品| 青青草在线视频欧美| 日韩二区三四区五区六区在线看| 丝袜综合网| 91av一区二区在线观看| 91在线色综合| 天天综合网~91入口| 国产精品无码av嫩草| 嫖老熟女A片一二三区| 野狼激情网| 久久久久久久久久久久久久久久9 亚洲成人妻日韩在线 | 中文字幕乱亚洲美女精品一区| 午夜国产乱伦视频| 欧美黄片视频在线观看免费| 国产一区二区在线电影| 色婷婷久久| 一区二区三区 丝袜高跟| 老熟乱一区二区三区四区| 性爱视频免费网址| 99免费在线视频| 经典丝袜一区| 婷婷丁香九月| 欧美日日夜夜| 久久精品国产亚洲5555| 91欧美| 99热日| a片偷拍视频| 91久青| 欧美亚洲中文字幕| av一区二区三区 中文| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 97jingpin| 午夜.DJ高清在线观看免费7| 亚洲综合113页| 91成人无码| 九九综合色| 国产精品大屁股999| 国产欧美精选自拍一区| 又摸又舔在线观看网站| 国语对白露脸XXXXXX| 91网站18在线观看| 国产女人视频三四五区| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 久久一二三四| av在线人气| 大香蕉伊人网| 97久久免费| 国产强奸91| 超碰中文字幕人妻草一区| 美国日韩黄片| 超碰综合色| 国产传媒操逼视频| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 欧美AB在线观看| 91久久青青草原精品| 日本三级久| 日本操逼视频免费| 秋霞一区二区三区四区五区六区七区| 精品视频免费在线一区| 国产亚洲日本| 黄片在线免费在线观看| 农村妇女精品一二区| 日韩在线76| 很很操在线| 神马午夜久久久| 亚洲精品无码久久AV| 九九九九一级| 日韩成人精品中文字幕| 国产精品片| 东北老女人的激情视频| 日韩欧美视频青青| 国产精品直播在线观看直播| 亚洲精品1区| 久久久免费一级黄片| 日日摸日日碰夜夜爽视频| 久久久九97| 激情天天视频| 美国三级日本三级久久99| 国产成人无码网站在线视频| 无码不卡亚洲成?人片| 蜜臀久久在线视频| 婷婷色综合| 秋霞免费无码视频日韩A片| 加勒比伊人综合| 久久极品伊人| 亚洲第一黄色av网站| 亚洲欧美骚| 激情亚洲天堂| 91丨九色丨东北熟女| 五月天我淫我色av| 91欧美www| 综合网久久| 精品国产肉丝袜在线拍国语 | 亚洲棕合电彰| 91精品久久久久久77777| 大香蕉免费3| 亚洲天堂电影网99999| 婷婷综合在线观看| 无码99| 无码黑人精品一区二区三区三| 玖玖久久久| 亚洲资源网| 中文字幕91综合| 亚洲二区精品在线观看| 午夜精品久久久| 日本国产二线女色| 欧美性生活内射| 欧亚综合一卡二卡中文字幕| 在线观看亚洲专区| 亚洲欧洲日本精品中文a∨| 四虎av在线| 国产免费一区| 亚洲熟久久| 91色图片| 欧美日韩国产中文精品字幕自在自线,| 美国aaaaa一级黄片| av网站国产主播在线| 干B网| 国语精品av| 中文熟女五十乱码在线| 91男人天堂网| 亚洲综合校园春色| 日欧毛片久久| 天天看片麻豆| 日韩美女高潮喷水视频| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 人人操人人大香蕉| 国产色精品午夜大片| 午夜国产乱伦视频| 中文精品一区二去| 国产日韩欧美中文在线播放| 欧美日韩性爱电影在线| 成人一道本免费视频| 中文久久| 色网站导航大全| 成人国产视频在线观看| 中文字幕丰满人妻日本| 18禁看网站一区| 久久精品一区二区一8| 午夜精品久久一区二区| 26uuu最新| 精品久久久久久AV无码| 国产精品ⅴ无码大片在线看.| av网站免费线看| 在线播放成人高清免费视频| 人人看人人插| www国产天美久久久| 日本国产成人亚洲精品无码| 婷婷综合| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 情色日播放AV| 啊啊啊在线观看免费视频| 日夜干射色啊| 精品丰满熟妇人妻一区| 青草一区二区| 在线毛片片免费观看| 亚洲免费成人在线高清无码视频| 极品美女福利在线观看| 九月婷婷综合| 97激情97激情| 一二三卡欧美日韩人妻免费精品| 男人综合网| 欧美 精品国产制服第一页| 97在线精品观看视频| 婷婷深爱五月| 乱日视频| 另类成人首页一区| 97欧美| 日本黄色大片一级视频免费麻豆| 亚洲自拍另类丝袜综合| 日日骚精品视频| 欧美综合中文| 最近2018中文字幕在线高清第一页| 午夜福利无毒不卡| 99九九久久| 日本日日色视频| 国产少妇内射| 蜜乳中文字幕a在线| 成人性爱高清视频免费看| 国内91熟女人妻丝袜天天精品视频在线 | 天天影视综合网欧美精品| 大香网伊人久久综合网eew| www.人人摸在线视频| 日产欧美电影一区二区三区| 五月天激情四射| 好看的91视频| 99在线精品视频| 手机在线人成免费视频| 欧美最婬乱婬爆婬性视频 | 亚洲古典另类欧美在线| 真实高潮91| 青草伊人网| 人妻一二三区| 久九九九九九九热| 久热这里只有精品9| 国产女人与拘做受视频免费| 97资源制服丝袜| 日本高清一本二本免费不卡| 一区二区精品日韩欧美在线观看| 国产这里只有精品| 搡老女人老91妇女熟女| 国产午夜在线观看视频| 婷婷色一区| 91痴汉| 久久东京伊人一本到鬼色| 日本美女性生活久久久久久久| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 八戒无码国产午夜福利| 狠狠狠一区二区三区| 凹凸 69堂 在线播放| 亚洲第2页| 色超碰综合| 青娱乐二区免费| 超碰超碰95| 青青草一区二区高清无码视频| 国产久久av| 加勒比海成人视频网| 久久精品福利影院| 97人人爱人人做人人乐| 国产精品不卡高清在线观看| 久久黄黄| 国产97亚洲| 亚洲激情网一二三四区| 男同专区一区二区三区在线| 久久九九综合| 国产99999| 看日韩美女二区三区免费操逼视频 | 国产午夜精品理论片一二三区区| 久久香蕉国产传媒一区剧情天美| 天天综合网~91| 中文字幕 码 自拍 视频 区| 9久久久久久| www.狠狠| 免费观看日本操逼视频| 久草色悠悠在线视频| 74成人在线| 裸体美女久久久| 性久久| 亚洲91射| 久草成人福利导航| 性爱网站一区二区| 超碰98综合网| 老女人老91妇女老热女| 久久五十路熟女人妻| 精品中文日韩字幕视频| 97最新在线播放视频| 久久久久久久| 亚洲97P| 另类 日韩 熟女| 伊香蕉综合久久久久久久噜噜噜| 青青草九九九九九| 一类无码操逼视频| 一区二区无码视频| 久操九九九九| 不卡一区二区日本视频| julia国产在线 | 97无码视频在线播放| 午夜福利在线合集| 色色无码| 二男一女成人A片| 97色操| 亚洲 欧美 小说| 五月丁香社区婷婷日韩欧美精品影院| 青青青青青手机视频| 色狠狠综合噜一二三区| 国产69精品久久久久99尤物| 操人妻视频| 天天天天天超碰| 丁香五月激情啪啪| 超碰国产精品无码| 极品色综合| 青青草乱入乱欲视频在线观看| 5月婷婷6月六月丁香| 亚洲美女AV无码| 亚洲一区制服诱惑| 婷婷综合在线观看| 一块操欧美性爱| 麻豆国产视频精品观看| 黄色成年| 嗯~啊~快点 死我视频免费看网站| 亚洲综合色网| 乱伦AVxx| 亚瑟国产精品久久无码| 先锋女优在线观看视频| 久久久噜噜噜久久人妻| 久久AV无码1区2区3区| 色婷婷综合视频| 岛国网址国产| 高清无码久操视频| 熟妇女伦乱视频| 嫩草 我啊~嗯~在线| 97 超碰 人人做 人人爱| 日韩一区二区精品视频| 伊人女女资源在线观看| jk白丝没脱就开始啪啪| 日韩精品资源专区二区| 啊啊啊啊啊好多水| 天天操福利视频综合网站| 久久人妇| 18禁久极品美女久久哦哟呀!| 99热精品青草在线| 亚洲天堂人妻一区二区| www.99热| 久久久五月天| av九九| 996热| 丁香五月婷婷基地| 久久久久久AV无码免费网站| 亚洲天堂人妻熟妇视频| 国产东北女人在线视频| 99这里只有精品国产| 囯产精品久久久久久久久久梁医生| 殴美性天天| 国产AV中文| 久久婷婷成人综合色怡春院| 91性网| 91亚洲综合在线| 天天狂操夜夜狂日| 色妇综合网| 亚洲色图 欧美| 国产色产精品在线观看| 欧美精品成人一区二区在线观看| 欧美亚洲综合高清在线| 99热在线观看| 国产三级在线现体验区| 涩涩这里只有精品视频| 国产成人精品无码久久| 免费作爱一级视频| 亚卅熟女乱色| 天天插天天插| 欧美少妇大量自拍视频在线观看| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 欧美制服网站美腿丝袜| 99久久久无码| 色偷偷色偷偷欧美日韩| 人妻人妻天天碰| 丝袜视频网国产90| 丰满人妻-区二区三区| 日韩无码极品| 国产精品视频电影| 一区二区首页| 超碰97久久国| 夜夜欧美| 日本成人免费一区二区三区| 中文字幕奈奈美被公侵犯| 91在线精品| 丁香五月天堂网| av操操不卡| 亚洲日韩XXX| 日本大香蕉综合网| 中国AV美女| 在线国产一区二区av| 天天摸,夜夜摸| 69人妻精品丰满熟女区| 激情文学亚洲| 极品国产内射| 91丨熟女丨丰满熟女| 国产原创自拍| 欧美伦乱爱| 亚洲女人91| 性爱免费视频成人| 午夜精品久久久久久久男人的天堂| 一区二区首页| 欧美热图99| 成人影院永久免费观看网址| 日韩在线观看中文字幕视频| 一区二区三区日韩欧美| 大香蕉2017| 免费的黄片有限公司| 久久婷色| 国产成人天堂| 欧美色网| 婷婷五月成人| 青青操视频在线| 国产精品美女久久久久久网站| 亚洲一区二区三区AV无码| 91久久精品国产| 一二三卡欧美日韩人妻免费精品| 国产肏逼网站| 五月天婷婷久久| 亚洲清纯唯美| 无码人妻精品一区二区三区99不卡| 精品一区二区成人动漫| 欧美国产有色电影| 丰满人妻区一区二区三| 国产成人在线观看综合| 成人精品一区二区三区| 久久久久9999| 五月婷婷五月天| 亚洲影视第一页| 久久透逼视频| 91九色丨国产丨爆乳| 欧美激情区| 婷婷视频网| 九九超碰综合网| 亚洲第一黄色av网站 | 欧美性爱日韩高清| 伊人影院中文字幕| 五月天精品| 影音先锋中文字幕日本好一区二区| 大香蕉伊在线久草麻豆天堂故事| 欧美亚洲高清| 狠狠操夜夜操蜜桃视频三区| 超碰九九| 九九热九九| 俺去啦自拍| 嫖老熟女A片一二三区| 色麻豆AV| 精品亚洲国产成人av网站| 性生活久久久久久久久久| 青娱乐二区免费| 91人人看| 三级日本一区二区三区| 亚洲综合性感在线| 亚洲日韩视频二区| 青青草精品| 久久精品国产99精品亚洲蜜...| 夜夜操av亚洲一区二区| V A在线| 无码一区二区三区四区五区六区七区八区九区十区视频 | 亚洲污污网站| 操逼片中文| 亚州精品人妻一二三区| 成人在线视频网| 日韩欧视频| 综合色图,成人综合网| 亚洲欧美高清| 午夜天堂网| 精品无码不卡视频| 国产精品动态一区二区三区四四| 国产亚州精品美女久久久免费| 激情内射| 天天欧美欧美亚洲网| 国产自制av蜜乳| 东北老女人的激情视频| 九一亚洲国产免费| 人妻一区二区三区四区视频| 久久偷拍人| 浪人综合网| 色色九区| 少妇69中文| 无码聚合| 亚洲av青草久久一区二区| 午夜精品久久久久久久99热影院 | 超碰69| 久久香蕉网| 国产亚洲精品精AV.| 久久色AV线| 日本曲间由美性生活片| 亚洲国产ⅴ高清在线观看| 久久久久久99999国产精品| 欧美激情五月天| 日韩簧片免费看| 极品少妇久久久久| 岛国AV一区二区电影| 欧亚乱色熟女一区二区| 91精品91久久久久77777俄罗斯老妇姓x| 久久av网| 99久热| 草草影院日本第一页| 91青青| 97视频在线观看高清资源| 亚洲少妇中文字幕网址| 搡老熟女免费视频| 亚洲在钱| 久久国产精品,久久国产| 国产亚洲禁久一区二区| 人人爱人人乐人人操| 乱色老一区二区三区的观看方式 | 青青草公开在线免费不卡视频| caopeng97人妻| 91丨九色丨国产打屁股| 国产日逼视频| 欧美牲| 97中文综合| 99蜜桃臀久久久欧美精品网站| 99色色| 亚州操逼网| 九九视频黄色片| 超碰97COm中文| 操逼无毒无码免费视频| 春色校园综合网| 最新欧洲欧美日本激情网站| 国产剧情AV不卡在线观看| a片在线播放| 伦理第一页| 久久女女| 狠狠操狠狠燥| 人人搡人人肉久久精品| 91在线视频免费中出| A久久| 精品成人av一区二区三区在线| 翔田千里AⅤHD无码| 97视频免费在线观看| 97干在线视频| 国内毛片四区| 91精品操美女| 精品9999| 日本加勒比无码专区一二三| 亚洲和欧美裸体美女双飞视频| 国产欧美一区二区| 日韩人妻资源网| 欧美综合站| 亚洲五月丁香花狠狠干一区二区三区 | 天堂岛av| 少妇二级| 天天色悠悠激情| 久久香蕉国产传媒一区剧情天美| 超碰在线国产| 激情综合五月| 欧美激情五月天| 九九九九九九九精品视频| 综合啪啪| 日韩熟妇二区| 97天天摸天天碰| 黄污污污污| 人妻少妇一区二区| 国产久久一区二区午夜| 日韩另类色图| 神马久久久久眼| 欧美一区二区情色| 国产农村妇女精品一二区| 啊啊啊啊啊啊啊好爽不要| 国产精品网站www| 日本黄色裸日本黄色裸体| 亚洲自拍一区夜夜操| 国产白丝在线| 夜夜夜夜爽| 色网亚洲人| 91亚洲人| 午夜男女爽爽爽影院视频| 黑人精品XXX一区一二区| 偷拍三区| 一本一道vs波多野结衣| 国产AV高清AV无码| 五月综合激情| 日韩 人妻 精品| 免费网色网站| 蜜桃午夜视频一区二区 | 精品人妻免费观看| 久久久久久久伊人精品| 少妇高潮对白在线观看| 免费看日产一区二区三区| 欧美国产日韩清纯唯美| 日韩伦理视频| 2017超碰| 青青草中文字幕| 国产成年女人免费视频播放a| 欧美顶级黄色大片免费| 99精品久久| 天美一二三在线观看Av| 男人的天堂无码| 白丝一区| 1769一区二区| 久操高青| 69少妇一区二区| 欧美三级中文字幕hd| 人妻久久久久久久久久久久久久久| 亚洲中文字幕乱码无码一区二区| 黑人精品久久97| 超碰色97| 成人麻豆av电影网站| 五月开心网| 久久久99999久网站| 超碰97COm中文| 性影在线视频| 天天综合亚在线| 九一国产精品| 91精品人妻偷情| av资源在线播放天堂| 狠狠操一区二区| juliaann欧美丝袜办公室| 日本免费人成视频播放120秒| 99性爱视频| 劲爆欧美人妖三区91| 亚洲av青草久久一区二区| 欧美日本一区二区a人| 久久不卡一区二区| 久久久啊啊啊| 八人操人人摸人人看| 日韩av熟女一区二区三区成人| 夜夜国自区| 欧亚性爱在线视频| 欧美色图亚洲色图成人在在线| 大香蕉92| 一级片在线观看高清无码| 欧美78p| 亚洲黄色AV电影| JIZZJIZZ国产精品喷水| 伊人国产视频| 久久精品国产精品一区| 天天干天天爽| 91操熟女视频| 亚洲欧美国产成人综合不卡| 爱啪精品一区| 91欧洲国产成人久久精品网站| 超碰av在线| 大色网久久| 女人双腿搬开让男人桶| 色天欧美| 久久黄色性爱视频| 久久久久ab| 亚洲色图尤物视频| 中文字幕版| 人妻性爱一区二区| 久久手机视直播| 中文字幕一区二区三区50路| 婷婷综合网| 综合五月天| 婷婷久久网| 国产又粗又长的视频| av大香蕉| 久久久四区| 深夜激情| 欧美性色网| 女人天堂网| 亚洲黄色a级片| 天天躁狠狠躁av| 九月丁香综合网| 啊啊啊啊啊啊啊在线| 久久久久久亚洲中文| 国产不卡中文字幕免费avi| 中字幕人妻一区二区三区| 成年男人的天堂| 色色色日本| 久久m| 日韩激情中文字幕有码| 天天日熟妇| 97色在线| 日韩兔费看黄片| 天天弄欧美| 日韩中文字幕精品一区在线| 狠狠色一区二区中文字幕| av午夜影院在线播放| 懂色av中文字幕一区二区三区天美| 久久‘黄片视频| 欧美九九九| 啊啊啊 在线观看| 国产日韩无码一区二区三区久久区| 歐美性天天| 亚洲欧美国产其他二区| 久久粉色| 老师充足的奶水小说| 日韩无码黄色片| 欧美三四五区| 久热色情精品| 东北丰满熟女国产一区| 噜噜噜噜天天狠狠| 日韩久久艹| 亚洲欧洲综合视频在线| 亚州综合在线| 欲射影视| 超碰在线99| 国内精品久久人妻性色av| 伊人96在线| 欧美 亚洲 制服 精品| 嗯啊视频免费在线观看| 在线观看啊啊啊啊啊| 色一射色一射| 国产精品一级片在线看| 97免费视频在线| 熟女一区二区三区| 91九色首页| 欧美日韩另类在线| 青娱乐黄色录像| 天操老女人| 性吧在线视频| 国产精品免费日韩| 91国模| 久久久草草精品| 91 丝袜在线| 97人人模人人爽人人| 成人性爱AV在线免费观看| 国产丁香精品露脸视频| 大香蕉国产中文自拍| 五月天婷婷激情| 国产精品一二三在线看| 日韩国产精品人妻无码久久久| 人妻人久久精品中文字幕| 熟女色图在线| 丁香五月天视频| 无码在线亚洲| 91成人高清在线观看| 999精品乱码| 久久久久久免费电影| 精品97久久综合| 久久久草成人网站久久久草成人久久久草久久久 | 97超碰欧美精品| 91精品免费| av午夜玫瑰| 东京日日夜夜| 丁香九月激情啪| 婷婷丁香五月天综合东京热| 韩三级a视频在线观看| 夫妻天天操岛国视频| 久99在线免费观看视频| 婷婷15月天青娱乐| 亚洲综合图文| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 狠狠操狠狠| 欧美精品自慰系列寂寞少妇| 骚逼高潮久久精品| 青青草视频导航官网| 丁香六月综合激情| 亚洲午夜福利视频| 色就色综合| 人人做,人人操,人人摸| 91视频综合网| 日韩无限资源| 91五十路| 国产精品操| 欧美懂色综合网| 国产97视频| 欧美综合网在线| 亚洲色宗合| 啊啊啊爽爽| 欧美AB在线| 999999精品| 97超碰日韩| 免费在线看黄片av| 超碰成人人人爽人人爽| 日本一区不卡| 性色AV网站| 欧美18 在线观看| 最新av网站在线观看| 伊人精品久久网站| 十八禁av无码免费网站APP| 成人日韩3| 老司机射| 香蕉婷婷| 欧美|91色综合| 超碰色中文| 亚洲限制级| 国产吹潮女在线观看| 天天操福利视频综合网站| 91 偷| 九九九九热| 亚洲欧洲中文日韩女优乱码|