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

從20s優化到500ms,我用了這三招

開發 前端
本文將會接著接口性能優化這個話題,從實戰的角度出發,聊聊我是如何優化一個慢查詢接口的。

前言

接口性能問題,對于從事后端開發的同學來說,是一個繞不開的話題。想要優化一個接口的性能,需要從多個方面著手。

其實,我之前也寫過一篇接口性能優化相關的文章《??聊聊接口性能優化的11個小技巧??》,發表之后在全網廣受好評,感興趣的小伙們可以仔細看看。

本文將會接著接口性能優化這個話題,從實戰的角度出發,聊聊我是如何優化一個慢查詢接口的。

上周我優化了一下線上的批量評分查詢接口,將接口性能從最初的20s?,優化到目前的500ms以內。

總體來說,用三招就搞定了。

到底經歷了什么?

1. 案發現場

我們每天早上上班前,都會收到一封線上慢查詢接口匯總郵件,郵件中會展示接口地址、調用次數、最大耗時、平均耗時和traceId等信息。

我看到其中有一個批量評分查詢接口,最大耗時達到了20s?,平均耗時也有2s。

用skywalking查看該接口的調用信息,發現絕大數情況下,該接口響應還是比較快的,大部分情況都是500s左右就能返回,但也有少部分超過了20s的請求。

這個現象就非常奇怪了。

莫非跟數據有關?

比如:要查某一個組織的數據,是非常快的。但如果要查平臺,即組織的根節點,這種情況下,需要查詢的數據量非常大,接口響應就可能會非常慢。

但事實證明不是這個原因。

很快有個同事給出了答案。

他們在結算單列表頁面中,批量請求了這個接口,但他傳參的數據量非常大。

怎么回事呢?

當初說的需求是這個接口給分頁的列表頁面調用,每頁大小有:10、20、30、50、100,用戶可以選擇。

換句話說,調用批量評價查詢接口,一次性最多可以查詢100條記錄。

但實際情況是:結算單列表頁面還包含了很多訂單。基本上每一個結算單,都有多個訂單。調用批量評價查詢接口時,需要把結算單和訂單的數據合并到一起。

這樣導致的結果是:調用批量評價查詢接口時,一次性傳入的參數非常多,入參list中包含幾百、甚至幾千條數據都有可能。

2. 現狀

如果一次性傳入幾百或者幾千個id,批量查詢數據還好,可以走主鍵索引,查詢效率也不至于太差。

但那個批量評分查詢接口,邏輯不簡單。

偽代碼如下:

public List<ScoreEntity> query(List<SearchEntity> list) {
//結果
List<ScoreEntity> result = Lists.newArrayList();
//獲取組織id
List<Long> orgIds = list.stream().map(SearchEntity::getOrgId).collect(Collectors.toList());
//通過regin調用遠程接口獲取組織信息
List<OrgEntity> orgList = feginClient.getOrgByIds(orgIds);

for(SearchEntity entity : list) {
//通過組織id找組織code
String orgCode = findOrgCode(orgList, entity.getOrgId());

//通過組合條件查詢評價
ScoreSearchEntity scoreSearchEntity = new ScoreSearchEntity();
scoreSearchEntity.setOrgCode(orgCode);
scoreSearchEntity.setCategoryId(entity.getCategoryId());
scoreSearchEntity.setBusinessId(entity.getBusinessId());
scoreSearchEntity.setBusinessType(entity.getBusinessType());
List<ScoreEntity> resultList = scoreMapper.queryScore(scoreSearchEntity);

if(CollectionUtils.isNotEmpty(resultList)) {
ScoreEntity scoreEntity = resultList.get(0);
result.add(scoreEntity);
}
}
return result;
}

其實在真實場景中,代碼比這個復雜很多,這里為了給大家演示,簡化了一下。

最關鍵的地方有兩點:

  • 在接口中遠程調用了另外一個接口
  • 需要在for循環中查詢數據

其中的第1點,即:在接口中遠程調用了另外一個接口,這個代碼是必須的。

因為如果在評價表?中冗余一個組織code字段,萬一哪天組織表中的組織code有修改,不得不通過某種機制,通知我們同步修改評價表的組織code,不然就會出現數據不一致的問題。

很顯然,如果要這樣調整的話,業務流程上要改了,代碼改動有點大。

所以,還是先保持在接口中遠程調用吧。

這樣看來,可以優化的地方只能在:for循環中查詢數據。

3. 第一次優化

由于需要在for循環中,每條記錄都要根據不同的條件,查詢出想要的數據。

由于業務系統調用這個接口時,沒有傳id?,不好在where?條件中用id in (...),這方式批量查詢數據。

其實,有一種辦法不用循環查詢,一條sql就能搞定需求:使用or?關鍵字拼接,例如:(org_code='001' and category_id=123 and business_id=111 and business_type=1) or? (org_code='002' and category_id=123 and business_id=112 and business_type=2) or (org_code='003' and category_id=124 and business_id=117 and business_type=1)...

這種方式會導致sql語句會非常長,性能也會很差。

其實還有一種寫法:

where (a,b) in ((1,2),(1,3)...)

不過這種sql,如果一次性查詢的數據量太多的話,性能也不太好。

居然沒法改成批量查詢,就只能優化單條查詢sql的執行效率了。

首先從索引入手,因為改造成本最低。

第一次優化是優化索引。

評價表之前建立一個business_id字段的普通索引,但是從目前來看效率不太理想。

由于我果斷加了聯合索引:

alter table user_score add index  `un_org_category_business` (`org_code`,`category_id`,`business_id`,`business_type`) USING BTREE;

該聯合索引由:org_code、category_id、business_id和business_type四個字段組成。

經過這次優化,效果立竿見影。

批量評價查詢接口最大耗時,從最初的20s?,縮短到了5s左右。

4. 第二次優化

由于需要在for循環中,每條記錄都要根據不同的條件,查詢出想要的數據。

只在一個線程中查詢數據,顯然太慢。

那么,為何不能改成多線程調用?

第二次優化,查詢數據庫由單線程?改成多線程。

但由于該接口是要將查詢出的所有數據,都返回回去的,所以要獲取查詢結果。

使用多線程調用,并且要獲取返回值,這種場景使用java8中的CompleteFuture非常合適。

代碼調整為:

CompletableFuture[] futureArray = dataList.stream()
.map(data -> CompletableFuture
.supplyAsync(() -> query(data), asyncExecutor)
.whenComplete((result, th) -> {
})).toArray(CompletableFuture[]::new);
CompletableFuture.allOf(futureArray).join();

CompleteFuture?的本質是創建線程?執行,為了避免產生太多的線程,所以使用線程池是非常有必要的。

優先推薦使用ThreadPoolExecutor類,我們自定義線程池。

具體代碼如下:

ExecutorService threadPool = new ThreadPoolExecutor(
8, //corePoolSize線程池中核心線程數
10, //maximumPoolSize 線程池中最大線程數
60, //線程池中線程的最大空閑時間,超過這個時間空閑線程將被回收
TimeUnit.SECONDS,//時間單位
new ArrayBlockingQueue(500), //隊列
new ThreadPoolExecutor.CallerRunsPolicy()); //拒絕策略

也可以使用ThreadPoolTaskExecutor類創建線程池:

@Configuration
public class ThreadPoolConfig {

/**
* 核心線程數量,默認1
*/
private int corePoolSize = 8;

/**
* 最大線程數量,默認Integer.MAX_VALUE;
*/
private int maxPoolSize = 10;

/**
* 空閑線程存活時間
*/
private int keepAliveSeconds = 60;

/**
* 線程阻塞隊列容量,默認Integer.MAX_VALUE
*/
private int queueCapacity = 1;

/**
* 是否允許核心線程超時
*/
private boolean allowCoreThreadTimeOut = false;


@Bean("asyncExecutor")
public Executor asyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(corePoolSize);
executor.setMaxPoolSize(maxPoolSize);
executor.setQueueCapacity(queueCapacity);
executor.setKeepAliveSeconds(keepAliveSeconds);
executor.setAllowCoreThreadTimeOut(allowCoreThreadTimeOut);
// 設置拒絕策略,直接在execute方法的調用線程中運行被拒絕的任務
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
// 執行初始化
executor.initialize();
return executor;
}
}

經過這次優化,接口性能也提升了5倍。

從5s?左右,縮短到1s左右。

但整體效果還不太理想。

5. 第三次優化

經過前面的兩次優化,批量查詢評價接口性能有一些提升,但耗時還是大于1s。

出現這個問題的根本原因是:一次性查詢的數據太多。

那么,我們為什么不限制一下,每次查詢的記錄條數呢?

第三次優化,限制一次性查詢的記錄條數。其實之前也做了限制,不過最大是2000條記錄,從目前看效果不好。

限制該接口一次只能查200?條記錄,如果超過200條則會報錯提示。

如果直接對該接口做限制,則可能會導致業務系統出現異常。

為了避免這種情況的發生,必須跟業務系統團隊一起討論一下優化方案。

主要有下面兩個方案:

5.1 前端做分頁

在結算單列表頁中,每個結算單默認只展示1個訂單,多余的分頁查詢。

這樣的話,如果按照每頁最大100條記錄計算的話,結算單和訂單最多一次只能查詢200條記錄。

這就需要業務系統的前端做分頁功能?,同時后端接口要調整支持分頁查詢。

但目前現狀是前端沒有多余開發資源。

由于人手不足的原因,這套方案目前只能暫時擱置。

5.2 分批調用接口

業務系統后端之前是一次性?調用評價查詢接口,現在改成分批調用。

比如:之前查詢500條記錄,業務系統只調用一次查詢接口。

現在改成業務系統每次只查100條記錄,分5批調用,總共也是查詢500條記錄。

這樣不是變慢了嗎?

答:如果那5批調用評價查詢接口的操作,是在for循環中單線程順序的,整體耗時當然可能會變慢。

但業務系統也可以改成多線程調用,只需最終匯總結果即可。

此時,有人可能會問題:在評價查詢接口的服務器多線程調用,跟在其他業務系統中多線程調用不是一回事?

還不如把批量評價查詢接口的服務器中,線程池的最大線程數調大一點?

顯然你忽略了一件事:線上應用一般不會被部署成單點。絕大多數情況下,為了避免因為服務器掛了,造成單點故障,基本會部署至少2個節點。這樣即使一個節點掛了,整個應用也能正常訪問。

當然也可能會出現這種情況:假如掛了一個節點,另外一個節點可能因為訪問的流量太大了,扛不住壓力,也可能因此掛掉。

換句話說,通過業務系統中的多線程調用接口,可以將訪問接口的流量負載均衡到不同的節點上。

他們也用8個線程,將數據分批,每批100條記錄,最后將結果匯總。

經過這次優化,接口性能再次提升了1倍。

從1s?左右,縮短到小于500ms。

溫馨提醒一下,無論是在批量查詢評價接口查詢數據庫,還是在業務系統中調用批量查詢評價接口,使用多線程調用,都只是一個臨時方案,并不完美。

這樣做的原因主要是為了先快速解決問題,因為這種方案改動是最小的。

要從根本上解決問題,需要重新設計這一套功能,需要修改表結構,甚至可能需要修改業務流程。但由于牽涉到多條業務線,多個業務系統,只能排期慢慢做了。

責任編輯:武曉燕 來源: 蘇三說技術
相關推薦

2022-08-14 14:32:06

接口優化

2022-09-19 08:41:02

數據查詢分離

2023-09-27 08:21:00

查詢分離數據API

2024-05-28 08:47:52

2024-08-30 09:31:36

2024-09-29 08:21:06

2025-11-11 04:00:00

2023-05-14 17:16:22

分類樹SpringBoot

2022-09-27 08:40:44

慢查詢MySQL定位優化

2021-01-14 16:28:15

蠕蟲病毒刪除系統安全專家

2022-07-05 10:50:31

數據庫查詢實戰

2018-01-02 10:46:24

微信騰訊表情

2020-09-01 11:10:39

數據庫鏈接池HikariCP

2024-03-04 08:29:33

數據定制化Java

2024-07-30 14:26:52

2024-04-17 08:21:44

2020-03-05 09:42:43

JavaJava虛擬機數據庫

2019-06-20 11:20:25

sql優化數據庫

2020-02-23 17:15:29

SQL分析查詢

2025-09-04 02:20:00

點贊
收藏

51CTO技術棧公眾號

日本不卡视频一区| 国产成人永久免费视频| 中文字幕一区二区三区免费看| 成人激情开心网| 日韩一级高清毛片| 成人免费在线小视频| 成人免费高清在线播放| 国产一区不卡精品| 欧美最猛性xxxx| 老熟妇高潮一区二区三区| 黑色丝袜福利片av久久| 欧美午夜精品久久久久久超碰| 国产激情片在线观看| 欧美另类自拍| 成人性生交大片| 国产精品美乳一区二区免费 | 激情五月色综合国产精品| 8x8x8国产精品| 亚洲乱码中文字幕久久孕妇黑人| 高潮毛片在线观看| 国产亚洲人成网站| 国产高清精品一区二区三区| 波多野结衣电车| 亚洲免费观看| 粗暴蹂躏中文一区二区三区| 在线观看国产精品一区| 国产精品极品国产中出| 51午夜精品国产| 成人黄色一区二区| 国产亚洲成av人片在线观看| 亚洲精品国产成人久久av盗摄| 日本在线视频不卡| 婷婷五月综合激情| 懂色av噜噜一区二区三区av| 亚洲va国产va天堂va久久| 国产91精品看黄网站在线观看| 亚洲国产国产亚洲一二三| 久久色精品视频| 美国黑人一级大黄| 九九综合久久| 亚洲视频国产视频| 欧美 变态 另类 人妖| 9l视频自拍九色9l视频成人| 91精品国产乱码| av在线网址导航| a屁视频一区二区三区四区| 欧美午夜影院在线视频| 国产综合中文字幕| freexxx性亚洲精品| 亚洲资源在线观看| 国产91在线亚洲| 18av在线播放| 亚洲综合免费观看高清完整版| 天天想你在线观看完整版电影免费| 美女隐私在线观看| 亚洲欧洲中文日韩久久av乱码| 亚洲一区二区不卡视频| 欧美一区二区三区在线观看免费| 国产精品伦一区二区三级视频| 亚洲一区二区三区涩| 午夜免费福利在线观看| 国产精品久久久久四虎| 国产精品夜夜夜爽张柏芝| 免费av网站在线看| 亚洲六月丁香色婷婷综合久久 | a在线免费观看| 亚洲人成伊人成综合网小说| 国产又粗又大又爽的视频| 超碰在线观看免费版| 亚洲精选免费视频| 美脚丝袜脚交一区二区| 午夜不卡影院| 欧美午夜精品久久久久久超碰| 在线黄色免费观看| 久久9999免费视频| 亚洲成人在线网| 伊人网在线视频观看| 日韩一区三区| 欧美激情中文字幕在线| 欧美激情黑白配| 日韩在线一区二区| 91精品视频在线播放| 丰满人妻一区二区三区免费视频| 成人国产精品免费网站| 欧洲成人一区二区| 成人影院在线观看| 五月天婷婷综合| 波多野结衣xxxx| a看欧美黄色女同性恋| 日韩精品极品毛片系列视频| 欧美人与禽zoz0善交| 午夜精品国产| 国产成人91久久精品| jizz国产视频| 久久久久久一二三区| 欧美精品一区二区性色a+v| 日韩精品卡一| 欧美日韩在线播放| 欧洲熟妇的性久久久久久| 国产一区二区三区四区五区| 久久99精品视频一区97| 日日夜夜狠狠操| 国产不卡视频在线播放| 日韩精品久久一区二区三区| 青草在线视频| 欧美私模裸体表演在线观看| 亚洲中文字幕无码一区| 久久大综合网| 日本免费久久高清视频| 亚洲精品久久久久久久久久久久久久 | 91麻豆精品国产91久久久平台| 久久久亚洲天堂| 在线免费a视频| 91在线小视频| 91成人综合网| 外国成人毛片| 国产亚洲一区二区精品| 国产午夜视频在线| 国产一区二区在线观看视频| 视频一区二区三区免费观看| 成人免费网站观看| 日韩亚洲欧美一区二区三区| 一级片黄色录像| 肉丝袜脚交视频一区二区| 国产精品香蕉视屏| 性欧美videos高清hd4k| 欧美人妖巨大在线| 婷婷色一区二区三区| 国产日产高清欧美一区二区三区| 98国产高清一区| 免费网站成人| 欧美日韩国产一区二区三区地区| 色婷婷在线影院| 亚洲欧美日韩国产一区| 精品免费国产| 九色porny丨首页入口在线| 欧美成人精品1314www| av成人免费网站| 精品综合免费视频观看| 中文字幕综合在线观看| 精品久久99| 久久精品亚洲精品| 一二区在线观看| 国产精品盗摄一区二区三区| 91制片厂毛片| 日本一区二区免费高清| 国产欧美日韩中文| 免费人成在线观看播放视频| 欧美日韩成人高清| 亚洲综合久久av一区二区三区| 麻豆一区二区在线| 在线国产99| 精品国产亚洲日本| 欧美猛交免费看| 国精品人妻无码一区二区三区喝尿| 一区二区三区高清不卡| www.com日本| 日韩视频不卡| 蜜桃免费一区二区三区| 欧美一区 二区 三区| 亚洲一级一级97网| 97精品人妻一区二区三区在线| 中文字幕一区二区三区色视频 | 欧美精品在欧美一区二区| 97成人在线| 91tv亚洲精品香蕉国产一区7ujn| 欧美色18zzzzxxxxx| 欧美视频完全免费看| 三级黄色在线观看| 懂色av噜噜一区二区三区av| 黄色国产一级视频| 欧美日韩性在线观看| 成人午夜激情网| 99色在线观看| 一区二区在线视频| 国产不卡精品视频| 午夜精品国产更新| 欧美丰满美乳xxⅹ高潮www| 精品制服美女久久| 国产成人永久免费视频| 国产一区二区三区电影在线观看| 成人午夜一级二级三级| 黄视频免费在线看| 中文字幕在线亚洲| 欧美性受xxxx狂喷水| 日本乱码高清不卡字幕| 精品自拍偷拍视频| 97精品国产露脸对白| 国内国产精品天干天干| 亚洲精品黄色| 在线看视频不卡| 日本三级久久| 91九色蝌蚪国产| 欧美电影免费看| 欧美成人在线影院| 欧美另类自拍| 精品国产3级a| 亚洲视频中文字幕在线观看| 亚洲成a人片在线不卡一二三区| 日本精品在线观看视频| 高清在线成人网| 欧美日韩中文不卡| 国产一区二区三区成人欧美日韩在线观看| 午夜老司机精品| 老司机成人在线| 亚洲一区二区免费| 日本.亚洲电影| 7777免费精品视频| 视频在线观看入口黄最新永久免费国产| 精品国产一区二区三区忘忧草| 中文字幕免费高清在线观看| 天天色综合天天| 欧美片一区二区| 国产精品久久久久久久久免费相片 | 男女视频网站在线观看| 综合天堂av久久久久久久| 日韩免费毛片| 美女主播精品视频一二三四| 亚洲va欧美va在线观看| 久久久久久久性潮| 欧美中文字幕在线播放| 91制片在线观看| 九九热视频这里只有精品| 欧美成人三区| 正在播放欧美视频| 狠狠色伊人亚洲综合网站l| 亚洲国产精品一区二区三区| а√天堂资源在线| 欧美一区二区在线免费播放| 亚洲综合一区中| 欧美色精品在线视频| 黄色av网站免费观看| 福利视频一区二区| 日韩 欧美 综合| 精品动漫一区二区| 日韩黄色一级大片| 欧美日韩久久久久| 国产一级片毛片| 欧美日韩一区二区三区| 四虎精品永久在线| 欧美午夜丰满在线18影院| 欧美日韩精品区| 黄网动漫久久久| 天天干天天干天天| 狠狠躁天天躁日日躁欧美| 久久黄色精品视频| 色哟哟日韩精品| 中日韩av在线| 欧美欧美欧美欧美首页| 91福利在线观看视频| 3751色影院一区二区三区| 在线观看毛片av| 91麻豆精品国产自产在线| 国产成人精品白浆久久69| 日韩精品一区二区在线观看| www.亚洲天堂.com| 精品999久久久| 日韩精品系列| 深夜福利日韩在线看| 巨大荫蒂视频欧美大片| 欧美日韩成人在线观看| 538在线视频| 奇米影视亚洲狠狠色| www.26天天久久天堂| 91日本在线观看| 牛牛精品成人免费视频| 欧美日韩国产免费一区二区三区| 日韩欧美高清在线播放| mm131午夜| 国产精品腿扒开做爽爽爽挤奶网站| 欧美 激情 在线| 久久91精品国产91久久小草| 国产老头和老头xxxx×| 91色.com| 亚洲一二三四五六区| 亚洲一区在线看| 亚洲成熟少妇视频在线观看| 欧美日韩不卡一区| 欧美自拍偷拍第一页| 亚洲图中文字幕| 国产日产一区二区| 欧美亚洲在线观看| 先锋影音一区二区| 国产无套精品一区二区| 日韩精品久久| 毛片在线播放视频| 麻豆成人av在线| 天天插天天射天天干| 国产精品久久久久久久裸模| 免费人成视频在线| 在线免费不卡视频| www.天堂av.com| 在线播放日韩欧美| av成人 com a| 国产精品免费一区| 鲁大师精品99久久久| 亚洲人久久久| 男女精品网站| 久久久精品人妻一区二区三区| 久久精品人人做人人综合| 免费在线观看亚洲| 欧美日韩黄色一区二区| 色视频在线观看免费| 欧美大尺度在线观看| 色豆豆成人网| 精品视频高清无人区区二区三区| 亚洲成人tv| 无码少妇一区二区三区芒果| 成人综合在线观看| 手机在线免费看片| 欧美自拍偷拍一区| 香蕉视频网站在线| 久久99久国产精品黄毛片入口| 国产一区影院| 欧美一区二区三区精美影视| 18成人免费观看视频| 精品国产乱码久久久久久1区二区 91网址在线观看精品 | 亚洲成av人影院在线观看网| 亚洲熟妇无码久久精品| 亚洲人成在线观看| 9lporm自拍视频区在线| 91视频网页| 91精品国产自产在线观看永久∴| 日韩欧美黄色大片| 久久在线免费观看| 日本少妇在线观看| 日韩精品中午字幕| 主播国产精品| 91精品视频在线播放| 天堂美国久久| 亚洲天堂av一区二区| 国产精品色眯眯| 在线观看免费黄色小视频| 亚洲一级黄色av| 日本欧美韩国| 日韩欧美一区二区在线观看 | 亚洲精品一区二区妖精| 中文字幕在线综合| 国产精品乱码人人做人人爱| 一级特黄免费视频| 在线精品视频视频中文字幕| 456亚洲精品成人影院| 日本不卡一区| 日韩av高清在线观看| 久久久久亚洲AV成人无在| 日本高清免费不卡视频| 午夜视频在线播放| 欧洲美女免费图片一区| 蜜桃a∨噜噜一区二区三区| 日本精品免费在线观看| 久久精品人人做人人爽人人| 免费在线不卡av| 日韩中文字幕在线观看| 成人精品在线| 国产美女主播在线| 91在线国内视频| 一级一片免费看| www.久久久久久.com| 国产亚洲字幕| 国产高清av在线播放| 久久亚洲二区三区| 中文字幕手机在线视频| 色一区av在线| 日本在线一区二区三区| 日韩中文字幕在线免费| 久久嫩草精品久久久精品一| 中文字幕在线网站| 欧美理论电影在线观看| 精品福利网址导航| 亚洲熟妇av一区二区三区| 国产精品亲子伦对白| 精品乱子伦一区二区| **欧美日韩vr在线| 日韩欧美视频专区| 国产xxx在线观看 | 99热这里只有精品3| 国模极品一区二区三区| 国产一区不卡| 免费欧美一级片| 欧美日韩亚洲网| 日本电影全部在线观看网站视频| 97影院在线午夜| 天使萌一区二区三区免费观看| 久久精品一区二区三区四区五区| 亚洲а∨天堂久久精品9966| 精品123区| 成人区一区二区| 国产亚洲污的网站| 亚洲成熟女性毛茸茸| 国产精品狠色婷| 欧美国产三级| 日本欧美一区二区三区不卡视频| 精品日韩一区二区三区| japanese23hdxxxx日韩| 国产a级黄色大片| 日本一区二区成人| 好吊色一区二区三区| 91精品久久久久久久| 国产亚洲精品bv在线观看| 亚洲av无码一区二区三区在线|