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

線上故障復盤:慢接口霸占線程池,快接口全排隊?三層方案徹底解決!

開發 前端
靜態線程池隔離能解決大部分問題,但遇到“快接口臨時變慢”(如下游DB慢查詢導致下單接口從50ms變5s),還是會占用核心線程池。這時候需要更智能的方案。

前幾天凌晨,某電商平臺突發故障:用戶下單、支付接口響應超時,大量訂單卡在“待支付”狀態,而后臺監控顯示——線程池活躍線程數100%,隊列等待任務超2000個。

排查后發現:運營同學在高峰期導出“近30天銷售報表”,這個慢接口單次執行要20分鐘,直接占滿了所有業務線程,導致支付、下單等快接口“搶不到線程”,整個核心業務鏈路癱瘓。

這種“快慢接口共用線程池”的資源競爭問題,幾乎是分布式服務的“通病”。今天就從應急止損、架構優化、長效治理三個維度,分享一套可落地的立體化解決方案,幫你徹底杜絕這類故障。

一、核心矛盾:為什么快慢接口不能共用線程池?

在聊解決方案前,先搞懂問題根源:傳統“單一線程池”模型的致命缺陷。

當所有接口(快如支付、慢如報表)共用一個線程池時,會出現“劣幣驅逐良幣”的現象:

  • 快接口:支付、下單這類核心接口,單次執行僅50-100ms,本應快速完成并釋放線程;
  • 慢接口:報表導出、數據統計這類接口,依賴復雜查詢或外部調用,單次執行可能10分鐘甚至更久;
  • 沖突結果:慢接口一旦占用線程,會“霸占”資源長達數分鐘,導致線程池無空閑線程處理快接口,最終核心業務排隊超時,用戶體驗崩潰。

這就像“高速公路上,貨車占用快車道緩慢行駛,導致小轎車全被堵在后面”——不是資源不夠,而是資源被錯配了。

二、三層解決方案:從應急止損到長效治理

解決這個問題,不能只靠“拆分線程池”的單一手段,需要一套“隔離+優化+監控”的組合拳,分階段落地。

第一層:應急止損——用“艙壁模式”快速切斷資源競爭

這是解決線上故障的第一步,也是最關鍵的一步。核心思路是“物理隔離線程池”,就像輪船用密封艙防止漏水擴散一樣,讓慢接口的問題只局限在自己的“艙室”里。

1. 兩種隔離策略(按業務優先級更推薦)

圖片圖片

2. 線程池配置技巧(關鍵參數)

隔離后,線程池的配置直接影響效果,核心是“核心池給核心業務傾斜資源”:

// 1. 核心業務線程池(core-pool):優先保障響應速度
ThreadPoolExecutor corePool = new ThreadPoolExecutor(
    10,                  // 核心線程數:根據核心接口QPS設置(如每秒100請求,設10)
    20,                  // 最大線程數:核心線程不夠時的擴容上限(避免線程過多占用CPU)
    60,                  // 空閑線程存活時間:60秒(核心線程不回收,非核心60秒后回收)
    TimeUnit.SECONDS,
    new ArrayBlockingQueue<>(50),  // 阻塞隊列:容量50(隊列滿了觸發拒絕策略,避免排隊過長)
    Executors.defaultThreadFactory(),
    new ThreadPoolExecutor.AbortPolicy()  // 拒絕策略:直接拒絕(核心業務寧可不處理,也不排隊超時)
);


// 2. 非核心業務線程池(general-pool):容忍排隊,不占用核心資源
ThreadPoolExecutor generalPool = new ThreadPoolExecutor(
    5,                   // 核心線程數:非核心接口QPS低,設5足夠
    10,                  // 最大線程數:擴容上限10
    30,                  // 空閑線程存活時間:30秒(非核心接口用得少,快速回收)
    TimeUnit.SECONDS,
    new LinkedBlockingQueue<>(200),  // 阻塞隊列:容量200(非核心接口可容忍排隊)
    Executors.defaultThreadFactory(),
    new ThreadPoolExecutor.CallerRunsPolicy()  // 拒絕策略:讓調用者線程執行(避免任務丟失,不影響核心)
);

3. 落地方式(Spring Boot為例)

用“自定義注解+AOP”實現接口與線程池的綁定,無需手動指定線程池:

// 1. 自定義注解:標記接口所屬線程池
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ThreadPoolBind {
    String value(); // 線程池名稱:如"core-pool"、"general-pool"
}


// 2. AOP切面:攔截帶注解的接口,用指定線程池執行
@Aspect
@Component
public class ThreadPoolAop {
    // 注入兩個線程池(Spring中配置為Bean)
    @Autowired
    private ThreadPoolExecutor corePool;
    @Autowired
    private ThreadPoolExecutor generalPool;


    @Around("@annotation(threadPoolBind)")
    public Object executeWithThreadPool(ProceedingJoinPoint joinPoint, ThreadPoolBind threadPoolBind) throws Throwable {
        // 根據注解值選擇線程池
        ThreadPoolExecutor targetPool = "core-pool".equals(threadPoolBind.value()) ? corePool : generalPool;
        // 提交任務到線程池執行
        return CompletableFuture.supplyAsync(() -> {
            try {
                return joinPoint.proceed();
            } catch (Throwable e) {
                throw new RuntimeException(e);
            }
        }, targetPool).get(); // 若需要同步返回,用get();允許異步則直接返回Future
    }


    // 3. 接口使用:加注解綁定線程池
    @RestController
    @RequestMapping("/order")
    public class OrderController {
        // 核心接口:綁定core-pool
        @ThreadPoolBind("core-pool")
        @PostMapping("/create")
        public String createOrder() {
            // 下單邏輯(快接口,50ms內完成)
            return "order created";
        }
    }


    @RestController
    @RequestMapping("/report")
    public class ReportController {
        // 非核心接口:綁定general-pool
        @ThreadPoolBind("general-pool")
        @GetMapping("/export")
        public String exportReport() {
            // 報表導出邏輯(慢接口,5分鐘完成)
            return "report exported";
        }
    }
}

第二層:架構優化——從“靜態隔離”到“彈性應對”

靜態線程池隔離能解決大部分問題,但遇到“快接口臨時變慢”(如下游DB慢查詢導致下單接口從50ms變5s),還是會占用核心線程池。這時候需要更智能的方案。

1. 動態自適應隔離(應對“臨時慢接口”)

核心邏輯:用監控數據觸發線程池動態切換,讓臨時變慢的快接口“暫時去慢接口池”,避免影響核心池。

  • 步驟1:監控接口響應時間用Prometheus采集每個接口的P99響應時間(99%請求的耗時,更能反映慢請求),例如:

下單接口正常P99是100ms,閾值設為300ms(超過則判定為“臨時變慢”)。

  • 步驟2:配置中心動態下發規則用Nacos/Apollo配置中心維護“接口-線程池”映射規則,例如:
{
  "interfaceThreadPools": [
    {"interface": "/order/create", "pool": "core-pool", "p99Threshold": 300},
    {"interface": "/report/export", "pool": "general-pool", "p99Threshold": 3000}
  ]
}
  • 步驟3:應用層動態切換在AOP切面中加入“響應時間判斷”,若接口連續3次P99超過閾值,自動切換到general-pool:
// AOP切面中新增邏輯
private Map<String, AtomicInteger> slowCountMap = new ConcurrentHashMap<>(); // 慢請求計數器


@Around("@annotation(threadPoolBind)")
public Object executeWithThreadPool(ProceedingJoinPoint joinPoint, ThreadPoolBind threadPoolBind) throws Throwable {
    String interfaceName = joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName();
    long startTime = System.currentTimeMillis();
    Object result = null;
    try {
        // 1. 先按默認規則選擇線程池
        ThreadPoolExecutor targetPool = getDefaultPool(threadPoolBind.value());
        // 2. 檢查是否需要動態切換(從配置中心獲取閾值)
        Integer p99Threshold = getThresholdFromConfig(interfaceName);
        AtomicInteger slowCount = slowCountMap.computeIfAbsent(interfaceName, k -> new AtomicInteger(0));
        if (p99Threshold != null) {
            // 3. 若歷史3次都是慢請求,切換到general-pool
            if (slowCount.get() >= 3) {
                targetPool = generalPool;
                log.warn("接口{}連續3次慢請求,切換到general-pool", interfaceName);
            }
        }
        // 4. 執行任務
        result = CompletableFuture.supplyAsync(() -> {
            try {
                return joinPoint.proceed();
            } catch (Throwable e) {
                throw new RuntimeException(e);
            }
        }, targetPool).get();
        return result;
    } finally {
        // 5. 計算耗時,更新慢請求計數器
        long cost = System.currentTimeMillis() - startTime;
        Integer p99Threshold = getThresholdFromConfig(interfaceName);
        if (p99Threshold != null && cost > p99Threshold) {
            slowCountMap.get(interfaceName).incrementAndGet();
        } else {
            slowCountMap.get(interfaceName).set(0); // 正常請求重置計數器
        }
    }
}

2. 終極方案:響應式編程(從架構層面消除線程占用)

靜態/動態隔離都是“被動防御”,而響應式編程能從根本上解決“線程被慢接口占用”的問題——它跳出了“1個請求對應1個線程”的阻塞模型,用“非阻塞I/O+事件循環”讓線程在等待時釋放資源。

  • 核心原理

當接口需要等待(如DB查詢、RPC調用)時,線程不會被阻塞,而是立即返回去處理其他請求;當等待結果返回后,再由空閑線程繼續處理后續邏輯。例如:

下單接口調用DB查詢庫存(耗時200ms),線程在發起DB請求后立即釋放,去處理下一個下單請求;

200ms后DB返回結果,再由某個空閑線程繼續執行“扣減庫存”邏輯。

  • 技術棧落地(Spring WebFlux)
// 1. 引入依賴
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
    <groupId>io.r2dbc</groupId>
    <artifactId>r2dbc-h2</artifactId> <!-- 非阻塞DB驅動,替代傳統JDBC -->
</dependency>
// 2. 響應式接口實現(下單接口)
@RestController
@RequestMapping("/order")
public class ReactiveOrderController {
    @Autowired
    private ReactiveStockRepository stockRepository; // 響應式Repository


    @PostMapping("/create")
    public Mono<String> createOrder(@RequestBody OrderRequest request) {
        // 非阻塞流程:查詢庫存 → 扣減庫存 → 返回結果
        return stockRepository.findByProductId(request.getProductId()) // 非阻塞查庫,不占用線程
                .flatMap(stock -> {
                    if (stock.getCount() < request.getNum()) {
                        return Mono.error(new RuntimeException("庫存不足"));
                    }
                    // 扣減庫存(非阻塞更新)
                    stock.setCount(stock.getCount() - request.getNum());
                    return stockRepository.save(stock)
                            .thenReturn("訂單創建成功:" + request.getOrderId());
                });
    }
}
  • 優勢用極少數線程(如CPU核心數4,線程數4)就能支撐每秒數千請求,慢接口的“等待時間”不會占用線程,快接口完全不受影響。

第三層:長效治理——從“被動解決”到“主動優化”

隔離和架構優化能減少慢接口的影響,但最好的方案是“讓慢接口變快”,并建立監控體系提前預警。

1. 慢接口主動優化(從根源減少問題)

  • 強制超時控制所有慢調用(DB、RPC)必須設超時,避免線程無限等待:
// DB查詢超時(MyBatis為例)
<select id="queryStock" timeout="500"> <!-- 超時500ms,超過則中斷 -->
    select count from stock where product_id = #{productId}
</select>
// RPC調用超時(Dubbo為例)
@Reference(timeout = 1000) // 超時1秒
private StockService stockService;
  • 異步化改造非實時接口徹底異步,不占用業務線程池:
// 報表導出接口:投遞任務到MQ,立即返回
@GetMapping("/export")
public String exportReport() {
    String taskId = UUID.randomUUID().toString();
    // 投遞任務到Kafka/RabbitMQ
    kafkaTemplate.send("report-export-topic", new ExportTask(taskId, "202405"));
    return "導出任務已發起,任務ID:" + taskId(用戶可通過任務ID查詢進度);
}


// 消費者服務:獨立線程池處理導出(完全不占用業務線程)
@KafkaListener(topics = "report-export-topic")
public void handleExportTask(ExportTask task) {
    // 報表導出邏輯(耗時10分鐘也沒關系)
    reportService.export(task.getDate(), task.getTaskId());
}
  • 根源性能優化

DB層面:慢查詢加索引(如ALTER TABLE stock ADD INDEX idx_product_id (product_id))、拆分大表、用分頁替代全量查詢;

緩存層面:熱點數據用Redis緩存(如商品庫存),減少DB查詢;

外部依賴:第三方接口慢則加本地緩存或降級(如天氣接口超時返回默認值)。

2. 監控告警體系(提前發現風險)

  • 核心監控指標(每個線程池獨立監控):

圖片

  • 落地工具:Prometheus + Grafana + AlertManager:

用micrometer采集線程池指標,暴露給Prometheus;

Grafana創建“線程池監控面板”,直觀展示每個池的活躍線程、隊列等待數;

AlertManager配置告警規則,當指標超過閾值時,通過企業微信/釘釘通知工程師。

三、總結:分階段落地建議

面對“快慢接口資源競爭”問題,不用追求一步到位,可按以下階段落地:

  1. 緊急階段(1-2天)用艙壁模式拆分線程池,按業務優先級綁定核心/非核心接口,快速止損,保證核心業務穩定。
  2. 優化階段(1-2周)為慢接口加超時、異步化改造,引入動態隔離(監控+配置中心),應對“臨時慢接口”問題。
  3. 長期階段(1-3個月)試點響應式編程(如非核心接口先遷移),建立完善的監控告警體系,定期優化慢接口,從根源杜絕問題。

通過這套“隔離+優化+監控”的方案,不僅能解決眼前的線程池資源競爭問題,還能讓系統架構更彈性、更健壯,從容應對高并發場景下的各種挑戰。

責任編輯:武曉燕 來源: Fox愛分享
相關推薦

2024-09-30 08:54:10

2013-06-17 10:40:32

三層交換機交換機故障交換機

2009-12-21 14:12:30

路由器配置故障

2018-09-18 11:28:01

2010-01-12 16:33:08

交換機故障

2009-02-11 09:35:00

DHCP服務器故障

2010-08-26 09:06:44

路由器轉發故障

2009-12-14 18:18:10

路由器轉發故障

2009-11-26 14:03:35

無線路由器

2018-08-10 00:03:08

網速網絡連接Wi-Fi

2025-03-03 00:13:50

2010-01-15 14:00:51

三層交換接入解決方案

2011-07-29 09:56:32

三層交換機負載均衡

2022-05-31 09:01:13

GitHub工具安全

2009-11-25 14:44:04

無線路由器故障無線AP

2009-12-21 13:30:56

54M無線路由器

2010-01-06 17:46:09

三層交換接入解決方案

2025-06-17 06:40:45

DockerDocker鏡像

2009-12-28 16:27:46

2021-04-21 07:37:19

JVM復盤 日志
點贊
收藏

51CTO技術棧公眾號

国产一级在线视频| 免费不卡av在线| 91精品国产乱码久久久久| 久久高清免费| 欧美美女喷水视频| 日本一区二区三区视频免费看| 欧美日韩综合一区二区三区| 国产日产精品一区二区三区四区的观看方式 | 久久天堂av综合合色蜜桃网| 日本欧美在线视频| 国产三级精品三级观看| 亚洲精品国产九九九| 亚洲福中文字幕伊人影院| 精品在线一区| 天堂网中文字幕| 91综合视频| 欧美成人精品1314www| 久草青青在线观看| 免费不卡视频| 国产成人精品影院| 88国产精品欧美一区二区三区| 婷婷色一区二区三区| 91视频成人| 亚洲一区二区高清| 日本不卡高清视频一区| 国产丰满果冻videossex| 亚洲国产一区二区精品专区| 亚洲香蕉av在线一区二区三区| 老司机午夜性大片| 美女91在线看| 国产精品日韩精品欧美在线| 成人av影视在线| 亚洲中文无码av在线| 欧美福利一区| 中文字幕亚洲第一| 538国产视频| 成人豆花视频| 色中色一区二区| 欧美乱做爰xxxⅹ久久久| 国产精品四虎| 99久久综合狠狠综合久久| 国产在线日韩在线| 国产精品视频免费播放| 欧美激情视频一区二区三区免费| 亚洲欧美综合另类中字| 99热超碰在线| 成人在线分类| 欧美日韩精品在线观看| 老司机午夜免费福利视频| 国产高清自拍视频在线观看| 成人午夜精品在线| 国产精品久久久久久久7电影| 久热精品在线观看| 天天综合国产| 亚洲天堂影视av| 国产又粗又长又爽| 涩爱av色老久久精品偷偷鲁| 色综合天天在线| 久久久久久免费看| 在线中文字幕视频观看| 国产精品少妇自拍| 激情视频一区二区| 亚洲黄色小说网址| 国产麻豆成人精品| 成人免费福利在线| 中文字幕一区二区三区波野结| 免费国产自线拍一欧美视频| 国内精品久久久久影院 日本资源| 免费在线观看h片| 精品国产91| 精品亚洲aⅴ在线观看| 蜜臀一区二区三区精品免费视频 | 日本伊人精品一区二区三区介绍| 800av免费在线观看| 国产情侣一区| 日本欧美一二三区| 怡春院在线视频| 国产综合色在线| 亚洲自拍偷拍第一页| www香蕉视频| 99久久精品免费看| 茄子视频成人在线观看| yw在线观看| 1000部国产精品成人观看| 亚洲黄色网址在线观看| 欧美xxxx视频| 欧美性69xxxx肥| 手机av在线网| aiss精品大尺度系列| 亚洲男人天堂视频| 黄色片网站在线播放| 中文字幕免费一区二区| 国语自产精品视频在免费| 日韩手机在线视频| 极品美女销魂一区二区三区免费| 99视频在线播放| 欧洲伦理片一区 二区 三区| 国产精品视频九色porn| 男人添女人下部视频免费| 久久久男人天堂| 欧美在线|欧美| 97免费公开视频| 妖精一区二区三区精品视频 | 成人片在线看| 欧美日韩另类在线| 中文国产在线观看| 伊人精品一区| 色综合老司机第九色激情| 天堂网免费视频| 国产精品自拍一区| 欧美精品国产精品久久久| 尤物视频在线看| 在线亚洲免费视频| 大桥未久恸哭の女教师| 91亚洲国产高清| 清纯唯美亚洲激情| 亚洲av无码一区二区乱子伦| 国产精品免费看片| 日本免费一级视频| 亚洲综合色婷婷在线观看| 亚洲天堂日韩电影| 日韩 国产 在线| 韩国三级中文字幕hd久久精品| 久久九九视频| 日本精品600av| 欧美日韩国产免费| 国产三级av在线播放| 日韩视频二区| 91传媒免费看| 免费a级在线播放| 色一区在线观看| 国产精品一区二区人妻喷水| 一区二区三区在线电影| 国产美女精品视频| 国产在线观看黄| 欧美日韩国产精品| 国产免费a级片| 一区二区三区毛片免费| 国产日韩欧美中文在线播放| 激情小视频在线观看| 欧美视频在线视频| 国产乱了高清露脸对白| 亚洲国产一区二区精品专区| 国产福利久久精品| 日韩影视在线| 日韩免费观看高清完整版 | 日韩午夜电影网| 国产精品h片在线播放| 奇米影视888狠狠狠777不卡| 欧美日韩美女视频| 人妻丰满熟妇aⅴ无码| 99综合视频| 久久国产精品一区二区三区四区| 国产不卡123| 日韩二区三区在线| youjizz在线视频| 久久久久国产精品麻豆| 免费激情视频在线观看| 日本一区二区三区视频| 国产精选久久久久久| 1区2区3区在线观看| 欧美日韩mp4| 亚洲波多野结衣| 国产精品夜夜嗨| 欧美中日韩在线| 欧美日韩导航| 国产成人+综合亚洲+天堂| 免费在线毛片| 91黄色免费观看| 亚洲天堂网一区二区| 日韩有码一区二区三区| 日韩电影在线播放| 欧美午夜三级| 久久久久北条麻妃免费看| 国产美女www爽爽爽视频| 亚洲欧美激情小说另类| 国产无套粉嫩白浆内谢的出处| 精品一区二区三| 国产精品视频免费在线| 日本在线免费中文字幕| 91精品欧美综合在线观看最新| 蜜臀av午夜精品久久| 国产高清在线精品| 久久久久久久久久久综合| 国产精品自在| 日本一欧美一欧美一亚洲视频| 男人av在线| 疯狂蹂躏欧美一区二区精品| 538精品视频| 麻豆国产精品官网| 中文字幕中文字幕99| 日韩欧美激情电影| 欧美劲爆第一页| 国产一级二级三级在线观看| 欧美吞精做爰啪啪高潮| 在线观看黄网址| 成人高清av在线| 精品999在线| 欧美黄色一区二区| 精品一区二区三区视频日产| 欧美大电影免费观看| 国产一区二区三区丝袜| 朝桐光av在线一区二区三区| 亚洲精选在线视频| 国产精品一区二区人妻喷水| 三级久久三级久久| 一本色道久久99精品综合| 97色婷婷成人综合在线观看| 97成人超碰免| 欧美日韩在线资源| 精品剧情在线观看| 国产污视频网站| 亚洲va国产va欧美va观看| 人人人妻人人澡人人爽欧美一区| 国产在线视视频有精品| 日本福利视频一区| 成人写真视频| 国产精品免费一区二区三区| jizz欧美| 欧美一区二三区| 成人高清免费在线| 亚洲人成网站777色婷婷| 黄色aaa大片| 884aa四虎影成人精品一区| 国产午夜性春猛交ⅹxxx| 日韩一区中文字幕| 精品无码国产污污污免费网站| 国产福利91精品一区| 亚洲性生活网站| 99av国产精品欲麻豆| 成人一级生活片| 91亚洲自偷观看高清| 美脚丝袜一区二区三区在线观看| www.成人| 91精品中文在线| 久久天堂av| 韩国19禁主播vip福利视频| 一本一道波多野毛片中文在线| 亚洲国产精久久久久久 | 欧美一区二视频| 男操女视频网站| 天天做天天摸天天爽国产一区| 日本高清不卡免费| 国产精品青草久久| 实拍女处破www免费看| 成人中文字幕合集| 日韩不卡的av| 久久电影网站中文字幕| av无码精品一区二区三区| 一二三区精品| 久久免费视频3| 亚洲激情二区| 老司机激情视频| 亚洲一区欧美| 成年人深夜视频| 欧美另类亚洲| 无码人妻精品一区二区蜜桃百度| 91精品综合久久久久久久久久久| 在线一区高清| 国产精品毛片久久| 中文字幕乱码一区二区三区| 日本欧美韩国国产| 麻豆精品传媒视频| 免费看成人吃奶视频在线| 久久综合精品一区| 欧美调教在线| 九九九九久久久久| 美女网站色精品尤物极品姐弟| 国产精品久久久久免费| 欧美调教视频| 欧美日韩在线高清| 国产一区毛片| 亚洲午夜在线观看| 欧美激情1区2区| 每日在线观看av| 国产精品亚洲产品| 欧美三级午夜理伦三级富婆| 看片的网站亚洲| 三级性生活视频| 国产精品88888| av网站免费在线播放| 久久只精品国产| 中国毛片在线观看| 久久综合九色综合97婷婷| 91动漫免费网站| 亚洲精选在线视频| av资源免费观看| 欧美区在线观看| 午夜精品久久久久久久99热黄桃| 精品国产三级电影在线观看| 三级毛片在线免费看| 亚洲一区二区久久久| 尤物视频在线免费观看| 97精品国产aⅴ7777| 日韩电影免费观| 成人黄色中文字幕| 国产精品欧美一区二区三区不卡 | 日韩中文字幕第一页| www视频在线免费观看| 欧美一区二区影院| 日本电影久久久| 高清视频一区二区三区| 日韩三级视频| 波多野结衣 作品| 久久免费高清| 男人操女人下面视频| 国产丝袜在线精品| 激情五月婷婷在线| 在线观看不卡一区| 无码精品人妻一区二区| 日韩中文在线中文网三级| 国产精品探花在线| 日本一区二区在线免费播放| 91午夜精品| 亚洲国产精品视频一区| 欧美二区不卡| 国内自拍第二页| 26uuu亚洲| 欧美成人综合色| 欧美日韩激情一区二区三区| 天堂v在线观看| 久久香蕉频线观| 欧美日韩123区| 国产一区二区三区高清| 91久久电影| 国产欧美高清在线| av电影在线观看完整版一区二区| 国产成人免费在线观看视频| 天天操天天综合网| 可以免费观看的毛片| 日韩在线观看网站| 性感女国产在线| 91久久久国产精品| 日韩电影免费网站| 国产男女无遮挡| 粉嫩av亚洲一区二区图片| 欧美特级一级片| 欧美日韩在线播放三区四区| 日本韩国一区| 欧美一级在线播放| 精品按摩偷拍| 日韩成人三级视频| 久久97超碰国产精品超碰| 91网站免费视频| 欧美午夜精品久久久久久久| 一级黄色小视频| 日韩在线观看你懂的| 日本欧美韩国| 久久伊人一区二区| 天堂av在线一区| 亚洲国产无码精品| 福利微拍一区二区| 欧美性孕妇孕交| 琪琪亚洲精品午夜在线| 欧美做受69| 亚洲爆乳无码专区| 2014亚洲片线观看视频免费| 美日韩一二三区| 亚洲人成网站999久久久综合| 深夜成人在线| 久久99精品久久久久久水蜜桃| 国产视频一区三区| 91视频啊啊啊| 欧美午夜片欧美片在线观看| 你懂的在线看| 国产精品国产三级国产专播精品人 | 日本少妇xxxx软件| 一区二区三区欧美激情| 在线观看xxxx| 久久91亚洲精品中文字幕| 亚洲性视频在线| 国产精品www在线观看| 91丨porny丨中文| 精品黑人一区二区三区| 在线电影欧美日韩一区二区私密| 日本欧美在线| 欧美美女黄色网| 成人精品电影在线观看| 亚洲自拍一区在线观看| 日韩电影大片中文字幕| 97人澡人人添人人爽欧美| 久99久视频| 日本vs亚洲vs韩国一区三区 | 91嫩草精品| 鲁一鲁一鲁一鲁一色| 97精品国产97久久久久久久久久久久 | 亚洲精品一区二区口爆| 欧美成人小视频| 日韩理论电影中文字幕| wwwwww.色| 亚洲一区视频在线观看视频| 五月婷婷在线观看视频| 国产91亚洲精品| 午夜欧美精品| 给我免费观看片在线电影的| 91精品福利在线| yellow字幕网在线| 三区精品视频| 国产精品一品视频| 欧美男人天堂网|