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

解密 Netty 高性能之謎:NioEventLoop 線程池阻塞分析與調(diào)優(yōu)策略

開發(fā)
我們使用NioEventLoop常會(huì)出現(xiàn)一個(gè)奇怪的現(xiàn)象,在消息密集的情況下,服務(wù)端處理會(huì)斷斷續(xù)續(xù)的,偶發(fā)出現(xiàn)消息處理阻塞,經(jīng)過不斷的摸索排查發(fā)現(xiàn)是線程池使用不當(dāng)導(dǎo)致的,遂此文簡單介紹一下這個(gè)故障的現(xiàn)象和排查思路。

我們使用NioEventLoop常會(huì)出現(xiàn)一個(gè)奇怪的現(xiàn)象,在消息密集的情況下,服務(wù)端處理會(huì)斷斷續(xù)續(xù)的,偶發(fā)出現(xiàn)消息處理阻塞,經(jīng)過不斷的摸索排查發(fā)現(xiàn)是線程池使用不當(dāng)導(dǎo)致的,遂此文簡單介紹一下這個(gè)故障的現(xiàn)象和排查思路。

詳解NioEventLoop阻塞問題分析與解決過程

1. 故障復(fù)現(xiàn)

在演示代碼之前,我們不妨先來了解一下這個(gè)需求,客戶端和服務(wù)端建立連接之后,會(huì)向該通道不斷發(fā)送消息。然后服務(wù)端收到消息,會(huì)將消息提交到業(yè)務(wù)線程池中異步處理:

2. 客戶端代碼實(shí)現(xiàn)分析

先來看看客戶端的connect代碼,就是一套標(biāo)準(zhǔn)的模板代碼,設(shè)置好對(duì)應(yīng)參數(shù)以及業(yè)務(wù)處理器之后,直接向服務(wù)端的9999端口發(fā)起連接:

public class NettyClient {


    public void connect() throws Exception {
        EventLoopGroup group = new NioEventLoopGroup(8);
        Bootstrap b = new Bootstrap();
        b.group(group)
                .channel(NioSocketChannel.class)
                .handler(new ChannelInitializer<SocketChannel>() {
                    @Override
                    public void initChannel(SocketChannel ch) throws Exception {
                        //業(yè)務(wù)處理器
                        ch.pipeline().addLast(new NettyClientHandler());
                    }
                });
        ChannelFuture f = b.connect("127.0.0.1", 9999).sync();
       //......
    }

 
}

對(duì)應(yīng)我們給出客戶端處理器的代碼,和服務(wù)端建立了連接之后,創(chuàng)建一個(gè)線程,無限循環(huán),每次刷一個(gè)消息就休息1ms:

public class NettyClientHandler extends ChannelInboundHandlerAdapter {

    static final int MSG_SIZE = 256;

    @Override
    public void channelActive(ChannelHandlerContext ctx) {
        new Thread(() -> {
            //無限循環(huán),每隔一毫秒發(fā)送一次消息
            while (true) {
                ByteBuf firstMessage = Unpooled.buffer(MSG_SIZE);
                for (int i = 0; i < firstMessage.capacity(); i++) {
                    firstMessage.writeByte((byte) i);
                }
                //刷一次消息后休眠1ms
                ctx.writeAndFlush(firstMessage);
                try {
                    TimeUnit.MILLISECONDS.sleep(1);
                } catch (Exception e) {
                   //......
                }
            }
        }).start();
    }

  
}

3. 服務(wù)端處理邏輯分析

而服務(wù)端啟動(dòng)類也比較簡單,就是一套比較經(jīng)典的NIO模板:

public class NettyServer {
    public static void main(String[] args) throws Exception {
        //聲明主從reactor
        EventLoopGroup bossGroup = new NioEventLoopGroup(1);
        EventLoopGroup workerGroup = new NioEventLoopGroup();

        ServerBootstrap b = new ServerBootstrap();
        b.group(bossGroup, workerGroup)
                .channel(NioServerSocketChannel.class)
                .option(ChannelOption.SO_BACKLOG, 100)
                .childHandler(new ChannelInitializer<SocketChannel>() {
                    @Override
                    public void initChannel(SocketChannel ch) throws Exception {
                        //追加業(yè)務(wù)處理器NettyServerHandler
                        ChannelPipeline p = ch.pipeline();
                        p.addLast(new NettyServerHandler());
                    }
                });

        //監(jiān)聽9999端口
        ChannelFuture f = b.bind(9999).sync();

      //......
    }
}

NettyServerHandler 處理器的邏輯也比較簡單,簡單的將消息提交到業(yè)務(wù)線程池中執(zhí)行即可,注意筆者代碼中的一行代碼Thread.currentThread() == ctx.channel().eventLoop()這就是后續(xù)問題引發(fā)的關(guān)鍵:

public class NettyServerHandler extends ChannelInboundHandlerAdapter {

    private static AtomicInteger sum = new AtomicInteger(0);

    //設(shè)置一個(gè)最大線程數(shù)為3的線程池,當(dāng)線程處理不過來的時(shí)候采用CallerRunsPolicy策略
    private static ExecutorService executorService = new ThreadPoolExecutor(1, 3, 30, TimeUnit.SECONDS,
            new ArrayBlockingQueue<>(1000), new ThreadPoolExecutor.CallerRunsPolicy());

    public void channelRead(ChannelHandlerContext ctx, Object msg) {
        //原子類記錄收到消息數(shù)以及打印消息時(shí)間
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String date = simpleDateFormat.format(new Date());
        System.out.println("--> Server receive client message : " + sum.incrementAndGet() + "time: " + date);

        //將消息提交到業(yè)務(wù)線程池中處理
        executorService.execute(() -> {
            ByteBuf req = (ByteBuf) msg;
            //如果當(dāng)前執(zhí)行線程是nio線程則休眠15s
            if (Thread.currentThread() == ctx.channel().eventLoop())
                try {
                    TimeUnit.SECONDS.sleep(15);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            //轉(zhuǎn)發(fā)消息,此處代碼省略,轉(zhuǎn)發(fā)成功之后返回響應(yīng)給終端
            ctx.writeAndFlush(req);
        });
    }

  //......
}

自此我們的代碼都編寫完成,我們不妨將服務(wù)端和客戶端代碼都啟動(dòng)。通過控制臺(tái)可以發(fā)現(xiàn),1毫秒發(fā)送的消息,會(huì)時(shí)不時(shí)的卡15s才能繼續(xù)處理消息。

4. 排查思路

這類問題我們用jvisualvm看看GC情況是否正常,看看是不是頻繁的Full GC導(dǎo)致整個(gè)進(jìn)程處于STW狀態(tài)導(dǎo)致消息任務(wù)阻塞。

監(jiān)控結(jié)果如下,很明顯GC沒有問題,我們只能看看CPU使用情況。

很明顯的CPU使用情況也是正常,沒有什么奇奇怪怪的任務(wù)導(dǎo)致使用率飆升。

所以我們只能看看線程使用情況了,果然,我們發(fā)現(xiàn)NioEventLoop居然長時(shí)間的處于休眠狀態(tài):

所以我們用jps定位Java進(jìn)程id后鍵入jstack查看線程使用情況:

jstack -l 17892

自此我們終于找到了線程長期休眠的原因,從下面的堆棧我們可以看出,正是任務(wù)量巨大,導(dǎo)致業(yè)務(wù)線程池?zé)o法及時(shí)處理消息,最終業(yè)務(wù)線程池走到了拒絕策略,這就使得業(yè)務(wù)線程池一直走到CallerRunsPolicy,也就是說業(yè)務(wù)線程池忙不過來的時(shí)候會(huì)將任務(wù)交由NioEventLoop執(zhí)行。而一個(gè)連接只會(huì)有一個(gè)NioEventLoop的線程執(zhí)行,使得原本非常忙碌的NioEventLoop還得分神處理一下我們業(yè)務(wù)線程池的任務(wù)。

為了驗(yàn)證這一點(diǎn),我們不妨在業(yè)務(wù)線程池中打印線程名:

//將消息提交到業(yè)務(wù)線程池中處理
  executorService.execute(() -> {
            System.out.println(" executorService execute thread name: "+Thread.currentThread().getName());
   ByteBuf req = (ByteBuf) msg;
   //其它業(yè)務(wù)邏輯處理,訪問數(shù)據(jù)庫
   if ((Thread.currentThread() == ctx.channel().eventLoop()))
    try {
     //訪問數(shù)據(jù)庫,模擬偶現(xiàn)的數(shù)據(jù)庫慢,同步阻塞15秒
     TimeUnit.SECONDS.sleep(15);
    } catch (Exception e) {
     e.printStackTrace();
    }
   //轉(zhuǎn)發(fā)消息,此處代碼省略,轉(zhuǎn)發(fā)成功之后返回響應(yīng)給終端
   ctx.writeAndFlush(req);
  });

最終我們可以看到,線程池中的任務(wù)都被nioEventLoopGroup這個(gè)線程執(zhí)行,所以這也是筆者為什么在模擬問題時(shí)在if中增加 (Thread.currentThread() == ctx.channel().eventLoop())的原因,就是為了模仿那些耗時(shí)的業(yè)務(wù)被nioEventLoopGroup的線程執(zhí)行的情況,例如:一個(gè)耗時(shí)需要15s的任務(wù)剛剛好因?yàn)榫芙^策略被nioEventLoopGroup執(zhí)行,那么Netty服務(wù)端的消息處理自然就會(huì)阻塞,出現(xiàn)本文所說的問題。

5. 解決方案

從上文的分析中我們可以得出下面這樣一個(gè)結(jié)果,所以解決該問題的方式又兩種:

  • 調(diào)整業(yè)務(wù)線程池大小,提升線程池處理效率并適當(dāng)增加隊(duì)列長度。
  • 調(diào)整拒絕策略,處理不過來時(shí)直接丟棄。

以筆者為例,結(jié)合各種耗時(shí)工具排查后發(fā)現(xiàn)夯住線程池的業(yè)務(wù)功能存在可以優(yōu)化的空間,所以將功能優(yōu)化后結(jié)合arthas等工具大體可以定位到阻塞隊(duì)列穩(wěn)定的消息數(shù),最終給的策略就是優(yōu)化功能代碼+調(diào)大阻塞隊(duì)列和最大線程數(shù):

對(duì)應(yīng)我們給出線程池優(yōu)化后的參數(shù),整體上又優(yōu)化了任務(wù)處理速度避免了線程池夯住:

//調(diào)大阻塞隊(duì)列
    private static ExecutorService executorService = new ThreadPoolExecutor(1, 8, 30, TimeUnit.SECONDS,
            new ArrayBlockingQueue<>(10_0000), new ThreadPoolExecutor.CallerRunsPolicy());

自此之后我們再查看控制臺(tái)輸出和NioEventLoop線程狀態(tài),發(fā)現(xiàn)運(yùn)行都沒有阻塞,那些實(shí)在無法處理的消息都被丟棄了:

總結(jié)

自此我們對(duì)于本次的事件總結(jié)出以下幾點(diǎn)要求和建議:

  • 耗時(shí)操作不要用NioEventLoop,尤其是本次這種高并發(fā)且拒絕策略配置為用執(zhí)行線程接收忙碌任務(wù)的方式。
  • 服務(wù)端收不到消息時(shí),建議優(yōu)先從CPU、GC、線程等角度分析問題。
  • 服務(wù)端開發(fā)時(shí)建議使用兩個(gè)NioEventLoop構(gòu)成主從Reactor模式,并結(jié)合業(yè)務(wù)場景壓測出合適的線程數(shù)。
責(zé)任編輯:趙寧寧 來源: 寫代碼的SharkChili
相關(guān)推薦

2023-11-23 09:26:50

Java調(diào)優(yōu)

2023-09-22 11:48:37

2024-10-06 14:37:52

2022-09-14 22:58:58

Push 推薦Java 開發(fā)vivo

2014-10-10 14:00:52

JavascriptHTML

2013-03-21 11:20:00

性能測試性能調(diào)優(yōu)測試

2020-08-03 07:00:00

Snowflake數(shù)據(jù)庫性能調(diào)優(yōu)

2024-11-11 17:39:01

2013-03-20 17:18:07

Linux系統(tǒng)性能調(diào)優(yōu)

2021-01-27 12:40:09

NginHTTPS前端

2023-10-08 13:47:33

Docker容器

2011-02-15 09:31:56

ASP.NET

2017-07-21 08:55:13

TomcatJVM容器

2012-06-20 11:05:47

性能調(diào)優(yōu)攻略

2021-03-04 08:39:21

SparkRDD調(diào)優(yōu)

2023-10-13 08:20:02

Spring線程池id

2020-08-18 13:50:04

Tomcat高并發(fā)Java

2011-03-10 14:40:54

LAMPMysql

2011-11-14 10:28:23

2020-11-30 11:40:35

NginxLinux性能調(diào)優(yōu)
點(diǎn)贊
收藏

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

91福利免费观看| 欧美日韩亚洲免费| 国产在线观看免费视频今夜| 红杏视频成人| 色网站国产精品| 中文字幕久精品免| 噜噜噜久久,亚洲精品国产品| 午夜在线视频观看日韩17c| 综合激情国产一区| 中文字幕一区二区三区人妻在线视频| 午夜影院在线播放| 亚洲欧洲99久久| 国产一区二区精品在线| 夜夜躁日日躁狠狠久久av| 一区二区三区四区电影| 亚洲欧美精品一区二区| 手机av在线网站| 周于希免费高清在线观看| 综合中文字幕亚洲| 久久久水蜜桃| 99产精品成人啪免费网站| 久久久xxx| 欧美极品少妇与黑人| 中字幕一区二区三区乱码| 午夜电影一区| 欧美精品久久99久久在免费线| 人人妻人人做人人爽| 三区四区电影在线观看| 不卡的av在线播放| 亚洲自拍在线观看| 天天综合久久综合| 99国产精品私拍| 美女精品久久久| 香蕉视频久久久| 久久综合五月婷婷| 日韩免费观看高清完整版在线观看| 国产黄色特级片| 超碰在线网站| 一区二区三区日韩欧美精品| 日韩欧美视频第二区| 婷婷av一区二区三区| 国产一区二区在线视频| 国产精品日韩精品| 无码人妻av免费一区二区三区 | 日本乱码一区二区三区不卡| 亚洲天堂网中文字| 一区二区国产日产| av播放在线观看| 日本一区二区三区高清不卡| 欧洲精品久久| 黄色毛片在线看| 99re亚洲国产精品| 精品一区二区三区国产| 神马午夜在线观看| a级高清视频欧美日韩| 国产成人免费观看| 高h放荡受浪受bl| 东方aⅴ免费观看久久av| 91久久国产自产拍夜夜嗨| 国产精品国产精品国产专区| 久久国产免费看| 成人黄色中文字幕| av观看在线免费| 国产福利不卡视频| 91精品国产一区二区三区动漫| 91女人18毛片水多国产| 韩国精品在线观看| 91在线免费视频| 精品国产乱码一区二区三| 国产精品自拍在线| 国产91一区二区三区| 国产 欧美 精品| 成人黄色在线看| 久久久久久久久久久久久久一区| 色综合视频在线| 久久久久久久久蜜桃| 色综合影院在线观看| 中文字幕中文字幕99 | 精品在线99| 精品亚洲一区二区三区| 精品无码一区二区三区| 波多野结衣的一区二区三区 | 欧美性xxxx在线播放| 哪个网站能看毛片| 日韩电影精品| 日韩欧美黄色影院| 亚洲成人av免费在线观看| 亚洲图区在线| 精品精品国产国产自在线| 国产性一乱一性一伧一色| aa国产精品| 国产精品美女主播在线观看纯欲| 中文字幕av第一页| 国产成人在线色| 国产日韩二区| 成人av电影观看| 一区二区三区av电影| 狠狠干 狠狠操| 欧美91在线|欧美| 亚洲精品一线二线三线| 丁香激情五月少妇| 狠狠综合久久| 国产精品久久久久99| 国产suv精品一区二区69| 26uuu久久天堂性欧美| 伊人av成人| 日本不卡1234视频| 51精品国自产在线| 中文幕无线码中文字蜜桃| 欧美一区二区三区免费看| 国产99在线|中文| 精品人妻少妇嫩草av无码专区| 久久这里只有精品视频网| 亚洲人成人77777线观看| 6699嫩草久久久精品影院| 欧美色国产精品| 91精品国产自产| 一区二区中文字| 国产成人精品视频在线| 日本精品一二区| 日韩毛片在线免费观看| 无码人妻丰满熟妇区五十路百度| 麻豆精品在线| 在线电影av不卡网址| 日本一区二区欧美| 国产在线不卡一区| 日韩欧美亚洲v片| 黄在线观看免费网站ktv| 欧美一区二区观看视频| 在线免费看视频| 国产欧美日韩一级| 成人免费视频网站| 国产黄a三级三级三级av在线看| 日韩欧美在线视频观看| 水蜜桃av无码| 国产综合精品一区| 亚洲一区二区免费在线| 又爽又大又黄a级毛片在线视频| 欧美三级欧美成人高清www| 日本精品一二三区| 99爱精品视频| 欧美国产乱子伦| 亚洲av首页在线| 国产成人精品一区二区三区免费 | 青青草av网站| 欧美亚洲色图校园春色| 久久久之久亚州精品露出| 国产又大又黑又粗| 中文字幕制服丝袜成人av | 五月天丁香综合久久国产| 最新中文字幕在线播放| 亚洲精品福利视频| 免费观看一区二区三区毛片| 91在线高清观看| 免费无遮挡无码永久视频| 老司机精品在线| 午夜精品久久久久久久白皮肤 | 欧美一区二区三区四区在线观看地址| 超碰97国产精品人人cao| 精品成人一区二区三区四区| 国产一级做a爱免费视频| 高清不卡一区二区在线| 国产免费一区二区视频| 91精品啪在线观看国产爱臀| 欧美精品videossex88| 黄色一级a毛片| 欧美日韩免费一区| 国产ts在线播放| 免费成人在线影院| 在线观看18视频网站| 麻豆一二三区精品蜜桃| 欧美巨猛xxxx猛交黑人97人| 亚洲精品网站在线| 欧美日韩国产一区二区| 久久成人激情视频| 久久精品国产在热久久| 日韩中文字幕在线不卡| 国产精品国产| 国产成人一区二区三区电影| 在线观看h片| 日韩午夜激情av| 亚洲精品视频在线观看免费视频| 久久综合一区二区| 亚洲娇小娇小娇小| 中文字幕一区二区三三 | 国产激情视频在线播放| 偷拍一区二区三区| 男人的天堂av网| 国产成人在线影院| 国产精品69页| 欧美精品1区| 欧美精品七区| 国产一区二区三区国产精品| 2019日本中文字幕| 午夜在线小视频| 欧美成人一区二区三区| 亚洲大片免费观看| 亚洲精品第1页| 色噜噜日韩精品欧美一区二区| 久久99精品国产.久久久久| 加勒比成人在线| 日韩专区精品| 精品无人乱码一区二区三区的优势| 亚洲精品555| 国内精品久久久久影院 日本资源| 国产最新视频在线观看| 欧美tickling网站挠脚心| 进去里视频在线观看| 亚洲一二三区在线观看| 国产精品免费无码| 成人一区二区三区在线观看| 国产区二区三区| 日韩一区二区久久| 青青草综合视频| 日本一本不卡| 久久久久久久久一区| 一区二区三区四区精品视频| 国产精品精品视频| 美女的胸无遮挡在线观看| 久久亚洲精品一区| 北岛玲一区二区三区| 亚洲国产欧美自拍| 性色av蜜臀av| 欧美午夜精品一区二区三区| 日韩在线观看第一页| 中文字幕字幕中文在线中不卡视频| 亚洲性猛交xxxx乱大交| 99re这里都是精品| 国产污在线观看| 国产盗摄一区二区三区| 天天色天天综合网| 久久精品国内一区二区三区| 超碰网在线观看| av不卡在线看| a级黄色小视频| 中文在线播放一区二区| 中文字幕99| 色婷婷色综合| 亚洲精品一卡二卡三卡四卡| 欧美激情在线精品一区二区三区| 国产综合 伊人色| 成人午夜三级| 国产精品综合久久久久久| 日韩成人在线看| 92国产精品视频| 日韩高清二区| 国产成人精品免费视频大全最热| 国产精品久一| 999精品视频一区二区三区| 亚洲免费资源| 96精品久久久久中文字幕| 四虎永久精品在线| 91精品在线看| 免费观看亚洲天堂| αv一区二区三区| 亚洲午夜免费| 国产精品大全| 婷婷亚洲精品| 欧美日韩高清在线一区| 教室别恋欧美无删减版| 日韩国产欧美精品| 色小子综合网| 久久久久久久免费视频| 国产主播精品| 人妻少妇被粗大爽9797pw| 六月丁香综合| the porn av| 国产一区二区视频在线播放| 国产精品偷伦视频免费观看了| 国产成人av影院| 给我免费观看片在线电影的| 久久亚洲精华国产精华液| 久久视频一区二区三区| 亚洲伦在线观看| 国产精品30p| 色综合天天综合在线视频| 这里只有久久精品视频| 在线播放国产精品二区一二区四区 | 偷拍自拍亚洲色图| 日产精品久久久一区二区| 99精品网站| www.av91| 久久久久久久高潮| 婷婷中文字幕在线观看| 成人短视频下载| x88av在线| 一区二区三区中文字幕在线观看| 天天爽夜夜爽夜夜爽精品| 欧美在线观看禁18| 亚洲精品国产精| 亚洲人成免费电影| 色女人在线视频| 全球成人中文在线| 精品午夜视频| 欧美日韩亚洲综合一区二区三区激情在线| 日韩久久精品| 亚洲人成无码网站久久99热国产| 日本va欧美va瓶| 香蕉视频免费网站| 国产精品伦理一区二区| 国产成人精品亚洲男人的天堂| 日本乱人伦一区| 亚洲精品国产精品国| 日韩中文字幕精品视频| 91福利在线免费| 成人福利视频在线观看| 特黄特色欧美大片| 久久福利一区二区| 青青青爽久久午夜综合久久午夜| 乳色吐息在线观看| 国产精品视频免费| 日韩免费一级片| 91精品国产色综合久久不卡蜜臀| 免费在线超碰| 久久久久久成人精品| 亚洲香蕉久久| 亚洲成色最大综合在线| 亚洲乱码视频| 国产裸体视频网站| 国产精品久久久久久久久免费相片| 91精品国产乱码在线观看| 欧美一区二区三区成人| 91美女视频在线| 欧美亚洲成人网| 国产精品久久久久av蜜臀| 免费看av软件| 免费成人你懂的| 成人片黄网站色大片免费毛片| 亚洲一区二区三区免费视频| 一级片视频播放| 亚洲性视频网站| 丁香六月综合| 久久国产一区| 国产视频一区免费看| 亚洲性图第一页| 亚洲另类在线一区| 99久久精品国产成人一区二区| 中文字幕在线精品| 外国电影一区二区| 日本在线观看一区| 天堂久久久久va久久久久| 日本高清www| 欧美日韩激情网| 青青国产在线| 26uuu日韩精品一区二区| 欧美日韩一区二区三区在线电影 | 国产91社区| 激情综合中文娱乐网| 亚洲精品鲁一鲁一区二区三区 | 国产精一品亚洲二区在线视频| 永久免费看片直接| 91精品国产日韩91久久久久久| 在线免费黄色| 国产免费一区二区三区在线能观看 | 亚洲精品社区| 青青草视频网站| 婷婷丁香激情综合| 头脑特工队2在线播放| 91国产高清在线| 欧美日韩爱爱| 欧美三级午夜理伦三级富婆| 中文字幕在线免费不卡| 国产绳艺sm调教室论坛| 欧美激情18p| 久久精品国产亚洲blacked| www黄色日本| 国产女人18毛片水真多成人如厕| 欧美 亚洲 另类 激情 另类| 深夜福利91大全| 1769国产精品视频| 免费看又黄又无码的网站| 久久久激情视频| 亚洲天堂网视频| 欧美日韩ab片| 香蕉视频一区| 成人综合久久网| 一级特黄大欧美久久久| 无码精品黑人一区二区三区| 国产精品扒开腿做爽爽爽视频| 日韩一区二区在线免费| 亚洲欧美日韩一二三区| 婷婷久久综合九色综合绿巨人 | 成人丝袜高跟foot| 国产成人无码av| www.亚洲免费视频| 第四色在线一区二区| 少妇性l交大片| 亚洲男人电影天堂| 天天色综合久久| 国产欧美va欧美va香蕉在线| 黄色亚洲精品| 欧美18—19性高清hd4k| 欧美一级在线视频| 久久人体大尺度| 三年中文高清在线观看第6集| 国产91丝袜在线播放九色| 岛国av中文字幕| 欧美区二区三区| 日韩成人激情| 国产精品嫩草av|