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

Java 程序員的 Linux 性能調優寶典:三大經典場景深度剖析

系統 Linux 開發
本文針對應用延遲、系統卡頓、偶發頻繁卡頓三種常見的系統故障給出通用普適的排查思路。

本文整理了Linux系統性能問題排查的通用方法論和實踐,將針對以下三個經典場景展開探討:

  • I/O性能瓶頸
  • CPU飆升
  • 偶發CPU飆升

同時考慮到筆者文章的受眾面大部分都是Java開發人員,所以復現問題故障的例子也都采用Java進行編碼部署復現,對應的示例也都會在案例排查的最后展開說明。

一、應用程序延遲升高

第一個案例是用戶反饋系統延遲升高,網卡打開緩慢。從開發者的角度一定要明白,所有表現為卡頓、延遲的原因很大概率是系統資源吃緊,只有在資源分配不足的情況下,才會導致程序運行阻塞,無法及時處理用戶的請求。

關于服務器的閾值指標,按照業界通用的經驗,對應CPU和內存的負載要求的合理上限為:

  • CPU使用率控制在75%左右
  • 內存使用率控制在80%以內
  • 虛擬內存盡可能保持在0%
  • 負載不超過CPU核心數的75%

筆者一般會先通過top查看操作系統的CPU利用率,這里筆者因為是個人服務器原因則采用更強大、更直觀的htop查看個人服務器的資源使用情況,對應的安裝指令如下:

sudo apt update
sudo apt install htop

而本次htop輸出的指標如下:

  • 服務器為6核,對應的CPU使用率分別是3.9、0、0、2.7、0.7、1.4,按照業界的通用標準,當前服務器各核心CPU使用率較低,但需結合系統負載綜合判斷
  • Mem代表了內存使用率,內存一般情況下是用于存儲程序代碼和數據,分為物理內存和虛擬內存,物理內存顯示內存接近8G僅用了1G不到,使用率不到80%,說明資源冗余
  • Swp顯示交換空間即虛擬內存的使用情況,可以看到也僅僅用了32M,并沒有大量的內存數據被置換到交換空間,結合第2點來看,內存資源充足
  • Tasks顯示進程數和線程數一共有35個進程,這35個進程對應100個線程處理,Kthr顯示指標為0說明有0個內核線程,而Running為1說明有一個用戶進程在運行
  • 而系統平均負載近1分鐘為4.96,按照業界標準CPU核心數*0.75作為系統負載的運算閾值,如果超過這個值則說明系統處于高負載狀態,很明顯我們的6核服務器系統負載偏高了

綜合來看,服務器系統負載偏高但各CPU核心使用率較低,結合內存使用情況,問題可能出現在I/O資源等待上,此時我們就要從I/O資源角度進一步排查問題:

我們從I/O資源排查入手,通過vmstat 1執行每秒一次的監控指標輸出,以筆者的服務器為例,可以看到如下幾個指標:

  • r:按照文檔解釋為The number of runnable processes (running or waiting for run time)即正在運行或等待運行的進程數,如果大于CPU核心數則說明CPU處于過載狀態,而當前服務器這個值為0,說明隊列處理狀態良好
  • b::按照文檔解釋為The number of processes blocked waiting for I/O to complete即等待I/O完成的進程數,從參數b可以看出有大量進程等待I/O,說明當前服務器存在I/O瓶頸。
  • swpd:the amount of swap memory used即交換空間也就是虛擬內存的使用,而當前服務器已被使用30468說明存在緩存置換,由此參數結合buff(緩存中尚未寫入磁盤的內容)和cache(從磁盤加載出來的緩存數據)來看,當前內存資源持續升高,存在讀寫虛擬內存的情況,存在I/O性能瓶頸。
  • 從bo來看有大量任務進行每秒寫塊
  • 針對CPU一個板塊輸出的us(用戶代碼執行時間)、sy(內核執行時間)、id(空閑時間)、wa(等待I/O的時間),其中wa即等待I/O的時間持續處于一個高數值的狀態,更進一步明確CPU在空轉,等待I/O完成,而I/O資源處于吃緊的狀態

考慮為I/O資源瓶頸,我們優先從網絡I/O角度排查問題,這里筆者采用nload進行網絡資源診斷,如果沒有下載的可以自行通過yum或者apt的方式自行下載,這里筆者也貼出ubuntu服務器的下載指令:

# ubuntu下載安裝nload
sudo apt install nload -y

鍵入nload實時輸出網絡帶寬的使用情況,可以看到:

  • 輸入流量(incoming)即下載流量,當前網速基本控制在1KB,僅在最大網速的20%左右,一般認為只有當前網速無限接近于最大網速才可認為帶寬使用率接近飽和
  • 輸出流量(outgoing)即上傳流量,同理當前也僅僅使用8%,也未達到飽和的閾值

所以I/O資源吃緊的問題原因并非網絡I/O,我們需要進一步從服務器磁盤I/O角度進一步排查:

所以從這些指標來看,存在大量的線程在等待I/O資源的分配而進入阻塞,所以筆者基于iostat -x 1使每一秒都輸出更詳細的信息,可以看到sdd盤對應的磁盤忙碌百分比util基本跑滿100%,已基本接近飽和,此時基本是確認有大量線程在進行I/O讀寫任務了,且查看I/O讀寫指標:

  • 每秒讀寫的吞吐量w/s為175
  • 每秒寫入wkB/s的172704KB
  • SSD盤util即I/O資源利用率為100%,已經遠超業界閾值60%,說明存在I/O性能瓶頸,需要補充說明的是當CPU100%時進程調度會因為操作系統優先級設置的原因并不會導致進程阻塞,但是I/O設備則不同,它不能區分優先級進行I/O中斷響應,所以這個數值高的情況下就會使得大量I/O請求阻塞
  • 寫請求的平均等待時間w_await為5151ms

換算下來172704KB/175每秒寫入的速率為987KB每秒,由此可確定因為磁盤性能讀寫性能瓶頸導致大量I/O讀寫任務阻塞,進而導致服務器卡頓,用戶體驗差:

所以,對于系統延遲嚴重的情況,整體排查思路為:

  • 通過top指令查看CPU使用率,若正常進入步驟2
  • 基于vmstat查看內存使用率和I/O資源情況
  • 基于nload查看網絡I/O使用情況
  • 基于iostat查看網絡I/O和磁盤I/O情況最終確認問題

本例子的最后筆者也給出本次故障問題的示例代碼:

/**
     * 啟動磁盤I/O操作以模擬高I/O負載
     * 通過創建多個I/O任務線程來模擬高磁盤I/O負載
     */
    private static void startDiskIOOperations() {
        log.info("開始高I/O磁盤操作...");
        log.info("在另一個終端中運行 'iostat -x 1' 來監控磁盤利用率。");

        // 創建固定線程數的線程池
        executor = Executors.newFixedThreadPool(NUM_THREADS);

        // 提交多個任務以連續寫入磁盤
        for (int i = 0; i < NUM_THREADS; i++) {
            executor.submit(new IOTask(i));
        }

        log.info("磁盤I/O操作已啟動,使用 {} 個線程", NUM_THREADS);
    }


/**
     * 執行連續寫入操作以模擬高I/O的任務
     * 該類負責執行磁盤I/O操作,通過不斷寫入和清空文件來模擬高I/O負載
     */
    static class IOTask implements Runnable {
        private final int taskId;

        public IOTask(int taskId) {
            this.taskId = taskId;
        }

        @Override
        public void run() {
            // 每個線程寫入自己的臨時文件
            String filename = "/tmp/disk_io_test_" + taskId + ".tmp";

            try (FileOutputStream fos = new FileOutputStream(filename)) {
                log.info("線程-{} 正在寫入 {}", taskId, filename);

                // 連續將數據寫入文件并在每次寫入后清空文件
                while (!Thread.currentThread().isInterrupted()) {
                    performDiskIOOperation(fos, taskId);
                    ThreadUtil.sleep(500);
                }
            } catch (IOException e) {
                log.error("線程-{} 發生錯誤: {}", taskId, e.getMessage());
            }
        }
    }

二、系統操作卡頓

第二個例子也同樣是用戶反饋系統操作卡頓感嚴重,整體點擊響應非常慢,我們還是考慮資源吃緊,優先使用top指令查看資源使用情況,從top指令來看:

  • 輸出us查看各個核心的CPU使用率跑滿
  • 系統平均負載基本超過70%(6*0.7)已經超過4.2

這就是經典的計算密集型任務跑滿所有線程的經典例子:

一般針對CPU跑滿的問題,筆者一般會通過mpstat -P ALL 1查看CPU時間片是否分配均衡,是否出現偏斜導致CPU過熱的情況,例如所有運算任務都往一個CPU核心上跑,經過筆者每秒1次的輸出持續觀察來看,整體資源吃緊,但并沒有出現資源分配偏斜的情況,同時內存資源使用率也不高,也沒有大量的iowait等待:

結合第一步top指令定位到的進程是Java進程,筆者索性通過Arthas直接定位故障代碼,首先通過thread鎖定問題線程,可以看到pool-前綴的線程基本都是跑滿單個CPU,所以我們就可以通過thread id查看線程的棧幀:

最終鎖定到了這段代碼段,即一個密集的循環運算的線程:

圖片

對應的筆者也貼出故障代碼段示例,來總結一下系統使用卡頓的排查思路:

  • 基本top查看用戶態和內核態CPU使用率
  • 用戶態使用率偏高,通過mpstat查看CPU使用是否偏斜,是否保證CPU親和力
  • 如果CPU使用沒有出現偏斜,則直接通過問題定位到Java進程,結合Arthas快速定位問題線程進行診斷
/**
     * 模擬CPU使用率過高的情況
     * 通過創建多個CPU密集型任務線程來模擬高CPU使用率
     */
    public static void startHighCPUUsage() {
        log.info("開始模擬高CPU使用率...");

        // 創建CPU密集型任務的線程池
        ExecutorService cpuExecutor = Executors.newFixedThreadPool(NUM_THREADS);

        // 提交多個CPU密集型任務
        for (int i = 0; i < NUM_THREADS; i++) {
            cpuExecutor.submit(new CPUIntensiveTask(i));
        }

        log.info("高CPU使用率模擬已啟動,使用 {} 個線程", NUM_THREADS);
    }
 /**
     * CPU密集型任務,用于模擬高CPU使用率
     * 該類通過執行復雜的數學計算來占用CPU資源,從而模擬高CPU使用率場景
     */
    static class CPUIntensiveTask implements Runnable {
        private final int taskId;

        public CPUIntensiveTask(int taskId) {
            this.taskId = taskId;
        }

        @Override
        public void run() {
            log.info("CPU密集型任務-{} 已啟動", taskId);

            // 執行CPU密集型計算以提高CPU使用率
            while (!Thread.currentThread().isInterrupted()) {
                // 執行一些復雜的數學計算
                double result = 0;
                for (int i = 0; i < 1000000; i++) {
                    result += Math.sqrt(Math.log(i + 1) * Math.cos(i) * Math.sin(i));
                }
                log.debug("CPU任務-{} 完成一輪計算,結果: {}", taskId, result);
            }

            log.info("CPU密集型任務-{} 已結束", taskId);
        }
    }

三、持續的偶發性系統卡頓問題排查

此類問題比較棘手,系統偶發卡頓意味著是瞬時、頻繁的資源吃緊,我們還是直接使用top指令無法明確立刻捕捉到進程,可能剛剛一看到飆升的進程就消失了。

同理使用mpstat、vmstat指令無法準確定位到超短期飆升問題的進程,而基于iostat也沒有看到明顯的I/O資源吃緊,所以我們可以采用perf指令解決問題,以筆者的Ubuntu服務器為例,對應的安裝步驟:

# 安裝perf工具
sudo apt install linux-tools-generic
sudo apt install linux-tools-common

在筆者完成安裝并啟動之后,系統拋出WARNING: perf not found for kernel xxxx的異常,對應的解決方案是要主動安裝linux-tools-generic并定位到linux-tools目錄下找到自己的generic版本完成符號鏈接,以筆者本次安裝為例就是6.8.0-79:

sudo ln -s /usr/lib/linux-tools/6.8.0-79-generic/perf /usr/bin/perf

完成上述安裝之后,我們就可以通過將頻率降低設置為99并將監控結果導出到tmp目錄下的perf.data中:

sudo perf record -F 99 -a -g -o /tmp/perf.data sleep 10

可能很多讀者好奇為什么需要將頻率設置為99Hz,這樣做的目的是為了避免與系統定時器中斷頻率(通常為100Hz)同步,從而避免鎖步采樣導致的偏差。

鎖步采樣是指采樣頻率與系統定時器中斷頻率相同或成倍數關系時,采樣點會固定在相同的時間位置上,導致采樣結果不能準確反映系統整體的性能狀況。

使用99Hz這樣的素數頻率可以減少與系統周期性活動同步的概率,從而獲得更全面、更準確的性能數據。

舉個簡單的例子,若我們試圖確定道路是否出現擁堵,且通過24h一次的抽檢查,那么當前樣本就可能與交通保持一個平行的同步狀態,例如:

  • 交通車流情況在每天8點-12點擁堵,而我們的程序也是恰好在每天9點采集,那么它就會認為交通情況異常擁堵
  • 若每天14點進行一次采集那么就避開了交通阻塞的高峰期則會得到一個相反的、也是不正確的結論

為了規避相同周期頻率導致的lockstep即鎖同步采樣,我們可以適當降低頻率避免與交通周期時間同步,保證一天的數據能夠在一個周期內被完整地采集到,而本例最好的做法就是將定時間隔改為23h,這樣一來每個23天的樣本周期就會得到一天中所有時間的數據就能做到全面地了解到交通情況:

等待片刻后perf指令就會將結果輸出到perf.data目錄下:

[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.701 MB /tmp/perf.data (586 samples) ]

此時,通過sudo perf report查看報告,可以看到一個pid為1115751的Java進程對應線程CPU使用率飆升到86,此時我們就可以基于這條信息到指定的進程上查看該線程是否存在密集的運算:

最后我們也給出本示例的問題代碼:

/**
     * 模擬CPU瞬間飆高然后降低的情況
     * 實現每10秒一次的CPU使用率飆高和降低循環(僅使用單核)
     */
    public static void startCPUSpikeAndDrop() {
        log.info("開始模擬CPU瞬間飆高然后降低...");

        // 創建用于CPU飆高的線程池(僅使用單核)
        ExecutorService spikeExecutor = Executors.newFixedThreadPool(1);

        // 提交單個CPU密集型任務來制造飆高
        spikeExecutor.submit(new CPUSpikeTask(0));

        log.info("CPU瞬間飆高已啟動,使用 {} 個線程", 1);

        // 每隔10秒切換CPU飆高狀態,實現周期性飆高和降低
        Thread spikeController = new Thread(() -> {
            boolean isSpiking = true;
            ExecutorService currentExecutor = spikeExecutor;

            while (!Thread.currentThread().isInterrupted()) {
                try {
                    // 等待10秒
                    Thread.sleep(10000);

                    if (isSpiking) {
                        // 停止當前的CPU飆高任務
                        currentExecutor.shutdownNow();
                        log.info("CPU使用率已降低");
                    } else {
                        // 啟動新的CPU飆高任務
                        currentExecutor = Executors.newFixedThreadPool(1);
                        currentExecutor.submit(new CPUSpikeTask(0));
                        log.info("CPU使用率已飆高");
                    }

                    // 切換狀態
                    isSpiking = !isSpiking;
                } catch (InterruptedException e) {
                    log.error("CPU飆高控制線程被中斷", e);
                    break;
                }
            }
        });

        spikeController.setDaemon(true);
        spikeController.start();
    }
 /**
     * CPU瞬間飆高任務,用于模擬CPU瞬間飆高然后降低的情況
     * 該類通過執行密集的數學計算來模擬CPU使用率的瞬時飆高,并在指定時間后自動停止
     */
    static class CPUSpikeTask implements Runnable {
        private final int taskId;

        public CPUSpikeTask(int taskId) {
            this.taskId = taskId;
        }

        @Override
        public void run() {
            log.info("CPU瞬間飆高任務-{} 已啟動", taskId);

            // 執行空循環以提高CPU使用率
            while (!Thread.currentThread().isInterrupted()) {
                // 空循環消耗CPU
            }

            log.info("CPU瞬間飆高任務-{} 已結束", taskId);
        }
    }

四、小結

本文針對應用延遲、系統卡頓、偶發頻繁卡頓三種常見的系統故障給出通用普適的排查思路,整體來說此類問題歸根結底都是系統資源吃緊,需要找到飽和的資源結合代碼推測根源并制定修復策略,以本文為例,通用的排查思路都為:

  • 基于top查看CPU、內存、負載
  • 若CPU未飽和則通過vmstat查看I/O資源使用情況
  • 明確I/O瓶頸通過nload和iostat查詢是網絡I/O還是磁盤I/O
  • 若上述排查都無果,且CPU負載偶發飆高,可通過perf并調整頻率監控系統定位系統中異常運行的資源
  • 結合上述推斷結果查看是否是異常消耗,如果是則優化代碼,反之結合情況增加硬件資源
責任編輯:趙寧寧 來源: 寫代碼的SharkChili
相關推薦

2020-08-03 07:00:00

Snowflake數據庫性能調優

2010-08-31 14:01:48

CSS

2015-08-05 15:42:10

程序員面試問題

2013-03-18 15:07:10

Linux系統性能調優

2015-06-02 09:17:10

程序員學習經驗

2017-11-23 10:38:01

2019-08-29 15:32:03

Zookeeper場景ZAB

2019-05-20 15:28:27

流量 NginxLinux

2011-03-10 14:40:54

LAMPMysql

2020-06-19 07:00:00

LinuxPython IDE

2022-10-28 10:23:27

Java多線程底層

2017-07-21 08:55:13

TomcatJVM容器

2013-03-20 17:18:07

Linux系統性能調優

2022-09-29 09:35:56

線程池

2023-08-16 11:39:19

高并發調優

2012-06-20 11:05:47

性能調優攻略

2009-02-23 20:45:54

程序員基本素質

2021-03-04 08:39:21

SparkRDD調優

2023-07-17 13:21:30

程序員模型

2011-09-09 15:49:19

AIX操作系統JAVA
點贊
收藏

51CTO技術棧公眾號

精品国产一区二区国模嫣然| 久久人人超碰精品| 久精品免费视频| av2014天堂网| 国产a亚洲精品| 亚洲精品一二三区| 精品一区二区不卡| 中文字幕乱码人妻二区三区| 欧美日韩国内| 亚洲午夜国产成人av电影男同| 日本激情视频在线播放| 三级网站视频在在线播放| 97精品国产97久久久久久久久久久久| 国产精品久久久久久久久久 | 在线视频你懂得| 午夜亚洲福利| 亚洲桃花岛网站| 国产精久久久久| 婷婷精品久久久久久久久久不卡| 亚洲国产精品久久人人爱| 亚洲一二区在线| 亚州av在线播放| 国产精品小仙女| 国产精品久久久久999| 欧美精品一区二区蜜桃| 欧美色女视频| 亚洲精品福利在线| 热久久久久久久久| 成人爽a毛片免费啪啪| 亚洲已满18点击进入久久| 日韩欧美视频一区二区三区四区| 天天操天天插天天射| 国产在线看一区| 国产精品第2页| 亚洲欧美偷拍视频| 国产欧美丝祙| 久久久久久久久爱| 欧美日韩一级大片| 婷婷丁香综合| 俺去了亚洲欧美日韩| 人人人妻人人澡人人爽欧美一区| 国产精品xxxav免费视频| 欧美一区二区三区播放老司机| 天天干天天草天天| 国精产品一区一区三区四川| 色综合咪咪久久| 男女高潮又爽又黄又无遮挡| 国产传媒在线观看| 亚洲成人777| av女优在线播放| 免费看电影在线| 一区二区三区不卡视频在线观看| 午夜在线视频免费观看| 麻豆视频在线播放| 中文字幕中文字幕中文字幕亚洲无线 | 久久精品国产精品| 国产精品1区2区3区4区| 成人精品中文字幕| 中文综合在线观看| 一级片一级片一级片| 久久久久国产精品| 欧美猛交免费看| 青青青在线视频| 狠狠久久婷婷| 性欧美xxxx视频在线观看| 精品少妇一二三区| 在线精品一区| 欧美在线国产精品| 日韩电影在线观看一区二区| 日本午夜精品视频在线观看| 国产日韩精品一区二区| 国产毛片毛片毛片毛片毛片| 国产成人精品影视| 国产精品一区二区三区不卡| 亚洲色图21p| 欧美激情中文字幕一区二区| 中文字幕制服丝袜在线| 在线视频中文字幕第一页| 亚洲一区在线视频| 日韩中文字幕在线视频观看| 欧美aaa大片视频一二区| 欧美日韩精品一二三区| 免费看的av网站| 国产精品一区二区中文字幕| 亚洲九九九在线观看| 婷婷国产成人精品视频| 黄色在线一区| 国产精品久久激情| 午夜精品久久久久久久96蜜桃| aaa欧美色吧激情视频| 日本电影一区二区三区| 老司机午夜在线视频| 亚洲国产视频在线| 国产视频在线视频| 玖玖玖视频精品| 日韩av综合网| 欧美88888| 亚洲人成久久| 国产精品欧美风情| 欧美性受xxxx狂喷水| 国产欧美精品区一区二区三区| 欧洲精品视频在线| 欧洲一区二区三区精品| 日韩视频一区二区三区在线播放| 男人天堂av电影| 欧美国产另类| 国产精品三级久久久久久电影| www日本高清| 日本一区二区三区dvd视频在线| 黄色录像特级片| 四虎成人在线| 亚洲第一网站男人都懂| 精品国产国产综合精品| 亚洲女优在线| 91视频免费在线观看| 成人欧美一区| 欧美性极品xxxx娇小| 99热这里只有精品2| 精品国产一区二区三区小蝌蚪 | 喜爱夜蒲2在线| 久久xxx视频| 精品香蕉一区二区三区| 免费网站看av| 国内精品国产三级国产a久久| 欧美三级网色| 男人av在线播放| 精品欧美一区二区三区精品久久| 中国美女黄色一级片| 蜜桃av综合| 精品国产一区二区三区麻豆免费观看完整版 | 亚洲视频免费在线| av在线无限看| 久久91精品| 97视频在线观看网址| 国产综合在线播放| 亚洲精品第1页| 毛片毛片毛片毛| 日韩大片在线播放| 国产精品扒开腿做爽爽爽男男| av女名字大全列表| 性久久久久久久久久久久| 蜜桃福利午夜精品一区| 999国产精品视频| 国产精品亚洲一区二区三区| 国产福利小视频在线观看| 欧美午夜激情小视频| avtt香蕉久久| 国产日韩专区| 欧美一级二级三级九九九| 亚洲第一av| 亚洲色图第一页| av毛片在线免费观看| 2021国产精品久久精品| 99精品视频在线看| 久久av综合| 国产精品久久久久久久久免费看| 欧美在线观看在线观看| 一本大道av伊人久久综合| 日本黄色特级片| 日韩精品一区第一页| 性高潮久久久久久久久| 亚洲欧洲二区| 久久97精品久久久久久久不卡 | gogo大胆日本视频一区| 日本xxxxxxxxxx75| 美女一区二区在线观看| 欧美亚洲成人xxx| 国产一级在线| 6080日韩午夜伦伦午夜伦| 一区二区在线观看免费视频| 丁香亚洲综合激情啪啪综合| 成人在线观看你懂的| 偷拍一区二区| 国产女人精品视频| 天天色天天射天天综合网| 亚洲韩国欧洲国产日产av| 国产www在线| 国产精品久久看| 91精品国产高清91久久久久久 | 日韩一卡二卡在线| 日韩欧美精品免费在线| av资源在线免费观看| 国产精品主播直播| 自慰无码一区二区三区| 日韩aaaa| 国产一区免费| 黑人一区二区三区| 欧美激情一级欧美精品| 久久手机免费观看| 日韩欧美在线影院| 麻豆成人免费视频| 亚洲美女视频在线观看| 亚洲专区区免费| 国精品**一区二区三区在线蜜桃| 成人在线观看你懂的| 日韩欧美在线中字| 精品国产中文字幕| 欧洲美女精品免费观看视频| 久久免费福利视频| 亚洲免费视频一区二区三区| 亚洲国产欧美久久| 国产精品久久久久久无人区| 精品毛片三在线观看| 暗呦丨小u女国产精品| www国产精品av| 日本女人性视频| 日本免费新一区视频| 日韩中字在线观看| 亚洲成av人片乱码色午夜| 明星裸体视频一区二区| 日韩一区二区三区精品| 国产精品久久久久久久久免费 | 国产精品视频入口| 亚洲综合资源| 国产精国产精品| 麻豆国产在线| 久久99国产综合精品女同| 北岛玲一区二区三区| 日韩电影中文字幕一区| 国产人妖一区二区| 欧美日韩激情一区二区三区| 四虎成人永久免费视频| 亚洲成人精品一区| 国产一级二级三级视频| 国产精品高潮久久久久无| 18禁裸乳无遮挡啪啪无码免费| 成人中文字幕在线| 污视频在线观看免费网站| 久久99久久99| www.久久久精品| 三级精品在线观看| 国产欧美高清在线| 免费看的黄色欧美网站| 黄网站欧美内射| 亚洲天堂男人| 日本人妻伦在线中文字幕| 国产精品毛片久久| 一区二区在线不卡| 999精品视频| 中文字幕日韩精品久久| 99精品综合| 宅男一区二区三区| 999成人网| 一级黄色片播放| 自拍日韩欧美| 成年人视频大全| 国内精品福利| 少妇高潮毛片色欲ava片| 在线免费高清一区二区三区| 亚洲精品久久久久久久蜜桃臀| 国产精品www.| av之家在线观看| 性欧美xxxx大乳国产app| 国产午夜伦鲁鲁| 三级在线观看一区二区| 一区二区三区视频在线观看免费| 青青国产91久久久久久| 在线观看免费的av| 国产裸体歌舞团一区二区| 少妇高潮一69aⅹ| 成人的网站免费观看| 成年人的黄色片| 久久精品亚洲国产奇米99| 懂色av粉嫩av浪潮av| 专区另类欧美日韩| 久草免费在线观看视频| 婷婷夜色潮精品综合在线| 日韩视频在线观看一区| 在线观看国产日韩| 国产尤物在线观看| 精品久久久久久久久久久久包黑料| 女人18毛片一区二区三区| 亚洲精品网站在线播放gif| 国产黄色免费在线观看| 久久亚洲精品毛片| 国产91足控脚交在线观看| 国产mv久久久| 一区在线不卡| 国产三级精品在线不卡| 欧美精品尤物在线观看| 日韩第一页在线观看| 亚洲黄色高清| 牛夜精品久久久久久久| 国产一区二区女| 中国黄色a级片| 综合中文字幕亚洲| 中文在线第一页| 欧美一区二区视频在线观看| 欧美成熟毛茸茸| 久久综合五月天| 免费亚洲电影| 999国产在线| 欧洲grand老妇人| 大陆av在线播放| 另类专区欧美蜜桃臀第一页| 亚洲视频 中文字幕| 日本一区二区三区久久久久久久久不 | 免费成人深夜夜行p站| 国产精品久久看| 国产情侣自拍av| 91精品国产日韩91久久久久久| 欧美一区二区视频| 久久91精品国产91久久久| 香蕉成人影院| 精品欧美国产一区二区三区不卡| 欧美丰满老妇| 国内外成人激情视频| 国产精品乡下勾搭老头1| 日本精品久久久久中文| 无吗不卡中文字幕| 国内老熟妇对白hdxxxx| 一本色道久久综合狠狠躁篇的优点 | 亚洲狼人国产精品| 姑娘第5集在线观看免费好剧| 亚洲国产日韩欧美综合久久| 国产视频在线播放| 国产精品爱久久久久久久| 日韩电影不卡一区| 免费日韩在线观看| 久久av资源网| 国产亚洲精品熟女国产成人| 欧美日韩色婷婷| 全部免费毛片在线播放一个| 欧美伦理91i| 国产麻豆一区二区三区| 亚洲一区二区三区四区中文| 久久高清国产| 中文精品在线观看| 精品免费在线观看| 蜜臀av午夜精品| 欧美极度另类性三渗透| 日韩在线网址| 超碰97在线看| 国产一区在线观看视频| 成年人网站在线观看视频| 在线观看亚洲精品视频| 国产福利在线视频| 国产精品普通话| 精品免费一区二区| 东京热加勒比无码少妇| 91在线一区二区三区| 日韩av片在线播放| 欧美成人一级视频| 黄页网站在线| 国产精品免费观看高清| 激情婷婷欧美| 国产麻豆xxxvideo实拍| 午夜久久久影院| 香蕉av一区二区三区| 1769国内精品视频在线播放| 另类ts人妖一区二区三区| 国产精品333| 久久色.com| 亚洲天堂狠狠干| 久久精品色欧美aⅴ一区二区| 国产视频一区二区在线播放| 糖心vlog在线免费观看| 国产成人精品免费一区二区| 伊人365影院| 亚洲欧美成人精品| 成人高清一区| 中国女人做爰视频| 波多野结衣中文字幕一区二区三区| 亚洲男人第一av| 亚洲欧洲第一视频| 国产成人精品一区二区三区视频 | 亚洲国产精品第一区二区| 水蜜桃av无码| 91官网在线免费观看| 三区四区在线视频| www.成人三级视频| 一区二区激情| 婷婷丁香综合网| 911精品国产一区二区在线| 欧美高清另类hdvideosexjaⅴ| 精品日韩美女| 免费的成人av| 国产在线视频99| 国产一区二区三区毛片| 亚洲高清999| 亚洲中文字幕无码不卡电影| 国产精品系列在线| 亚洲精品中文字幕成人片| 欧美中在线观看| 1024精品久久久久久久久| 插我舔内射18免费视频| 欧美系列在线观看| 色呦呦在线视频| 日韩免费毛片| 成人免费视频一区二区| 日本精品入口免费视频| 欧美成年人视频网站| 怕怕欧美视频免费大全| 伊人精品视频在线观看| 日本电影亚洲天堂一区| 青草在线视频| 自拍偷拍99| 久久久久久亚洲综合影院红桃| 精品久久久久久亚洲综合网站 | 亚洲国产经典视频|