国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

阿里面試:請詳細解釋一下 Flink 內(nèi)存管理,具體有哪些參數(shù)可以調(diào)整?

大數(shù)據(jù)
Flink 內(nèi)存管理機制,作為保障作業(yè)高效穩(wěn)定運行的關(guān)鍵支柱,深刻影響著任務(wù)執(zhí)行性能、資源利用率以及系統(tǒng)容錯能力。理解并掌握 Flink 內(nèi)存管理原理與優(yōu)化策略,是開發(fā)者構(gòu)建高性能大數(shù)據(jù)處理系統(tǒng)的必修課。

在大數(shù)據(jù)領(lǐng)域,Apache Flink 作為一個開源的流處理和批處理框架,憑借其強大的流處理和批處理能力備受青睞。而 Flink 內(nèi)存管理機制,作為保障作業(yè)高效穩(wěn)定運行的關(guān)鍵支柱,深刻影響著任務(wù)執(zhí)行性能、資源利用率以及系統(tǒng)容錯能力。理解并掌握 Flink 內(nèi)存管理原理與優(yōu)化策略,是開發(fā)者構(gòu)建高性能大數(shù)據(jù)處理系統(tǒng)的必修課。

1. JVM 內(nèi)存管理的不足

現(xiàn)階段,大部分開源的大數(shù)據(jù)計算引擎都是用 Java 或者是基于 JVM 的編程語言實現(xiàn)的,如 Apache Hadoop、Apache Spark、Apache Drill、Apache Flink 等。Java 語言的好處是不用考慮底層,降低了程序員的門檻,JVM 可以對代碼進行深度優(yōu)化,對內(nèi)存資源進行管理,自動回收內(nèi)存。但是自動內(nèi)存管理的問題在于不可控,基于 JVM 的大數(shù)據(jù)引擎常常會面臨一個問題,即在處理海量數(shù)據(jù)時,如何在內(nèi)存中存儲大量的數(shù)據(jù)。具體來說,JVM 內(nèi)存管理存在以下不足:

(1) 有效數(shù)據(jù)密度低

Java 的對象在內(nèi)存中的存儲包含 3 個主要部分:對象頭、實例數(shù)據(jù)、對齊填充部分。32 位和 64 位的虛擬機中對象頭分別需要占 32bit 和 64bit。實例數(shù)據(jù)時實際的數(shù)據(jù)存儲。為了提高效率,內(nèi)存中數(shù)據(jù)存儲不是連續(xù)的,而是按照 8 byte 的整數(shù)倍進行存儲。這就導致在 JVM 中有效信息的存儲密度很低。

(2) 垃圾回收

JVM 的內(nèi)存回收機制的優(yōu)點是開發(fā)者無需關(guān)注資源回收問題,可以提高開發(fā)效率,減少內(nèi)存泄漏的可能。但是內(nèi)存回收是不可控的,在大數(shù)據(jù)計算的場景中,TB、PB 級的數(shù)據(jù)計算需要消耗大量的內(nèi)存,在內(nèi)存中產(chǎn)生海量的 Java 對象。一旦出現(xiàn) Full GC,GC 會達到秒級甚至分鐘級,直接影響執(zhí)行效率。

(3) OOM 問題影響穩(wěn)定性

OutOfMemoryError 是分布式計算框架經(jīng)常會遇到的問題,當 JVM 中所有對象大小超過分配給 JVM 的內(nèi)存大小時,就會發(fā)生 OutOfMemoryError 錯誤,導致 JVM 崩潰,分布式框架的健壯性和性能都會受到影響。

(4) 緩存未命中問題

CPU 進行計算的時候,是從 CPU 緩存中獲取數(shù)據(jù),而不是直接從內(nèi)存中獲取數(shù)據(jù)。Java 對象在堆上存儲的時候并不是連續(xù)的,所以從內(nèi)存中讀取 Java 對象時,緩存的鄰近的內(nèi)存區(qū)域的數(shù)據(jù)往往不是 CPU 下一步計算所需要的,這就是緩沖未命中。此時 CPU 需要空轉(zhuǎn)等待從內(nèi)存中重新讀取數(shù)據(jù),導致 CPU 沒有充分利用起來。如果數(shù)據(jù)沒有在內(nèi)存中,而是需要從磁盤上加載,那么執(zhí)行效率會變得極低。

3. Flink 的自主內(nèi)存管理

Flink 從一開始就選擇了自主的內(nèi)存管理,避開了 JVM 內(nèi)存管理在大數(shù)據(jù)場景下的問題,提升了計算效率。

(1) MemorySegment

在 Flink 中,Java 對象的有效信息被序列化為二進制數(shù)據(jù)流,在內(nèi)存中連續(xù)存儲,保存在預分配的內(nèi)存塊上,內(nèi)存塊叫做 MemorySegment。MemorySegment 是內(nèi)存分配的最小單元,是一段固定長度的內(nèi)存(默認大小為 32KB)。每條記錄都會以序列化的形式存儲在一個或多個 MemorySegment 中。

(2) 堆上內(nèi)存與堆外內(nèi)存

使用堆上內(nèi)存存在一些問題,如超大內(nèi)存的 JVM 啟動時間長、Full GC 時間長等。而堆外內(nèi)存可以將大量的數(shù)據(jù)保存在堆外,極大地減小堆內(nèi)存,避免 GC 和內(nèi)存溢出的問題,并且在寫磁盤或網(wǎng)絡(luò)傳輸時采用零拷貝,提高了 IO 效率。

4. Flink 內(nèi)存管理核心參數(shù)詳解

Flink 提供了豐富的內(nèi)存配置參數(shù),通過合理設(shè)置這些參數(shù),可以優(yōu)化內(nèi)存使用,提升作業(yè)性能。

(1) TaskManager 內(nèi)存參數(shù)

  • taskmanager.memory.process.size:用于設(shè)置 TaskManager 進程的總內(nèi)存大小,該參數(shù)涵蓋了堆內(nèi)存、堆外內(nèi)存以及其他系統(tǒng)開銷所需的內(nèi)存。在設(shè)置時,需要綜合考慮作業(yè)的計算復雜度、數(shù)據(jù)量大小以及節(jié)點的硬件資源情況。例如,對于處理大規(guī)模數(shù)據(jù)的實時計算作業(yè),應(yīng)適當增大該參數(shù)值,以確保有足夠的內(nèi)存空間支持任務(wù)執(zhí)行。
  • taskmanager.memory.managed.size:指定托管內(nèi)存的大小。托管內(nèi)存主要用于緩存中間結(jié)果、進行排序和哈希操作等。在一些涉及復雜聚合和排序的作業(yè)中,合理增加托管內(nèi)存可以減少磁盤 I/O 操作,提高數(shù)據(jù)處理速度。
  • taskmanager.memory.jvm - metaspace.size:用于設(shè)置 JVM 元空間的大小,元空間主要存儲類的元數(shù)據(jù)信息。當作業(yè)中涉及大量的類加載操作時,如動態(tài)生成代碼或使用復雜的庫依賴,需要適當調(diào)整該參數(shù),以避免因元空間不足導致的 OutOfMemoryError 異常。
  • taskmanager.memory.task.heap.size:如果希望確保指定大小的 JVM 堆內(nèi)存給用戶代碼使用,可以明確指定任務(wù)堆內(nèi)存。指定的內(nèi)存將被包含在總的 JVM 堆空間中,專門用于 Flink 算子及用戶代碼的執(zhí)行。
  • taskmanager.memory.framework.heap.size:用于 Flink 框架的 JVM 堆內(nèi)存,一般無需調(diào)整。
  • taskmanager.memory.framework.off - heap.size:用于 Flink 框架的堆外內(nèi)存(直接內(nèi)存或本地內(nèi)存)(進階配置)。
  • taskmanager.memory.task.off - heap.size:用于 Flink 應(yīng)用的算子及用戶代碼的堆外內(nèi)存(直接內(nèi)存或本地內(nèi)存)。
  • taskmanager.memory.network.min、taskmanager.memory.network.max、taskmanager.memory.network.fraction:用于任務(wù)之間數(shù)據(jù)傳輸?shù)闹苯觾?nèi)存(例如網(wǎng)絡(luò)傳輸緩沖)。該內(nèi)存部分為基于 Flink 總內(nèi)存的受限的等比內(nèi)存部分。
  • taskmanager.memory.jvm - overhead.min、taskmanager.memory.jvm - overhead.max、taskmanager.memory.jvm - overhead.fraction:用于其他 JVM 開銷的本地內(nèi)存,例如棧空間、垃圾回收空間等。該內(nèi)存部分為基于進程總內(nèi)存的受限的等比內(nèi)存部分。

(2) JobManager 內(nèi)存參數(shù)

  • jobmanager.memory.heap.size:設(shè)置 JobManager 的 JVM 堆內(nèi)存大小。堆內(nèi)存用于存儲 JobManager 運行過程中創(chuàng)建的對象和數(shù)據(jù)結(jié)構(gòu)。合理設(shè)置堆內(nèi)存大小,能夠保證 JobManager 在處理作業(yè)調(diào)度和協(xié)調(diào)任務(wù)時的穩(wěn)定性,避免因堆內(nèi)存不足引發(fā)的性能問題。
  • jobmanager.memory.jvm - metaspace.size:設(shè)置 JVM 元空間的大小,元空間用于存儲 JVM 加載的類元數(shù)據(jù)。默認約 256m,可通過 - XX:MaxMetaspaceSize 調(diào)整。
  • jobmanager.memory.off - heap.size:用于 Netty 網(wǎng)絡(luò)通信的堆外內(nèi)存。
  • jobmanager.memory.jvm - overhead.min、jobmanager.memory.jvm - overhead.max、jobmanager.memory.jvm - overhead.fraction:用于其他 JVM 開銷的本地內(nèi)存,例如棧空間、垃圾回收空間等。該內(nèi)存部分為基于總進程內(nèi)存的受限的等比內(nèi)存部分。

5. Flink 內(nèi)存管理配置與調(diào)優(yōu)實踐

(1) 內(nèi)存配置步驟

  • 評估作業(yè)需求:在配置 Flink 內(nèi)存之前,首先需要對作業(yè)的類型、數(shù)據(jù)規(guī)模、計算復雜度等進行全面評估。例如,對于實時流處理作業(yè),需要考慮數(shù)據(jù)的流量峰值和持續(xù)時間;對于批處理作業(yè),則要關(guān)注數(shù)據(jù)的總量和處理邏輯的復雜性。通過分析作業(yè)的特點,確定大致的內(nèi)存需求范圍。
  • 設(shè)置基礎(chǔ)參數(shù):根據(jù)評估結(jié)果,在 flink - conf.yaml 配置文件中設(shè)置 TaskManager 和 JobManager 的內(nèi)存參數(shù)。例如,對于一個數(shù)據(jù)量較大的批處理作業(yè),可以將 taskmanager.memory.process.size 設(shè)置為 8g,taskmanager.memory.managed.size 設(shè)置為 4g。
  • 動態(tài)調(diào)整優(yōu)化:在作業(yè)運行過程中,通過 Flink 的監(jiān)控工具實時觀察內(nèi)存使用情況。如果發(fā)現(xiàn)內(nèi)存使用過高或過低,及時調(diào)整相關(guān)參數(shù)。例如,當發(fā)現(xiàn)托管內(nèi)存利用率較低時,可以適當減小 taskmanager.memory.managed.size 參數(shù)值,釋放內(nèi)存資源;反之,若出現(xiàn)內(nèi)存不足導致作業(yè)性能下降,則需要增大相應(yīng)的內(nèi)存參數(shù)。

(2) 常見內(nèi)存問題及解決方案

  • IllegalConfigurationException:報錯原因是配置參數(shù)中存在無效值或配置沖突。解決方法是根據(jù)報錯信息修改配置。
  • OutOfMemoryError: Java heap space:報錯原因是 JVM 的堆空間過小。解決方法是可以通過增大總內(nèi)存、TaskManager 的任務(wù)堆內(nèi)存、JobManager 的 JVM 堆內(nèi)存等方法來增大 JVM 堆空間。
  • OutOfMemoryError: Direct buffer memory:報錯原因是 JVM 的直接內(nèi)存限制過小,或者存在直接內(nèi)存泄漏。解決方法是確認用戶代碼及外部依賴中是否使用了 JVM 直接內(nèi)存,以及如果使用了直接內(nèi)存,是否配置了足夠的內(nèi)存空間;可以通過調(diào)整堆外內(nèi)存來增大直接內(nèi)存限制。
  • OutOfMemoryError: Metaspace:報錯原因是 JVM Metaspace 限制過小。解決方法是調(diào)整 TaskManager、JobManager 的 JVM Metaspace。
  • IOException: Insufficient number of network buffers:報錯原因是 TaskManager 的網(wǎng)絡(luò)內(nèi)存過小。解決方法是通過調(diào)整 taskmanager.memory.network.min、taskmanager.memory.network.max、taskmanager.memory.network.fraction 增大網(wǎng)絡(luò)內(nèi)存。
  • 容器(Container)內(nèi)存超用:如果 Flink 容器嘗試分配超過其申請大小的內(nèi)存(Yarn 或 Kubernetes),部署環(huán)境可能會殺掉超用內(nèi)存的容器,造成作業(yè)執(zhí)行失敗。解決方法是檢查是否配置了足夠的內(nèi)存空間,特別是對于使用 RocksDB State Backend 的作業(yè),需要確保有足夠的托管內(nèi)存;同時,可以嘗試增加 JVM 開銷。

6. 如何按照數(shù)據(jù)量來計算應(yīng)該配置多大內(nèi)存

(1) 確定總數(shù)據(jù)量

首先,需要明確要處理的數(shù)據(jù)量大小。這可以通過統(tǒng)計數(shù)據(jù)源中的數(shù)據(jù)記錄數(shù)、數(shù)據(jù)文件的大小等方式來確定。例如,你要處理的是一個電商平臺的交易數(shù)據(jù),每天的數(shù)據(jù)量為 100GB。

(2) 考慮數(shù)據(jù)處理邏輯和復雜度

不同的數(shù)據(jù)處理邏輯和復雜度對內(nèi)存的需求也不同。例如,簡單的過濾、映射操作可能對內(nèi)存的需求相對較低,而復雜的聚合、排序、連接操作則需要更多的內(nèi)存來存儲中間結(jié)果。如果你的作業(yè)包含復雜的聚合和排序操作,那么需要適當增加托管內(nèi)存的配置。

(3) 計算 TaskManager 內(nèi)存

① 計算 JVM 開銷

JVM 開銷包括 JVM 元空間和其他開銷,這些部分的大小可以通過配置參數(shù)來設(shè)置。例如,JVM 元空間默認約 256MB,JVM 開銷占進程總內(nèi)存的比例默認約為 10%,最小值為 192MB,最大值為 1GB。假設(shè) TaskManager 進程總內(nèi)存配置為 8GB,那么 JVM 開銷為 8GB * 0.1 = 819.2MB,在 192MB - 1GB 的范圍內(nèi),所以 JVM 開銷為 819.2MB。

② 計算 Flink 總內(nèi)存

Flink 總內(nèi)存等于進程總內(nèi)存減去 JVM 開銷。即 8GB - 819.2MB = 7164.8MB。

③ 計算網(wǎng)絡(luò)緩存內(nèi)存和托管內(nèi)存

網(wǎng)絡(luò)緩沖內(nèi)存(fraction 0.1,min 64M,max 1GB),假設(shè) Flink 總內(nèi)存為 7164.8MB,3430*0.1 = 343M 在 min - max 之間,所以網(wǎng)絡(luò)緩沖內(nèi)存為 343M。托管內(nèi)存 fraction 為 0.4,所以托管內(nèi)存為 7164.8MB * 0.4 = 2865.92MB。

④ 計算框架堆上和堆外內(nèi)存

框架堆上和堆外內(nèi)存默認都是 128M,所以總共是 256M。

⑤ 計算任務(wù)堆內(nèi)存

任務(wù)堆外內(nèi)存默認是 0M,task 內(nèi)存等于 flink 內(nèi)存減去框架內(nèi)存、托管內(nèi)存和網(wǎng)絡(luò)內(nèi)存,即 7164.8MB - 256MB - 2865.92MB - 343MB = 3700.88MB。

7. Flink 內(nèi)存管理實戰(zhàn)案例

(1) 實時日志分析場景

在實時日志分析場景中,F(xiàn)link 作業(yè)需要實時接收和處理大量的日志數(shù)據(jù),進行清洗、過濾、聚合等操作。假設(shè)一個電商平臺的實時日志分析作業(yè),每秒處理的日志數(shù)據(jù)量約為 10MB,且包含復雜的聚合計算。在這種情況下,可以進行如下配置:

  • TaskManager 內(nèi)存配置:將 taskmanager.memory.process.size 設(shè)置為 16g,以確保有足夠的內(nèi)存空間支持任務(wù)執(zhí)行。適當增加 taskmanager.memory.managed.size 的值,例如設(shè)置為 8g,用于緩存中間結(jié)果、進行排序和哈希操作等,減少磁盤 I/O 操作,提高數(shù)據(jù)處理速度。同時,合理設(shè)置 taskmanager.memory.task.heap.size 的值,為用戶代碼提供足夠的堆內(nèi)存。
  • JobManager 內(nèi)存配置:將 jobmanager.memory.process.size 設(shè)置為 4g,保證 JobManager 有足夠的內(nèi)存來處理大量的任務(wù)請求和元數(shù)據(jù)管理。合理設(shè)置 jobmanager.memory.jvm - heap.size 的值,例如設(shè)置為 2g,確保 JobManager 在處理作業(yè)調(diào)度和協(xié)調(diào)任務(wù)時的穩(wěn)定性。

(2) 大規(guī)模數(shù)據(jù)批處理場景

在大規(guī)模數(shù)據(jù)批處理場景中,F(xiàn)link 作業(yè)需要處理大量的歷史數(shù)據(jù),進行復雜的計算和分析。例如,一個金融機構(gòu)的數(shù)據(jù)分析作業(yè),需要處理 TB 級別的交易數(shù)據(jù)。在這種情況下,可以進行如下配置:

  • TaskManager 內(nèi)存配置:將 taskmanager.memory.process.size 設(shè)置為 32g,滿足作業(yè)對內(nèi)存的需求。根據(jù)作業(yè)的計算復雜度和數(shù)據(jù)量大小,合理調(diào)整 taskmanager.memory.managed.size 的值,例如設(shè)置為 16g,用于存儲和處理大規(guī)模數(shù)據(jù)。
  • JobManager 內(nèi)存配置:將 jobmanager.memory.process.size 設(shè)置為 8g,確保 JobManager 能夠穩(wěn)定地進行任務(wù)調(diào)度和資源分配。合理設(shè)置 jobmanager.memory.heap.size 的值,例如設(shè)置為 4g,以存儲作業(yè)的元數(shù)據(jù)和狀態(tài)信息。

8. 根據(jù)具體癥狀調(diào)整內(nèi)存參數(shù)的詳細內(nèi)容

(1) OutOfMemoryError: Java heap space

當出現(xiàn)該異常時,意味著 JVM 的堆空間過小,可能是由于內(nèi)存參數(shù)設(shè)置過小、作業(yè)數(shù)據(jù)量超出預期或內(nèi)存泄漏等原因?qū)е隆=鉀Q方法如下:

  • 增大總內(nèi)存:可以通過增大 taskmanager.memory.process.size 參數(shù)值,為 TaskManager 分配更多的總進程內(nèi)存,從而間接增大 JVM 堆空間。例如,將 taskmanager.memory.process.size 設(shè)置為 8g 或更大。
  • 增大任務(wù)堆內(nèi)存:增加 taskmanager.memory.task.heap.size 參數(shù)的值,為用戶代碼分配更多的堆內(nèi)存,例如將其設(shè)置為 4g。
  • 增大 JobManager 的 JVM 堆內(nèi)存:調(diào)整 jobmanager.memory.heap.size 參數(shù),例如設(shè)置為 2g 或更大,以滿足作業(yè)對堆內(nèi)存的需求。

(2) OutOfMemoryError: Direct buffer memory

該異常通常是由于 JVM 的直接內(nèi)存限制過小,或者存在直接內(nèi)存泄漏導致。解決方法如下:

  • 確認用戶代碼及外部依賴:檢查用戶代碼及外部依賴中是否使用了 JVM 直接內(nèi)存,以及如果使用了直接內(nèi)存,是否配置了足夠的內(nèi)存空間。可以通過調(diào)整堆外內(nèi)存來增大直接內(nèi)存限制,例如設(shè)置 taskmanager.memory.off - heap.size 參數(shù)。
  • 調(diào)整堆外內(nèi)存:在 flink - conf.yaml 中增加 taskmanager.memory.framework.off - heap.size 或 taskmanager.memory.task.off - heap.size 的值,例如設(shè)置為 128m 或更大。

(3) OutOfMemoryError: Metaspace

當出現(xiàn)該異常時,說明 JVM Metaspace 限制過小。可以通過調(diào)整 taskmanager.memory.jvm - metaspace.size 和 jobmanager.memory.jvm - metaspace.size 參數(shù)來解決,例如將其設(shè)置為 512M 或更大。

(4) IOException: Insufficient number of network buffers

當出現(xiàn)該異常時,通常是由于 TaskManager 的網(wǎng)絡(luò)內(nèi)存過小導致。可以通過調(diào)整 taskmanager.memory.network.min、taskmanager.memory.network.max 和 taskmanager.memory.network.fraction 來增大網(wǎng)絡(luò)內(nèi)存。例如:

taskmanager.memory.network.min:128m
taskmanager.memory.network.max:256m
taskmanager.memory.network.fraction:0.2

這樣可以增加網(wǎng)絡(luò)緩沖內(nèi)存,避免該異常的出現(xiàn)。

(5) 容器內(nèi)存超用

如果 Flink 容器嘗試分配超過其申請容器大小的內(nèi)存(Yarn 或 Kubernetes),部署環(huán)境可能會殺掉超用內(nèi)存的容器,造成作業(yè)執(zhí)行失敗。解決方法如下:

  • 檢查代碼和配置:首先需要檢查自己的代碼是否存在內(nèi)存泄漏問題,排除代碼層面的問題。
  • 增加 JVM 開銷:可以通過調(diào)整 taskmanager.memory.jvm - overhead.fraction 參數(shù),例如將其設(shè)置為 0.2,以增加 JVM 執(zhí)行開銷的內(nèi)存分配。
  • 調(diào)整 RocksDB 內(nèi)存管理:如果使用了 RocksDB State Backend,需要確保配置了足夠的托管內(nèi)存,并且可以通過設(shè)置 state.backend.rocksdb.memory.managed 參數(shù)來控制 RocksDB 使用的內(nèi)存量。
  • 修改 Glibc 線程競技場參數(shù):可以通過設(shè)置 MALLOC_ARENA_MAX 環(huán)境變量來限制每個線程的內(nèi)存分配,例如在啟動 Flink 時添加 -Dcontainerized.taskmanager.env.MALLOC_ARENA_MAX=1。

(6) 虛擬內(nèi)存超標

如果是虛擬內(nèi)存超過了,可以修改 yarn 配置,比如設(shè)置 yarn.nodemanager.vmem - check - enabled 為 false 關(guān)閉虛擬內(nèi)存檢測,或者增加 yarn.nodemanager.vmem - pmem - ratio 的值。

責任編輯:趙寧寧 來源: 大數(shù)據(jù)技能圈
相關(guān)推薦

2021-08-28 09:06:11

Dubbo架構(gòu)服務(wù)

2023-05-22 10:09:21

FlexboxCSS3

2020-02-28 09:09:51

閉包函數(shù)作用域

2020-07-06 08:00:26

MySQL程序員SQL

2025-07-03 07:54:03

2025-05-30 20:08:03

2023-11-09 17:29:06

2011-01-18 13:45:58

2025-02-28 09:14:09

JavaNIO機制

2020-08-13 08:43:24

TCP固定窗口滑動窗口

2024-09-26 00:00:10

死鎖阿里面試

2023-11-29 08:00:53

JavaTreeMap底層

2024-07-29 08:28:00

模型AI

2018-07-25 10:22:02

編程語言Python內(nèi)存管理

2021-08-02 07:59:21

單調(diào)棧題目

2021-08-02 07:59:47

技術(shù)動圖數(shù)列

2022-06-07 12:03:33

Java內(nèi)存模型

2025-12-23 06:25:00

JobManagerFlink大數(shù)據(jù)

2025-06-30 07:45:00

大數(shù)據(jù)數(shù)據(jù)湖數(shù)據(jù)倉庫

2019-01-02 11:22:27

HTTPFTPSMTP
點贊
收藏

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

色老板视频在线观看| 国产91色在线免费| 欧美一区二区播放| 成人欧美视频在线| 丝袜美腿av在线| 中文字幕一区免费在线观看| 国产欧美精品xxxx另类| 国产精品一区hongkong| 成人女性文胸| 日本成人不卡| 天堂av一区| 成人免费视频a| 色呦呦网站一区| 99久久综合国产精品| 性欧美亚洲xxxx乳在线观看| 国产裸舞福利在线视频合集| 国产精品网站在线看| 久久久久久久久丰满| 狠狠爱在线视频一区| 亚洲精品久久久一区二区三区| 久久久久女教师免费一区| 国产精品丝袜高跟| 免费黄色网页| 欧美黄色a视频| 久久久久久9| 日韩av免费看网站| 亚洲国产天堂| 日韩一区二区免费高清| 在线观看福利一区| 青青草视频在线观看| 欧美日韩黑人| 99国产精品99久久久久久| 精品久久久久久中文字幕| 91精品国产综合久久男男| 四虎久久免费| 日韩成人激情| 精品国产一区二区三区不卡 | 美女网站色免费| 亚洲人成久久| 欧美人xxxxx| 天堂综合网久久| 一区二区三区四区视频| 欧美大片免费高清观看| 久久久国产精品x99av| 99久久人爽人人添人人澡| 欧美性生活大片视频| 久久久久久久久久久99| 日韩av一二三| 成人黄色中文字幕| 极品束缚调教一区二区网站| 日韩av123| 中文av一区| bt天堂新版中文在线地址| 免费日韩av| 91国产精品视频在线观看| 欧美日韩中文字幕在线视频| av二区在线| 欧美激情性做爰免费视频| 538在线精品| 成人两性免费视频| 亚洲国产资源| 欧美婷婷六月丁香综合色| segui88久久综合| 91干在线观看| 欧美aaaaaa午夜精品| 视频二区在线播放| 精品免费日韩av| 日韩精品久久| 久久伊人一区二区| 久久亚洲国产| 亚洲 欧美 日韩 国产综合 在线 | 国产91精品在线观看| 污污网址在线观看| 污片在线观看一区二区| 福利影院在线看| 亚洲精品免费网站| 亚洲人成网站色在线观看| 国产在线精品二区| 91久久偷偷做嫩草影院电| 亚洲最大免费| 欧美一区二区三区日韩视频| 欧美久久久网站| 日韩伦理一区二区三区av在线| 国产精品国产自产拍在线| 成人三级高清视频在线看| av一区二区在线看| 亚洲人一二三区| 香蕉久久一区| 亚洲国产综合自拍| 色先锋aa成人| 日韩av三区| 天美星空大象mv在线观看视频| 亚洲成人av片在线观看| 国产日韩欧美高清免费| a天堂在线资源| 成人国产一区二区| 一本大道av一区二区在线播放| 国产韩日精品| 欧美中文字幕在线观看视频| 亚洲免费小视频| 成人免费看视频| 中文av在线全新| 日本亚洲欧洲精品| 亚洲国产欧美在线成人app | 日本精品一区二区三区高清 | 视频一区二区在线播放| 久久99国产精品| 日韩欧美三级在线| 92精品国产成人观看免费| 麻豆mv在线看| 四虎影院一区二区三区| 亚洲精品中文字幕女同| 国产日韩欧美一区二区三区乱码| 麻豆视频久久| 久久久久久久久久久免费视频| 国产精品 欧美在线| 亚洲精品菠萝久久久久久久| 亚洲激情专区| 亚洲欧美电影| 蜜桃传媒在线| 日韩一区不卡| 亚洲高清久久网| 亚洲精品国产无天堂网2021| 欧美日本三区| 国产精伦一区二区三区| 亚洲黄色小视频在线观看| 国产无套精品一区二区| 亚洲女人天堂av| 欧美日韩一区二区在线观看| 欧洲精品一区二区三区久久| 欧美多人爱爱视频网站| 一本大道久久a久久综合| 99精品国产一区二区三区不卡| 91精品天堂福利在线观看| 中文另类视频| 手机在线免费看av| 在线看中文字幕| 国产xxxxx视频| 国产精品av免费| 久久精品午夜一区二区福利| 精品国产一区二区三区四区四| 国产高清免费在线播放| 手机看片福利盒子久久| 3d动漫一区二区三区| 久久中文字幕在线| 国产一区二区免费| 91精品国产日韩91久久久久久| 成人午夜免费视频| 国产毛片精品国产一区二区三区| 一区二区三区四区五区在线 | 国产亚洲福利社区一区| 麻豆精品久久久| 另类综合日韩欧美亚洲| 欧美三级第一页| 欧美午夜精品| 亚洲免费大片| 午夜在线视频一区二区区别| 日韩久久午夜影院| 91嫩草在线播放| 精品国产免费久久| 久久久999| 成人av观看| 91亚洲精品国产| 久久综合久久八八| 欧美国产激情二区三区| 6080成人| 黄色一级片视频| 91在线网站视频| 欧美三级电影网| 国产又黄又大久久| 91亚洲无吗| 日本天堂影院在线视频| 亚洲一区电影777| 欧美日韩久久精品| aaa在线免费观看| 神马欧美一区二区| 一色桃子一区二区| 18成人在线观看| 99综合视频| 国产成人精品123区免费视频| 亚洲老女人av| 97av影视网在线观看| 亚洲第一福利在线观看| 久久蜜桃一区二区| 国产精品久久久久久| 91福利区在线观看| 色片在线免费观看| 国产日本一区二区三区| 中文字幕成人在线| 精品福利樱桃av导航| 日韩成人精品在线观看| 日韩中文一区二区| 日本v片在线免费观看| 中文字幕免费在线不卡| 欧美激情综合色综合啪啪五月| 午夜精品福利久久久| 国产裸体歌舞团一区二区| 九色精品国产蝌蚪| 在线观看的黄色| 精品国产一区二区三区四区阿崩|
  • <i id="3jx6a"><s id="3jx6a"><table id="3jx6a"></table></s></i>