精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

日本成人黄色免费看| 欧美夫妻性生活xx| 激情视频免费网站| 黄色在线论坛| 不卡视频在线看| 国产91九色视频| www欧美com| 亚洲欧洲av| 7777精品久久久大香线蕉| 成人短视频在线看| 手机看片1024日韩| 久久精品国产一区二区三| 久久久人成影片一区二区三区观看 | 国产精品免费在线播放| 奴色虐av一区二区三区| 欧美精品一卡| 中文字幕日韩综合av| 一级全黄裸体片| 国产精品诱惑| 精品美女永久免费视频| 在线播放 亚洲| 巨骚激情综合| www.99精品| 91亚洲永久免费精品| 岛国av中文字幕| 亚洲承认在线| 美日韩在线视频| 少妇一级黄色片| 网红女主播少妇精品视频| 欧美一区日韩一区| 簧片在线免费看| 午夜久久中文| 午夜精品久久久久久久99水蜜桃 | 在线小视频你懂的| 久久97精品| 精品91自产拍在线观看一区| 亚洲一二三av| 成人av集中营| 欧美在线高清视频| 欧美精品成人网| 亚洲深夜视频| 精品成人av一区| 国产一级爱c视频| 激情网站在线| 亚洲一区欧美一区| 国产激情片在线观看| 男人的天堂在线视频免费观看 | 国产精品无码在线播放| 蜜桃av噜噜一区| 国产精品色悠悠| 中文字幕一区二区三区波野结| 羞羞视频在线观看欧美| 18久久久久久| 伊人中文字幕在线观看| 丝袜亚洲另类欧美| 国产精品aaa| 国产精品传媒在线观看| 免费观看在线综合色| 国产精品久久久久久久久免费| 国产免费www| 蜜桃视频在线一区| 国产日韩欧美在线播放| 一本到在线视频| 国产在线精品一区二区三区不卡| 91精品视频在线| 精品人妻久久久久一区二区三区 | 国产麻豆天美果冻无码视频| 欧美激情99| 亚洲免费视频网站| 久久久久久国产免费a片| 日韩精品欧美| 欧美成人第一页| 国产一级中文字幕| 免费在线日韩av| 国产精自产拍久久久久久蜜| 国产精品视频一区二区三区,| 国产成人午夜99999| 精品国产乱码久久久久久蜜柚| 你懂的视频在线观看| 中文字幕不卡的av| 国产91porn| 成av人片在线观看www| 日本精品一区二区三区高清 | 久久天天躁夜夜躁狠狠躁2022| 欧美日韩在线观看成人| 国产精品久久777777毛茸茸| 国产精品入口夜色视频大尺度| www.黄色国产| 久久久久久日产精品| 一区精品在线| 97在线超碰| 欧美日免费三级在线| 麻豆av免费看| av影片在线一区| 久久精品视频在线| 日本一级片免费看| 黄一区二区三区| 久久国产精品 国产精品| 午夜在线播放| 日韩欧美国产黄色| 亚洲丝袜在线观看| 宅男在线一区| 久久久亚洲福利精品午夜| 中文字幕av第一页| 成人一区二区在线观看| 视频一区亚洲| 国产不卡人人| 欧美一区二区私人影院日本| www.av欧美| 欧美黄免费看| 亚洲精品一区二区三区在线播放| 伊人久久视频| 欧美一区二区三区免费视频 | 欧美成人午夜剧场免费观看| 中文字幕激情小说| 国产99一区视频免费| 亚洲高清精品中出| 亚洲欧美韩国| 精品免费99久久| 在线日韩国产网站| 天堂午夜影视日韩欧美一区二区| 高清av免费一区中文字幕| 91精品国产综合久久久久久豆腐| 高潮白浆女日韩av免费看| 国产黑丝在线视频| 天天做天天爱天天综合网2021| 国产99视频在线观看| 少妇一区二区三区四区| 亚洲美女精品一区| 亚洲欧美手机在线| 色爱综合网欧美| 国产成人精品电影| 午夜性色福利影院| 午夜精品久久久久久久99樱桃 | 久久99精品久久久久久欧洲站| 久久久精品视频在线观看| 在线黄色av网站| 国产日韩精品一区二区三区在线| 欧美 国产 日本| 久久动漫网址| 97久久国产精品| 人妻无码中文字幕免费视频蜜桃| 有坂深雪av一区二区精品| 亚洲精品无码久久久久久久| 91精品国产成人观看| 国产日韩欧美视频| 黄色网在线免费看| 欧美精品777| 色偷偷www8888| 国产一区二区网址| 波多野结衣 作品| 91麻豆精品国产91久久久久推荐资源| 欧美日产国产成人免费图片| 亚洲av无码片一区二区三区| 亚洲综合色视频| 无码国产精品一区二区免费式直播 | 99国产精品国产精品毛片| 国产精彩视频一区二区| 国产日韩三级| 97精品视频在线观看| 日本国产在线| 在线观看日韩高清av| 免费看91的网站| 久久av中文字幕片| 欧美一级特黄aaaaaa在线看片| 欧美日本三级| 992tv成人免费影院| 欧美日本韩国一区二区| 欧美少妇xxx| 日韩成人短视频| 粉嫩嫩av羞羞动漫久久久| 波多野结衣乳巨码无在线| 欧美人与牛zoz0性行为| 国产精品综合网站| 国内高清免费在线视频| 亚洲美女av网站| 亚洲天堂网视频| 亚洲一区国产视频| 插吧插吧综合网| 麻豆精品一二三| 日本一本中文字幕| 精品99久久| 亚洲在线免费视频| 蜜桃麻豆影像在线观看| 中文字幕欧美日韩精品| 亚洲黄色在线观看视频| 色美美综合视频| 日韩欧美综合视频| 91丨porny丨国产| 99re精彩视频| aⅴ色国产欧美| 午夜精品一区二区三区四区| www.豆豆成人网.com| 国产福利精品视频| 青春草在线免费视频| 伊人亚洲福利一区二区三区| av免费在线观看不卡| 色婷婷国产精品久久包臀| 99久久精品久久亚洲精品| av一本久道久久综合久久鬼色| 伊人网在线综合| 久久久久久穴| 日本wwwcom| 91麻豆精品国产91久久久平台| 国内视频一区二区| 一区在线不卡| 国产精品成人一区二区| free性欧美| 久热在线中文字幕色999舞| 欧美3p视频在线观看| 日韩欧美你懂的| 91tv国产成人福利| 色综合久久久久综合99| 日韩va亚洲va欧洲va国产| 九九热最新地址| 国产色91在线| 精品一区二区视频在线观看| 激情欧美一区二区三区在线观看| 久久国产色av免费观看| 欧美网站在线| 亚洲免费视频播放| 日韩av在线播放网址| 麻豆精品传媒视频| 高清欧美性猛交xxxx黑人猛| 国产日韩专区在线| 日本国产欧美| 日本精品久久久久影院| 2021中文字幕在线| 欧美乱人伦中文字幕在线| 午夜在线观看视频| 中文字幕亚洲天堂| 国产福利在线观看| 亚洲欧美国产日韩中文字幕| 性感美女福利视频| 亚洲精品一区二区三区蜜桃下载| 91在线视频国产| 欧美日韩国产高清一区二区三区| 伊人久久中文字幕| 色婷婷综合久色| 中文字幕av影院| 色中色一区二区| 国产成人综合欧美精品久久| 婷婷综合五月天| 国产在线观看免费视频今夜| 亚洲一区二区视频| 午夜偷拍福利视频| 亚洲第一主播视频| 日韩精品在线不卡| 午夜精品久久久久久不卡8050| 日本系列第一页| 欧美日韩中文在线观看| a v视频在线观看| 色国产综合视频| 亚洲第一区av| 欧美日韩国产色站一区二区三区| 黄色污污视频软件| 欧美美女一区二区在线观看| 国产喷水福利在线视频| 日韩小视频在线观看专区| av中文字幕在线免费观看| 日韩精品中文字幕在线不卡尤物| 免费a级片在线观看| 亚洲第一视频网站| 日韩一二三四| 在线亚洲午夜片av大片| 日本不卡不卡| 欧美激情精品在线| 毛片电影在线| 国产精品久久久久久av下载红粉| 日韩城人网站| 超碰97在线资源| 牛牛视频精品一区二区不卡| 欧美在线播放一区二区| 日韩综合精品| 国产xxxx振车| 天堂蜜桃一区二区三区| www.五月天色| av资源网一区| 激情五月深爱五月| 一区二区三区精品视频| 二区视频在线观看| 欧美男人的天堂一二区| 免费观看国产视频| 亚洲片av在线| 天堂8中文在线| 国产97在线视频| 久久国产精品免费一区二区三区| 国产一区二区精品免费| 青草国产精品| 亚洲精品无码国产| 美女尤物国产一区| 白嫩情侣偷拍呻吟刺激| 欧美国产欧美综合| 国产午夜精品无码| 欧美色图免费看| 色呦呦中文字幕| 日韩在线www| 亚洲欧美一区二区三区| 97超碰在线播放| 欧美色就是色| 青青草精品视频在线| 久久97超碰国产精品超碰| 88av在线播放| 亚洲视频一区二区在线| 91在线视频在线观看| 日韩欧美色电影| 无遮挡的视频在线观看| 57pao成人永久免费视频| 视频在线观看免费影院欧美meiju| 欧美中日韩一区二区三区| 欧美亚韩一区| 91日韩精品视频| 国产日韩av一区| 国产做受高潮漫动| 91精品国产全国免费观看| 岛国在线视频免费看| 性色av一区二区三区| 精品国产欧美| 中文字幕成人一区| 日韩激情中文字幕| 深爱五月激情网| 亚洲国产精品一区二区www在线| 国产精品高潮呻吟AV无码| 亚洲香蕉av在线一区二区三区| 色是在线视频| 激情久久av| 一区久久精品| 91传媒理伦片在线观看| 亚洲欧美日韩久久精品| 一区二区三区www污污污网站| 亚洲欧美日韩国产中文专区| 国产精品25p| 国产精品一区二区三区不卡| 欧美激情综合色综合啪啪| 国产传媒免费观看| 国产精品夫妻自拍| 中文字幕+乱码+中文字幕明步| 亚洲欧美中文日韩在线| 精品国产免费人成网站| 麻豆视频成人| 可以看av的网站久久看| 久久精品成人av| 在线欧美日韩国产| 国产一级免费在线观看| 日韩美女在线观看| 国产亚洲欧美日韩在线观看一区二区 | 亚洲人成绝费网站色www| 在线精品亚洲欧美日韩国产| 久久国产精品久久精品国产| 国产农村妇女精品一二区| 韩国无码一区二区三区精品| 岛国精品视频在线播放| 日本一区高清| 国产成人自拍视频在线观看| 精品久久美女| 色婷婷一区二区三区在线观看| 亚洲色图制服丝袜| 精品人妻一区二区三区麻豆91| 欧美成年人网站| 精品国产影院| 999精品网站| 国产精品久久久久久福利一牛影视| 中文字幕福利视频| 久久亚洲精品国产亚洲老地址| 色妞ww精品视频7777| 霍思燕三级露全乳照| 97久久精品人人澡人人爽| 无码人妻丰满熟妇区bbbbxxxx| 一区二区三区久久精品| 成人乱码手机视频| www.九色.com| 久久久高清一区二区三区| 亚洲中文一区二区三区| 欧美精品一区在线播放| 麻豆精品99| 午夜免费看视频| 一级特黄大欧美久久久| 深爱激情五月婷婷| 国产精品久久网| 欧美激情综合色综合啪啪| aaaaa级少妇高潮大片免费看| 在线免费观看日本欧美| 2024最新电影在线免费观看| 国产精品一区二区欧美黑人喷潮水| 久久久久国产精品午夜一区| 日本爱爱小视频| 国产视频久久网| 97久久精品一区二区三区的观看方式| 国产精品久久久久久久久电影网| 26uuu另类欧美亚洲曰本| 91禁在线观看| 51久久精品夜色国产麻豆| 99久久夜色精品国产亚洲狼| 在线免费观看污视频| 欧美日韩在线播| 国内激情视频在线观看| 日韩免费毛片| 本田岬高潮一区二区三区| 亚洲天堂久久久久| 欧美一区二区.|