精品欧美一区二区三区在线观看 _久久久久国色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)

亚洲深深色噜噜狠狠爱网站| 欧洲av一区二区| 波多野结衣一区二区三区| 欧美一区二区三区免费视| 欧美黄色一级生活片| 国产一区二区三区亚洲综合| 红桃视频成人在线观看| 亚洲午夜精品久久久久久浪潮| 国产黄色美女视频| 丝袜诱惑制服诱惑色一区在线观看| 国产亚洲欧美日韩精品| 中文字幕1区2区| 激情亚洲影院在线观看| 一区二区三区免费| 日韩在线电影一区| 亚洲毛片在线播放| 久久99热这里只有精品| 98视频在线噜噜噜国产| 久久高清内射无套| 精品国产一区二区三区av片| 精品久久久久香蕉网| 制服丝袜综合网| 在线天堂新版最新版在线8| 亚洲人成亚洲人成在线观看图片| 欧美一区二区在线| 天天操天天射天天舔| 韩国女主播成人在线| 国产成人aa精品一区在线播放| 精品无码人妻一区二区三区品| 日韩欧美国产精品综合嫩v| 日韩电影中文字幕| www.555国产精品免费| 图片一区二区| 欧美又粗又大又爽| 无码人妻h动漫| 国产激情视频在线看| 伊人夜夜躁av伊人久久| 天天成人综合网| 国产一二三区在线| 久久人人超碰精品| 久久99精品久久久久久青青日本| 亚洲成人一二三区| 国产91在线观看丝袜| 91免费观看网站| 一级欧美一级日韩| 麻豆国产欧美日韩综合精品二区| 国产精品久久二区| 日本欧美www| 日韩成人午夜电影| 日韩免费在线播放| 波多野结衣黄色| 久久精品女人| 国产精品高清在线| 国产精品高清无码| 久久精品国产亚洲一区二区三区| 国产精品亚洲欧美导航| 国产原创中文av| 国产呦萝稀缺另类资源| 91精品国产99久久久久久红楼 | 欧洲熟妇的性久久久久久| 美女精品视频在线| 日韩精品一区二区在线| 国产人妖在线观看| 国产精品qvod| 亚洲欧美日韩国产精品| 国产真人做爰视频免费| 色综合咪咪久久网| 欧美成人精品不卡视频在线观看| 欧美三级日本三级| 在线观看一区视频| 欧洲日本亚洲国产区| 黄色大全在线观看| 激情另类小说区图片区视频区| 亚洲中国色老太| 三级小视频在线观看| 91香蕉视频在线| 亚洲mv在线看| 男插女视频久久久| 福利视频一区二区| 亚洲这里只有精品| 亚洲精品福利| 亚洲欧美国产精品| 永久av免费网站| 影音先锋中文字幕一区| 国产91网红主播在线观看| 中文字幕一区二区免费| 国产成人午夜99999| 久久国产精品久久| 免费在线观看av片| 午夜精品久久一牛影视| www.色就是色| 哺乳挤奶一区二区三区免费看| 日韩精品在线免费观看| 国产视频精品免费| 在线综合亚洲| 国产一区二区丝袜高跟鞋图片| 亚洲第一天堂影院| 国产欧美一区二区三区沐欲| 亚洲中文字幕无码一区二区三区| 国产网站在线| 欧美精品乱人伦久久久久久| 亚洲精品乱码久久| 国产精品久久久久无码av| 午夜精品福利在线观看| 国产精品视频久久久久久| 久久影视一区二区| 永久免费网站视频在线观看| 日韩欧美精品电影| 欧美精品一区二区久久久| 国产视频123区| 国产精品一二| 粉嫩av免费一区二区三区| av中文字幕在线| 欧美日韩中文字幕综合视频| 久久黄色一级视频| 欧美oldwomenvideos| 日韩av123| 无码国产伦一区二区三区视频| 日韩毛片视频在线看| 国产v亚洲v天堂无码久久久| 国产毛片久久久| 欧美日本啪啪无遮挡网站| 一级黄色片在线| 中文字幕乱码一区二区免费| 欧美日韩亚洲一| 高清一区二区三区| 色综合久久88| 97精品久久人人爽人人爽| 国产女人水真多18毛片18精品视频 | 国产成人精品一区二区三区| 好吊色一区二区| 中文字幕一区二区三区精华液| 欧美污视频网站| 欧美变态网站| 91高潮精品免费porn| 成人免费公开视频| 一区二区三区国产| 久久精品无码一区二区三区毛片| 午夜久久免费观看| 国产精品日韩专区| 99中文字幕一区| 欧美中文字幕亚洲一区二区va在线| 加勒比一区二区| 天堂在线亚洲视频| 欧美亚洲爱爱另类综合| 欧美人与性动交xxⅹxx| 亚洲人成电影在线观看天堂色| 国产超碰人人爽人人做人人爱| 成人av在线影院| 精品久久一二三| 网友自拍区视频精品| 欧美一区深夜视频| 国产裸舞福利在线视频合集| 欧美亚洲国产一卡| 999精品久久久| 精品在线一区二区| 在线视频一二三区| 亚洲一区二区三区在线免费| 久久久久久久久综合| 少妇高潮一区二区三区69| 亚洲国产视频在线| 日韩精品一区二区三区高清免费| 亚洲尤物在线| 五月婷婷综合色| 成人激情久久| 久久久久久久久电影| 天堂在线免费av| 日本国产一区二区| 情侣偷拍对白清晰饥渴难耐| 国产不卡视频在线播放| 男人靠女人免费视频网站| 久久av网址| 成人欧美一区二区三区黑人| 久久免费电影| 亚洲欧美国内爽妇网| 亚洲香蕉在线视频| 夜夜夜精品看看| 插吧插吧综合网| 久久福利视频一区二区| 国产精品国产三级国产专区51| 六月丁香久久丫| 国产精品一区二区三区在线播放| 神马午夜伦理不卡 | av无码av天天av天天爽| 美女网站一区二区| 日韩在线观看a| 久久av影视| 99视频日韩| 日韩欧美精品电影| 欧美激情一区二区三区在线视频观看| 三级在线视频| 91精品国产91综合久久蜜臀| 国产欧美一区二区三区在线看蜜臂| 国产精品午夜春色av| 中文字幕人妻一区| 麻豆精品新av中文字幕| www国产精品内射老熟女| 91蜜臀精品国产自偷在线| 国产精品大全| 国产亚洲人成a在线v网站| 久久欧美在线电影| 青青青青在线| 亚洲男人第一网站| 丰满熟妇人妻中文字幕| 欧美日韩亚洲国产综合| 91国产丝袜播放在线| 亚洲精品中文在线观看| 99久久精品免费视频| 粉嫩久久99精品久久久久久夜| 一区二区三区国产免费| 亚洲福利精品| 日本免费黄色小视频| 第一会所sis001亚洲| 极品校花啪啪激情久久| 成年人在线看片| 精品久久国产一区| 国产精品成人免费视频| 国产自产自拍视频在线观看 | 日本中文字幕电影在线免费观看| 亚洲第一精品夜夜躁人人躁| a天堂视频在线| 欧美日韩一区三区四区| www亚洲视频| 五月婷婷综合激情| 久久久久久久9999| 亚洲日本乱码在线观看| 自拍偷拍第9页| 国产日韩欧美精品在线| 亚洲av成人无码一二三在线观看| 国产精品资源网| 91在线第一页| 激情另类小说区图片区视频区| 亚洲成人av免费看| 秋霞av亚洲一区二区三| 亚洲精品高清无码视频| 久久久久国内| 999在线免费视频| 日韩电影在线免费| 美女网站免费观看视频| 日韩av中文字幕一区二区 | 午夜欧美巨大性欧美巨大| 78色国产精品| 亚洲免费福利| 国产成人涩涩涩视频在线观看| 午夜精品久久久久久久久久蜜桃| 青青草成人在线| 国产成人精品亚洲日本在线观看| 国产成人一区二区三区电影| 97久久香蕉国产线看观看| 国产精品99久久99久久久二8| 性欧美freehd18| 国产精品久久久久77777| 97精品国产99久久久久久免费| 国产精品电影观看| 九七电影院97理论片久久tvb| 国产日本欧美一区二区三区在线| 亚洲日日夜夜| 91偷拍精品一区二区三区| 国产一区二区三区不卡av| 国产尤物91| 亚洲动漫精品| 亚洲精品国产系列| 亚洲女同另类| 国产中文字幕乱人伦在线观看| 99成人免费视频| www.超碰com| 国产乱一区二区| 日韩精品视频一区二区| 久久精品男人天堂av| 成人18视频免费69| 亚洲专区一二三| 五月婷婷激情视频| 欧美疯狂性受xxxxx喷水图片| 成人1区2区3区| 日韩精品中文字幕久久臀| a黄色在线观看| 欧美高跟鞋交xxxxhd| 伊人久久国产| 91在线视频成人| 神马香蕉久久| 91制片厂免费观看| av成人黄色| 日本三级黄色网址| 成人免费视频国产在线观看| japanese中文字幕| 一区二区三区高清在线| 无码人妻精品一区二区50| 在线播放/欧美激情| 亚洲色偷精品一区二区三区| zzjj国产精品一区二区| 欧美aa在线| 91在线观看免费| 国产在线观看91一区二区三区| 国产精品久久久影院| 日韩高清欧美激情| 欧美图片自拍偷拍| 国产精品伦理在线| 国产a∨精品一区二区三区仙踪林| 欧美三级韩国三级日本一级| 朝桐光av在线一区二区三区| 亚洲天堂av在线免费观看| 最新国产在线拍揄自揄视频| 国产精品普通话| 丝袜美腿一区二区三区动态图| 日韩中文在线字幕| 日韩高清不卡一区二区三区| 在线观看成人动漫| 中文字幕一区免费在线观看| 在线精品免费视| 亚洲成人久久久| 欧美日韩色网| 91色p视频在线| 成人在线视频免费观看| 欧美一区二区中文字幕| 国产精品综合视频| 亚洲毛片亚洲毛片亚洲毛片| 富二代精品短视频| 亚洲精品一区二区三区蜜桃| 久久久999国产精品| 超碰这里只有精品| 欧美久久久久久| 在线视频亚洲| 中文字幕影片免费在线观看| 一区二区三区蜜桃| 国产口爆吞精一区二区| 日韩在线观看成人| 99久久久国产精品免费调教网站| 免费中文日韩| 亚洲中字在线| 欧美色图亚洲激情| 精品久久中文字幕久久av| 日本免费不卡视频| 久久久久久亚洲精品不卡| 亚洲1区在线| 欧美另类videosbestsex日本| 国产在线不卡视频| 天天看天天摸天天操| 欧美人伦禁忌dvd放荡欲情| 在线观看黄av| 成人疯狂猛交xxx| 久久精品国内一区二区三区水蜜桃| 亚洲国产高清av| 亚洲色大成网站www久久九九| 91九色蝌蚪91por成人| 日韩亚洲在线观看| 色诱色偷偷久久综合| 日本久久高清视频| 国产一区二区剧情av在线| avove在线播放| 亚洲精品在线三区| 嗯~啊~轻一点视频日本在线观看| 国产精品一区二区不卡视频| 国产欧美一区二区三区国产幕精品| 国产一级二级在线观看| 欧美日韩亚洲精品内裤| 久草福利在线| 国产精品永久免费在线| 亚洲91视频| 欧美久久久久久久久久久| 天天操天天干天天综合网| 国产尤物视频在线| 91精品视频专区| 在线日本成人| 精品无码一区二区三区 | 欧美—级a级欧美特级ar全黄 | 欧美成人精精品一区二区频| 丁香花在线电影| 欧美在线3区| 国产一区二区免费看| 免费在线观看日韩| 亚洲欧洲一区二区三区久久| 深夜福利亚洲| 亚洲国产精品无码观看久久| 久久久高清一区二区三区| 一区二区三区精| 国产+人+亚洲| 成久久久网站| 欧美久久久久久久久久久| 91高清视频免费看| free性欧美hd另类精品| 精品午夜一区二区三区| 麻豆一区二区三| 久久精品视频国产| 一区二区三区天堂av| 视频二区欧美毛片免费观看| 男人操女人免费软件| 综合久久综合久久| 四虎精品在永久在线观看| 成人a免费视频| 国产麻豆综合| 免费网站看av| 在线观看亚洲视频| 欧美成人一区在线观看| 国产欧美激情视频| 色综合咪咪久久| 精灵使的剑舞无删减版在线观看| 日韩欧美精品一区二区三区经典| 国产成人av福利| 国产又粗又猛视频| 日韩美女中文字幕|