国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

聊聊接口優(yōu)化的幾種方法

共 8466字,需瀏覽 17分鐘

 ·

2022-08-02 01:00

關(guān)注我們,設(shè)為星標(biāo),每天7:40不見不散,架構(gòu)路上與您共享

回復(fù)架構(gòu)師獲取資源


大家好,我是你們的朋友架構(gòu)君,一個(gè)會(huì)寫代碼吟詩的架構(gòu)師。

'javajgs.com';


juejin.cn/post/7043423820543164453

背景

我負(fù)責(zé)的系統(tǒng)到2021年初完成了功能上的建設(shè),開始進(jìn)入到推廣階段。隨著推廣的逐步深入,收到了很多好評(píng)的同時(shí)也收到了很多對(duì)性能的吐槽。剛剛收到吐槽的時(shí)候,我們的心情是這樣的:
我有點(diǎn)不信
當(dāng)越來越多對(duì)性能的吐槽反饋到我們這里的時(shí)候,我們意識(shí)到,接口性能的問題的優(yōu)先級(jí)必須提高了。然后我們就跟蹤了1周的接口性能監(jiān)控,這個(gè)時(shí)候我們的心情是這樣的:
自己體會(huì)這種心情
有20多個(gè)慢接口,5個(gè)接口響應(yīng)時(shí)間超過5s,1個(gè)超過10s,其余的都在2s以上,穩(wěn)定性不足99.8%。作為一個(gè)優(yōu)秀的后端程序員,這個(gè)數(shù)據(jù)肯定是不能忍的,我們馬上就進(jìn)入了漫長的接口優(yōu)化之路。本文就是對(duì)我們漫長工作歷程的一個(gè)總結(jié)。
正文開始!

哪些問題會(huì)引起接口性能問題?

這個(gè)問題的答案非常多,需要根據(jù)自己的業(yè)務(wù)場(chǎng)景具體分析。這里做一個(gè)不完全的總結(jié):
  • 數(shù)據(jù)庫慢查詢
    • 深度分頁問題
    • 未加索引
    • 索引失效
    • join過多
    • 子查詢過多
    • in中的值太多
    • 單純的數(shù)據(jù)量過大
  • 業(yè)務(wù)邏輯復(fù)雜
    • 循環(huán)調(diào)用
    • 順序調(diào)用
  • 線程池設(shè)計(jì)不合理
  • 鎖設(shè)計(jì)不合理
  • 機(jī)器問題(fullGC,機(jī)器重啟,線程打滿)

問題解決

本文列進(jìn)的慢查詢問題默認(rèn)都是基于 MySQL。

慢查詢(基于mysql)深度分頁

所謂的深度分頁問題,涉及到mysql分頁的原理。通常情況下,mysql的分頁是這樣寫的:
select name,code from student limit 100,20
含義當(dāng)然就是從student表里查100到120這20條數(shù)據(jù),mysql會(huì)把前120條數(shù)據(jù)都查出來,拋棄前100條,返回20條。當(dāng)分頁所以深度不大的時(shí)候當(dāng)然沒問題,隨著分頁的深入,sql可能會(huì)變成這樣:
select name,code from student limit 1000000,20
這個(gè)時(shí)候,mysql會(huì)查出來1000020條數(shù)據(jù),拋棄1000000條,如此大的數(shù)據(jù)量,速度一定快不起來。那如何解決呢?一般情況下,最好的方式是增加一個(gè)條件:
select name,code from student where id>1000000  limit 20
這樣,mysql會(huì)走主鍵索引,直接連接到1000000處,然后查出來20條數(shù)據(jù)。但是這個(gè)方式需要接口的調(diào)用方配合改造,把上次查詢出來的最大id以參數(shù)的方式傳給接口提供方,會(huì)有溝通成本(調(diào)用方:老子不改?。?。

慢查詢未加索引

這個(gè)是最容易解決的問題,我們可以通過
show create table xxxx(表名)
查看某張表的索引。具體加索引的語句網(wǎng)上太多了,不再贅述。不過順便提一嘴,加索引之前,需要考慮一下這個(gè)索引是不是有必要加,如果加索引的字段區(qū)分度非常低,那即使加了索引也不會(huì)生效。另外,加索引的alter操作,可能引起鎖表,執(zhí)行sql的時(shí)候一定要在低峰期(血淚史?。。。。?/section>

慢查詢索引失效

這個(gè)是慢查詢最不好分析的情況,雖然mysql提供了explain來評(píng)估某個(gè)sql的查詢性能,其中就有使用的索引。但是為啥索引會(huì)失效呢?mysql卻不會(huì)告訴咱,需要咱自己分析。大體上,可能引起索引失效的原因有這幾個(gè)(可能不完全):
慢查詢索引失效
需要特別提出的是,關(guān)于字段區(qū)分性很差的情況,在加索引的時(shí)候就應(yīng)該進(jìn)行評(píng)估。如果區(qū)分性很差,這個(gè)索引根本就沒必要加。區(qū)分性很差是什么意思呢,舉幾個(gè)例子,比如:
  • 某個(gè)字段只可能有3個(gè)值,那這個(gè)字段的索引區(qū)分度就很低。
  • 再比如,某個(gè)字段大量為空,只有少量有值;
  • 再比如,某個(gè)字段值非常集中,90%都是1,剩下10%可能是2,3,4....
進(jìn)一步的,那如果不符合上面所有的索引失效的情況,但是mysql還是不使用對(duì)應(yīng)的索引,是為啥呢?這個(gè)跟mysql的sql優(yōu)化有關(guān),mysql會(huì)在sql優(yōu)化的時(shí)候自己選擇合適的索引,很可能是mysql自己的選擇算法算出來使用這個(gè)索引不會(huì)提升性能,所以就放棄了。這種情況,可以使用force index 關(guān)鍵字強(qiáng)制使用索引(建議修改前先實(shí)驗(yàn)一下,是不是真的會(huì)提升查詢效率):
select name,code from student force index(XXXXXX) where name = '天才' 
其中xxxx是索引名。

join過多 or 子查詢過多

我把join過多 和子查詢過多放在一起說了。一般來說,不建議使用子查詢,可以把子查詢改成join來優(yōu)化。同時(shí),join關(guān)聯(lián)的表也不宜過多,一般來說2-3張表還是合適的。具體關(guān)聯(lián)幾張表比較安全是需要具體問題具體分析的,如果各個(gè)表的數(shù)據(jù)量都很少,幾百條幾千條,那么關(guān)聯(lián)的表的可以適當(dāng)多一些,反之則需要少一些。
另外需要提到的是,在大多數(shù)情況下join是在內(nèi)存里做的,如果匹配的量比較小,或者join_buffer設(shè)置的比較大,速度也不會(huì)很慢。但是,當(dāng)join的數(shù)據(jù)量比較大的時(shí)候,mysql會(huì)采用在硬盤上創(chuàng)建臨時(shí)表的方式進(jìn)行多張表的關(guān)聯(lián)匹配,這種顯然效率就極低,本來磁盤的IO就不快,還要關(guān)聯(lián)。
一般遇到這種情況的時(shí)候就建議從代碼層面進(jìn)行拆分,在業(yè)務(wù)層先查詢一張表的數(shù)據(jù),然后以關(guān)聯(lián)字段作為條件查詢關(guān)聯(lián)表形成map,然后在業(yè)務(wù)層進(jìn)行數(shù)據(jù)的拼裝。一般來說,索引建立正確的話,會(huì)比join快很多,畢竟內(nèi)存里拼接數(shù)據(jù)要比網(wǎng)絡(luò)傳輸和硬盤IO快得多。

in的元素過多

這種問題,如果只看代碼的話不太容易排查,最好結(jié)合監(jiān)控和數(shù)據(jù)庫日志一起分析。如果一個(gè)查詢有in,in的條件加了合適的索引,這個(gè)時(shí)候的sql還是比較慢就可以高度懷疑是in的元素過多。一旦排查出來是這個(gè)問題,解決起來也比較容易,不過是把元素分個(gè)組,每組查一次。想再快的話,可以再引入多線程。
進(jìn)一步的,如果in的元素量大到一定程度還是快不起來,這種最好還是有個(gè)限制
select id from student where id in (1,2,3 ...... 1000limit 200
當(dāng)然了,最好是在代碼層面做個(gè)限制
if (ids.size() > 200) {
    throw new Exception("單次查詢數(shù)據(jù)量不能超過200");
}

單純的數(shù)據(jù)量過大

這種問題,單純代碼的修修補(bǔ)補(bǔ)一般就解決不了了,需要變動(dòng)整個(gè)的數(shù)據(jù)存儲(chǔ)架構(gòu)?;蛘呤菍?duì)底層mysql分表或分庫+分表;或者就是直接變更底層數(shù)據(jù)庫,把mysql轉(zhuǎn)換成專門為處理大數(shù)據(jù)設(shè)計(jì)的數(shù)據(jù)庫。這種工作是個(gè)系統(tǒng)工程,需要嚴(yán)密的調(diào)研、方案設(shè)計(jì)、方案評(píng)審、性能評(píng)估、開發(fā)、測(cè)試、聯(lián)調(diào),同時(shí)需要設(shè)計(jì)嚴(yán)密的數(shù)據(jù)遷移方案、回滾方案、降級(jí)措施、故障處理預(yù)案。除了以上團(tuán)隊(duì)內(nèi)部的工作,還可能有跨系統(tǒng)溝通的工作,畢竟做了重大變更,下游系統(tǒng)的調(diào)用接口的方式有可能會(huì)需要變化。
出于篇幅的考慮,這個(gè)不再展開了,筆者有幸完整參與了一次億級(jí)別數(shù)據(jù)量的數(shù)據(jù)庫分表工作,對(duì)整個(gè)過程的復(fù)雜性深有體會(huì),后續(xù)有機(jī)會(huì)也會(huì)分享出來。

業(yè)務(wù)邏輯復(fù)雜

循環(huán)調(diào)用

這種情況,一般都循環(huán)調(diào)用同一段代碼,每次循環(huán)的邏輯一致,前后不關(guān)聯(lián)。比如說,我們要初始化一個(gè)列表,預(yù)置12個(gè)月的數(shù)據(jù)給前端:
List<Model> list = new ArrayList<>();
for(int i = 0 ; i < 12 ; i ++) {
    Model model = calOneMonthData(i); // 計(jì)算某個(gè)月的數(shù)據(jù),邏輯比較復(fù)雜,難以批量計(jì)算,效率也無法很高
    list.add(model);
}
這種顯然每個(gè)月的數(shù)據(jù)計(jì)算相互都是獨(dú)立的,我們完全可以采用多線程方式進(jìn)行:
// 建立一個(gè)線程池,注意要放在外面,不要每次執(zhí)行代碼就建立一個(gè),具體線程池的使用就不展開了
public static ExecutorService commonThreadPool = new ThreadPoolExecutor(5, 5, 300L,
        TimeUnit.SECONDS, new LinkedBlockingQueue<>(10), commonThreadFactory, new ThreadPoolExecutor.DiscardPolicy());

// 開始多線程調(diào)用
List<Future<Model>> futures = new ArrayList<>();
for(int i = 0 ; i < 12 ; i ++) {
    Future<Model> future = commonThreadPool.submit(() -> calOneMonthData(i););
    futures.add(future);
}

// 獲取結(jié)果
List<Model> list = new ArrayList<>();
try {
   for (int i = 0 ; i < futures.size() ; i ++) {
      list.add(futures.get(i).get());
   }
} catch (Exception e) {
   LOGGER.error("出現(xiàn)錯(cuò)誤:", e);
}

順序調(diào)用

如果不是類似上面循環(huán)調(diào)用,而是一次次的順序調(diào)用,而且調(diào)用之間沒有結(jié)果上的依賴,那么也可以用多線程的方式進(jìn)行,例如:
順序調(diào)用
代碼上看:
A a = doA();
B b = doB();

C c = doC(a, b);

D d = doD(c);
E e = doE(c);

return doResult(d, e);
那么可用CompletableFuture解決
CompletableFuture<A> futureA = CompletableFuture.supplyAsync(() -> doA());
CompletableFuture<B> futureB = CompletableFuture.supplyAsync(() -> doB());
CompletableFuture.allOf(futureA,futureB) // 等a b 兩個(gè)任務(wù)都執(zhí)行完成

C c = doC(futureA.join(), futureB.join());

CompletableFuture<D> futureD = CompletableFuture.supplyAsync(() -> doD(c));
CompletableFuture<E> futureE = CompletableFuture.supplyAsync(() -> doE(c));
CompletableFuture.allOf(futureD,futureE) // 等d e兩個(gè)任務(wù)都執(zhí)行完成

return doResult(futureD.join(),futureE.join());

這樣A B 兩個(gè)邏輯可以并行執(zhí)行,D E兩個(gè)邏輯可以并行執(zhí)行,最大執(zhí)行時(shí)間取決于哪個(gè)邏輯更慢。

線程池設(shè)計(jì)不合理

有的時(shí)候,即使我們使用了線程池讓任務(wù)并行處理,接口的執(zhí)行效率仍然不夠快,這種情況可能是怎么回事呢?
這種情況首先應(yīng)該懷疑是不是線程池設(shè)計(jì)的不合理。我覺得這里有必要回顧一下線程池的三個(gè)重要參數(shù):核心線程數(shù)、最大線程數(shù)、等待隊(duì)列。這三個(gè)參數(shù)是怎么打配合的呢?當(dāng)線程池創(chuàng)建的時(shí)候,如果不預(yù)熱線程池,則線程池中線程為0。當(dāng)有任務(wù)提交到線程池,則開始創(chuàng)建核心線程。
線程池設(shè)計(jì)不合理
當(dāng)核心線程全部被占滿,如果再有任務(wù)到達(dá),則讓任務(wù)進(jìn)入等待隊(duì)列開始等待。
讓任務(wù)進(jìn)入等待隊(duì)列開始等待
如果隊(duì)列也被占滿,則開始創(chuàng)建非核心線程運(yùn)行。
創(chuàng)建非核心線程運(yùn)行
如果線程總數(shù)達(dá)到最大線程數(shù),還是有任務(wù)到達(dá),則開始根據(jù)線程池拋棄規(guī)則開始拋棄。
根據(jù)線程池拋棄規(guī)則拋棄任務(wù)
那么這個(gè)運(yùn)行原理與接口運(yùn)行時(shí)間有什么關(guān)系呢?
  • 核心線程設(shè)置過?。汉诵木€程設(shè)置過小則沒有達(dá)到并行的效果
  • 線程池公用,別的業(yè)務(wù)的任務(wù)執(zhí)行時(shí)間太長,占用了核心線程,另一個(gè)業(yè)務(wù)的任務(wù)到達(dá)就直接進(jìn)入了等待隊(duì)列
  • 任務(wù)太多,以至于占滿了線程池,大量任務(wù)在隊(duì)列中等待
在排查的時(shí)候,只要找到了問題出現(xiàn)的原因,那么解決方式也就清楚了,無非就是調(diào)整線程池參數(shù),按照業(yè)務(wù)拆分線程池等等。

鎖設(shè)計(jì)不合理

鎖設(shè)計(jì)不合理一般有兩種:鎖類型使用不合理 or 鎖過粗。
鎖類型使用不合理的典型場(chǎng)景就是讀寫鎖。也就是說,讀是可以共享的,但是讀的時(shí)候不能對(duì)共享變量寫;而在寫的時(shí)候,讀寫都不能進(jìn)行。在可以加讀寫鎖的時(shí)候,如果我們加成了互斥鎖,那么在讀遠(yuǎn)遠(yuǎn)多于寫的場(chǎng)景下,效率會(huì)極大降低。
鎖過粗則是另一種常見的鎖設(shè)計(jì)不合理的情況,如果我們把鎖包裹的范圍過大,則加鎖時(shí)間會(huì)過長,例如:
public synchronized void doSome() {
    File f = calData();
    uploadToS3(f);
    sendSuccessMessage();
}
這塊邏輯一共處理了三部分,計(jì)算、上傳結(jié)果、發(fā)送消息。顯然上傳結(jié)果和發(fā)送消息是完全可以不加鎖的,因?yàn)檫@個(gè)跟共享變量根本不沾邊。因此完全可以改成:
public void doSome() {
    File f = null;
    synchronized(this) {
        f = calData();
    }
    uploadToS3(f);
    sendSuccessMessage();
}

機(jī)器問題(fullGC,機(jī)器重啟,線程打滿)

造成這個(gè)問題的原因非常多,筆者就遇到了定時(shí)任務(wù)過大引起fullGC,代碼存在線程泄露引起RSS內(nèi)存占用過高進(jìn)而引起機(jī)器重啟等待諸多原因。需要結(jié)合各種監(jiān)控和具體場(chǎng)景具體分析,進(jìn)而進(jìn)行大事務(wù)拆分、重新規(guī)劃線程池等等工作

萬金油解決方式

萬金油這個(gè)形容詞是從我們單位某位老師那里學(xué)來的,但是筆者覺得非常貼切。這些萬金油解決方式往往能解決大部分的接口緩慢的問題,而且也往往是我們解決接口效率問題的最終解決方案。當(dāng)我們實(shí)在是沒有辦法排查出問題,或者實(shí)在是沒有優(yōu)化空間的時(shí)候,可以嘗試這種萬金油的方式。

緩存

緩存是一種空間換取時(shí)間的解決方案,是在高性能存儲(chǔ)介質(zhì)上(例如:內(nèi)存、SSD硬盤等)存儲(chǔ)一份數(shù)據(jù)備份。當(dāng)有請(qǐng)求打到服務(wù)器的時(shí)候,優(yōu)先從緩存中讀取數(shù)據(jù)。如果讀取不到,則再從硬盤或通過網(wǎng)絡(luò)獲取數(shù)據(jù)。由于內(nèi)存或SSD相比硬盤或網(wǎng)絡(luò)IO的效率高很多,則接口響應(yīng)速度會(huì)變快非常多。緩存適合于應(yīng)用在數(shù)據(jù)讀遠(yuǎn)遠(yuǎn)大于數(shù)據(jù)寫,且數(shù)據(jù)變化不頻繁的場(chǎng)景中。從技術(shù)選型上看,有這些:
  • 簡單的map
  • guava等本地緩存工具包
  • 緩存中間件:redis、tairmemcached
當(dāng)然,memcached現(xiàn)在用的很少了,因?yàn)橄啾扔?code style="font-size: 14px;word-wrap: break-word;margin: 0 2px;background-color: rgba(27,31,35,.05);font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;color: #3594F7;background: RGBA(59, 170, 250, .1);padding: 0 2px;border-radius: 2px;height: 21px;line-height: 22px;">redis他不占優(yōu)勢(shì)。tair則是阿里開發(fā)的一個(gè)分布式緩存中間件,他的優(yōu)勢(shì)是理論上可以在不停服的情況下,動(dòng)態(tài)擴(kuò)展存儲(chǔ)容量,適用于大數(shù)據(jù)量緩存存儲(chǔ)。相比于單機(jī)redis緩存當(dāng)然有優(yōu)勢(shì),而他與可擴(kuò)展Redis集群的對(duì)比則需要進(jìn)一步調(diào)研。
進(jìn)一步的,當(dāng)前緩存的模型一般都是key-value模型。如何設(shè)計(jì)key以提高緩存的命中率是個(gè)大學(xué)問,好的key設(shè)計(jì)和壞的key設(shè)計(jì)所提升的性能差別非常大。而且,key設(shè)計(jì)是沒有一定之規(guī)的,需要結(jié)合具體的業(yè)務(wù)場(chǎng)景去分析。各個(gè)大公司分享出來的相關(guān)文章,緩存設(shè)計(jì)基本上是最大篇幅。

回調(diào) or 反查

這種方式往往是業(yè)務(wù)上的解決方式,在訂單或者付款系統(tǒng)中應(yīng)用的比較多。舉個(gè)例子:當(dāng)我們付款的時(shí)候,需要調(diào)用一個(gè)專門的付款系統(tǒng)接口,該系統(tǒng)經(jīng)過一系列驗(yàn)證、存儲(chǔ)工作后還要調(diào)用銀行接口以執(zhí)行付款。由于付款這個(gè)動(dòng)作要求十分嚴(yán)謹(jǐn),銀行側(cè)接口執(zhí)行可能比較緩慢,進(jìn)而拖累整個(gè)付款接口性能。這個(gè)時(shí)候我們就可以采用fast success的方式:當(dāng)必要的校驗(yàn)和存儲(chǔ)完成后,立即返回success,同時(shí)告訴調(diào)用方一個(gè)中間態(tài)“付款中”。而后調(diào)用銀行接口,當(dāng)獲得支付結(jié)果后再調(diào)用上游系統(tǒng)的回調(diào)接口返回付款的最終結(jié)果“成果”or“失敗”。這樣就可以異步執(zhí)行付款過程,提升付款接口效率。當(dāng)然,為了防止多業(yè)務(wù)方接入的時(shí)候回調(diào)接口不統(tǒng)一,可以把結(jié)果拋進(jìn)kafka,讓調(diào)用方監(jiān)聽自己的結(jié)果。
fast success

結(jié)語

本文是筆者對(duì)工作中遇到的性能優(yōu)化問題的一個(gè)簡單的總結(jié),可能有不完備的地方,歡迎大家討論交流。


到此文章就結(jié)束了。Java架構(gòu)師必看一個(gè)集公眾號(hào)、小程序、網(wǎng)站(3合1的文章平臺(tái),給您架構(gòu)路上一臂之力,javajgs.com)。如果今天的文章對(duì)你在進(jìn)階架構(gòu)師的路上有新的啟發(fā)和進(jìn)步,歡迎轉(zhuǎn)發(fā)給更多人。歡迎加入架構(gòu)師社區(qū)技術(shù)交流群,眾多大咖帶你進(jìn)階架構(gòu)師,在后臺(tái)回復(fù)“加群”即可入群。



這些年小編給你分享過的干貨


1.idea永久激活碼(親測(cè)可用)

2.優(yōu)質(zhì)ERP系統(tǒng)帶進(jìn)銷存財(cái)務(wù)生產(chǎn)功能(附源碼)

3.優(yōu)質(zhì)SpringBoot帶工作流管理項(xiàng)目(附源碼)

4.最好用的OA系統(tǒng),拿來即用(附源碼)

5.SBoot+Vue外賣系統(tǒng)前后端都有(附源碼

6.SBoot+Vue可視化大屏拖拽項(xiàng)目(附源碼)


轉(zhuǎn)發(fā)在看就是最大的支持??

瀏覽 33
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 密桃视频网站| 性爱AV在线观看| 伊人大久久| 麻豆乱伦视频| 亚洲清高毛无码毛片| 婷婷激情五月| 最近中文字幕av| 国产99自拍| 国产精品成人AV片| 蜜桃精品久久久| 蜜桃视频app| 91精品婷婷国产综合久久| 精品无码视频| 国产香蕉在线播放| v天堂| av中文字幕在线播放| 加勒比在线视频| 黄色日逼网站| 在线黄色小视频| 青榴视频免费观看| 国产精品无码无套在线照片| 免费操| 无码三级视频| 操b视频在线免费观看| 中文字幕在线视频免费观看| 亚洲av网站| 日韩字幕无码| 91蜜桃精品| 操逼无码| 在线色| 操婷婷| 亚洲伊人av| 欧美成在线视频| 国产亚洲中文字幕| 自拍偷拍免费| 俺来俺也去www色在线观看| 国产91白丝在一线播放| 乱伦乱伦乱伦中文字幕| 波多野结衣无码一区二区| 日逼视频网站| 久久群交| 国产人人看| 国产一级A片视频| 2021天天操| 98色色| 天天草天天爽| 91成人小电影| 国产婷婷精品| 色五月婷婷在线| 4虎亚洲人成人网www| 久久久国产一区| 久久无码一区| 高清无码网站在线观看| 日韩a视频| 午夜AV免费| 中文在线字幕免费观看| 内射午夜福利在线免费观看视频| 日本三级片网址| 亚洲成人在线免费观看| 亚洲高清无码视频在线播放| 亚洲毛片网| 亚洲在线无码播放| 亚洲中文字幕视频在线观看| 国产寡妇亲子伦一区二区三区四区| 男女啊啊啊| 青榴视频免费观看| 日韩在线视频中文字幕| 色高清无码免费视频| 少妇厨房愉情理伦BD在线观看| 国内精品国产成人国产三级| 四川少妇搡bbw搡bbbb| 波多野结衣无码视频在线观看| 丁香五月激情啪啪| 高清无码视频在线播放| 欧美日韩无| 第一色影院| 亚洲人人18XXX—20HD| 日本无码专区| 91成人A片| 麻豆免费成人传媒| 牛牛在线精品视频| 婷婷久久综合久色| 亚洲AV秘成人久久无码海归| 99精品视频在线观看| 波多在线视频| 午夜成人福利视频在线观看| 成人短视频在线观看| 日韩免费A| 免费操| 日韩二级片| а√最新版天堂中文在线| www.jiujiujiu| 欧美一级婬片免费视频黄| 97人妻精品一区二区三区软件| 一区在线播放| 91AV在线免费观看| 日韩强操逼网| 毛片毛片毛片毛片毛片| 黄总av| 69式荫蒂被添全过程频| 99久久成人| 五月丁香欧美| 欧美熟妇搡BBBB搡BBBBB| 亚洲五月婷婷| 黄片免费看网站| 一道本无码免费视频| 囯产精品久久久久久久久| 操碰99| 污视频在线免费观看| av手机天堂| 色tv在线| 丰满人妻一区二区三区精品高| 加勒比一区二区| 亚洲无码三区| 人人澡视频| 国产和日韩中文字幕| 被黑人猛躁10次高潮视频| 激情五月天亚洲| 在线不卡 | 老鸭窝成人| 欧美成在线| 国产热99| 先锋影音一区二区三区| 3D动漫啪啪精品一区二区中文字幕| 蜜桃久久久亚洲| 在线观看高清无码| 蜜臀av一区二区| 91网站观看| 久久免费精品| 一级国产欧美成人A片| 热久久国产| 91香蕉视频18| 一道本一区二区三区| 国产美女被爽到高潮免费A片软件| 偷拍99| 亚洲精品无码a片| A级黄色毛片| 91亚洲视频| 国产精品久久毛片A片| 五月天操逼网站| 欧美色性乐汇操日本娘们| 成人无码人妻| 九色麻豆| 在线91视频| 日韩黄色大片| 五月天婷婷丁香综合视频| 欧美成人综合色| 欧美色色色| 黄色亚洲视频| 午夜资源网| 亚洲日韩精品欧美一区二区yw| 美女一级片| 国产娇小13videos糟蹋| 欧美在线一级片| 日韩操逼一区| 亚洲人BBwBBwBBWBBw| 西西444WWW无码精品| 日本在线观看www| 秋霞二区| 久草这里只有精品| 黄片免费视频观看| 91熟女偷情| 久久亚洲AV无码午夜麻豆| 亚洲色婷婷| 91AV| 大香蕉在线伊人| 欧美精品久久久久久久久| 国产黄色不卡| 久久久福利| 这里只有精品在线观看| 欧美日韩日逼视频| 欧美爱爱免费看| av中文在线| 国产1区2区3区| 欧美人人| 国产免费一级特黄A片| 精品国产AV鲁一鲁一区| 国产精品三级片| 九九九精品视频| 人妻精品在线| 一级少女免费播放电视剧韩剧TV| 东北骚妇大战黑人视频| 国产乱子伦一区二区三精品| 欧一美一婬一伦一区二区三区自慰,| 插进去综合网| 蜜臀久久99精品久久久| 人人爱人人爽人人操| 亚洲性爱电影| 国产一级黄色录像| 免费性片| 天天做天天爱夜夜爽| 国产免费黄色视频| 欧美精品网站| 国产精品成人免费久久黄AV片| 久爱无码| 国产精品无码永久免费A片| 五月激情网站| 日韩有码电影| 亚洲天堂无码AV| A视频免费| 脓肿是什么原因引起的,该怎么治疗 | 亚洲加勒比久久88色综合| 国产在线欧美在线白浆| 日本黄色电影网址| 无码AV在线观看| v天堂| 91密臀| 国产免费观看av| 日韩精品视频在线| 国产黄色视频在线免费观看| 亚洲一区二区精品| 亚洲色图网站| 毛片a级| 无码精品人妻一区二区欧美| 国产亚洲久一区二区| 91视频一区二区三区| av片在线观看| 欧美第一色| 黄色动漫在线免费观看| 欧美日韩人妻高清中文| 亚洲伊人在线| mm131亚洲国产精品久久| 亚洲免费在线观看视频| 人善交精品一区二区三区| 色五月婷婷在线| 毛片导航| 操逼毛片视频| 亚洲精品高清视频| 欧美色图视频在线观看| 婷婷黄色电影| 殴殴美日韩在线| 17.3c一起起草| 伊人91| 操逼网站在线观看| 亚洲无码大全| 密臀av在线| 成人中文字幕在线观看| 麻豆自拍偷拍视频| BBw日本熟妇BBwHD| 国产又粗又大又长| 亚洲成人在线视频免费观看| 99在线观看视频在线高清| 无码人妻丰满熟妇区毛片蜜桃麻豆| 99久久免费网| 色青草影院久久综合| 99热综合| 欧美日韩A片| 18禁www| 男人的天堂黄色| av三级片在线观看| 热久久久久| 欧美日韩操逼视频| 日逼综合| 久久无码高清视频| 在线观看黄片视频| 麻豆精品在线| 男女操网站| 亚洲成人免费网站| 成人黄色一级片| 欧美大屌视频| 亚洲黄色在线视频| 无码高清免费| 欧美成人无码A片免费| 国产2区| 大荫蒂HD大荫蒂视频| 午夜成人黄片| 日韩在线中文| 中文字幕毛片| 无码内射视频| 在线免费观看黄片| 色逼高清| 败火老熟女ThePorn视频| 久热99| 一级a片激情啪啪免费观| 中文字幕人妻精品一区| 佐山爱人妻无码蜜桃| 国产一级性爱视频| 怡红院成人AV| 中文免费高清在线| 欧美一级免费A片| 欧美群交videotv群交| 色五月激情网| 在线观看黄色网| 免费无码在线| 91av在线免费观看| 亚州AV无码| 色婷婷久久综合久色| 无码高清视频| 1024国产在线| 精品国产999久久久免费| 一道本无码视频| 日日夜夜精选视频| 一级黄色免费看| 操欧美美女| 99精品人妻| 91站街农村熟女露脸| 国产精品123区| 久久中文字幕免费| 中文字幕免费一区| 俺也去俺去啦| 亚洲精品在线观看免费| 欧美色图另类图片| 欧美第二页| 国产精品一区在线| 婷婷激情四射| 日本精品乱伦| 久久精品性爱| 久久伊人电影| 婷婷在线电影| 国产一级a毛一级a做免费图片| 九九视频在线观看| 色老板免费视频| 人人爱人人插高清| 亚洲福利在线免费观看| 丁香五月亚洲| 无码av中文字幕| 大香蕉操逼视频| 成人视频123| 国产麻豆免费| 亚洲视频五区| 免费成人大片| www.av在线| 日韩性爱一区二区| 高潮无码在线观看| av一级| 亚洲中文字幕视频在线观看| 日韩黄色一级片| 亚洲偷拍中文| 色婷婷国产精品视频| 五月天婷婷丁香综合视频| 成人片网址| 中文字幕人妻精品一区| 超碰在线播| 青草青草视频| 人人干人人干人人| 色噜噜狠狠一区二区三区Av蜜芽| 婷婷视频导航| 大鷄巴成人A片| 国产精品永久| 亚洲国产精品成人综合色五月| 国精品无码一区二区三区在线| 天天操天天日天天操| 欧美日韩国产精品成人| 激情六月天| 操操操操操操操操逼| 黄色日逼网站| 大鸡吧网| 亚洲视频在线播放| 激情五月天激情网| 国产精品98| 高清无码在线观看视频| 免费av一区二区| 日本国产视频| 人人澡人人添人人爽人人| 热久久久久久| 精品无码二区| 婷婷中文字幕亚洲| 肏逼网址| 日韩欧美成人电影| 日韩一级一片内射视频4K| 男人天堂亚洲| 曰韩一级片| 国产精品久久久精品cos| 成人h在线| 在线观看免费黄视频| 欧美一卡| 婷婷五月色| 粉嫩99国产精品久久久久久人妻| 波多野结衣一区二区三区在线观看 | 人善交精品一区二区三区| 大黑逼网| 91人妻日韩人妻无码| 成人视频一区二区三区| 最新久欠一区二区免费看| 国产视频999| 92无码| 性欧美XXXX| 午夜精品人妻无码| 青青草国产| 苍井空一区二区三区四区| 久久久久无码精品国产91福利 | 亚洲欧美国产毛片在线| 越南熟女| 69成人天堂无码免费| 国产一级无码| 精品免费一区二区三区四区| 91精品大屁股白浆自慰久久久 | 婷婷久久综合久色综| 婷婷视频导航| WWWA片| 欧美激情视频在线| 成人中文字幕在线观看| 午夜激情网站| 中文字幕成人影片| 都市激情亚洲| 免费的黄色视频网站| 在线黄色小视频| 免费的一级A片| 中文解说AⅤ水果派| 欧美一区| 午夜福利站| 久久女人| 国产视频成人| 黄色片在线看| 狠狠色噜噜狠狠狠888米奇视频| 亚洲艹逼| 乱伦小说五月天| 韩日一区二区| 超碰在线观看免费版| 五月婷婷丁香综合| 国产嫩草影院| 四虎黄色网址| 丁香六月婷| 日韩人妻精品无码制服| 成人性爱视频免费在线观看| 国产精品91视频| 亚洲国产色婷婷| 中文字幕日韩在线视频| 人人上人人操| 激情网五月天| 超碰碰97| 91无码精品一区二区| 免费无码婬片AAAA片在线蜜芽| 操逼大全| 91人人妻人人操| 伊人网视频| 精品人妻二区三区蜜桃| 成人国产精品在线观看| 在线你懂得| 免费av毛片| 北条麻妃高清无码| www日韩欧美| 熟女人妻人妻の视频| 久久久久久免费| 樱桃码一区二区三区| 人人超碰人人| 中文字幕乱伦日本| 无码人妻精品一区二区三区蜜桃91 | 日韩欧美内射| 亚洲综合中文字幕在线播放| 天堂在线免费视频| 人妻无码一区二区三区| 久久免费操| 美女91视频网站| 夜夜操狠狠操| 亚洲va国产va天堂va久久| 欧美视频h| 国产日逼视频| 喷水在线观看| 我要看黄色一级片| 免费毛片基地| 天天摸天天干| 免费看特别黄色视频| 精品欧美一区二区精品久久| 激情自拍偷拍| 国产黄色免费看| 一级黄色小视频| 人妖黃色一級A片| 午夜影音| 欧美亚洲成人电影| 91丨人妻丨国产| 蜜桃久久久| 97人人干人人| av人人| 国产www在线观看| 丁香天堂| 亚洲精品一区二区三区四区高清| 免费成人毛片| 国产精品自拍三级| 青青操原| 高清无码视频网站| 欧美成人在线视频网站| 国产影视av| 午夜精品视频| 久久久穴| 中文字幕乱码无码人妻系列蜜桃| 国产精品视频一区二区三区在线观看 | 黄网在线免费观看| 粉嫩99精品99久久久久| 欧美在线va| 久久精品6| 91麻豆精品传媒| 日一区二区| gogogo视频在线观看黑人| 日韩爱爱网| 最新免费一区二区三区| 11孩岁女精品A片BBB| 亚洲51| av在线资源观看| 亚洲成年人在线| 欧美人妻视频在线| 伊人狠狠| 亚洲天堂精品视频| 亚洲热在线视频| 国产喷水ThePorn| 人成在线免费视频| 九九热re99re6在线精品| 亚洲色图五月天| 国产一区二区三区成人| 狠狠干在线| 国产乱人伦无码视频| 四色五月婷婷| 亚洲香蕉视频| 一本色道久久综合无码欧美| 18禁无码永久免费网站大全| 91蝌蚪在线视频| 蝌蚪九色啦403| 国产77777| 免费视频二区| 无码潮喷| 丰满熟妇高潮呻吟无码| 久久系列观看完整指南| 国产成人视频| 日韩精品网| 国产成人免费做爰视频| 丁香啪啪| 精品中文视频| 五月丁香六月久久| 91热| AAA片| 中文字幕在线日亚洲9| 国产久久在线观看| 黑人在线视频| 91国产视频网站| 黄色天堂天天看| 亚洲性爱在线观看| 亚洲性爱无码| 久久免费视频1| 性爱视频久久| 欧美久久性爱视频| 成人A片在线播放| 伊人黄片| 操逼天堂| 五月色综合| 无码人妻精品一区二区三区蜜臀百度| 欧美精品一卡二卡| 免费在线观看无码| 内射一区二区三区| 好爽~要尿了~要喷了~同桌| 欧美洲成人网站| 在线观看国产| 日本人妻中文字幕| 日本精品一区二区三区四区的功能| 丁香婷婷视频| 一区二区无码区| 91看片看婬黄大片女跟女| 国产精品午夜在线| 18禁成人A∨片| 99久久婷婷国产综合精品青牛牛 | 国产一级A片久久久免费看快餐| 亚洲成人Av| 神马午夜视频| 美女网站黄色| 免费无码婬片aaaa| 黄色视频免费观看国产| 四川揉BBB搡BBB| 午夜操爽| 欧美伊人网在线观看| 亚洲午夜视频| 亚洲成人在线视频| 婷婷五月丁香五月| 黄色日逼| 九九热精品视频| 91狠狠综合久久| 中文无码在线播放| 亚洲天堂久久| 日韩一级黄色视频| 国产成人精品AV在线观| 中文字幕无码人妻| 野花av| 日韩免费在线| 豆花视频在线观看| 亚洲日本黄色网址| 成人AV在线电影| 日本一级片在线播放| 久久久久久久毛片| 精品看片| 色色色91| 久久精品视频播放| 成人免费无码激情AV片| 91女色| 国产av综合网| 一级A片黄色| 精品码A片18| www.人人摸| 天天爽天天爽成人A片影院 | 大香蕉亚洲在线| 免费观看一级毛一片| 亚洲一区二区成人| 不卡在线| 久久久久久毛片| 亚洲永久视频| 成人无码网站| 黄视频免费在线观看| 久久99视频| 另类老妇性BBBWBBW| 人人操人人爽人人爱| 国产精品色婷婷| 躁BBB躁BBB躁BBBBBB日视频| 俄罗斯老熟妇与子伦| 麻豆熟女| 中文字幕你懂的| 免费一级无码成人片| 黄片网站视频| 精品三级片| 日韩AA视频| 青青草视频免费在线观看| 精品人妻一区二区三区蜜桃| 国产精品天天| 国产小视频在线播放| 91久久国产性奴调教| 西西人体大胆ww4444| 亚洲艹逼| 在线高清无码| 中国1级毛片| 黄片视频在线免费播放| 久久精品视频国产| 熟女少妇视频| 国精产品久拍自产在线网站| 五月婷婷一区| 成人黄色电影在线观看| 免费观看黄色视频| 欧美婷婷五月| 国产免费啪啪视频| 在线免费看黄视频| 欧美黄色网址| 欧美手机在线视频| 久久草草热国产精品| 免费在线观看AV| 成人性视频Aⅴ| 国产精品女人777777| 12——13女人毛片毛片| 亚洲中文字幕网站| 免费无码国产在线观看快色| 欧美日韩午夜福利视频| 麻豆911精一区二区| 亚洲AV无码久久寂寞少妇多毛| 边吃边摸| 97人人妻| 亚洲丁香五月激情| 天天操人人操| 爱搞国产| 人人干人人澡| 天天影视综合网免费观看电视剧国产| 亚洲在线视频网站| 人人夜夜人人| 啪啪啪免费| 青青草原AV| 骚逼中文字幕| 无码人妻AⅤ一区二区三区| 一本色道无码道| 亚洲九九九九| 免费观看久久久| 99精品国产热久久91色欲 | 日本在线观看www| 人人爽久久涩噜噜噜网站| 亚洲欧美在线观看视频| 北条麻妃一区二区三区-免费免费高清观看 | 午夜亚洲无码| 九九久久综合| 97超碰免费| 精品国产AV鲁一鲁一区| 久久婷婷成人综合色怡春院| 91成人一区二区三区| 人妻被午夜福利AV| 成人黃色A片免费看| 在线小黄片| 日韩无码影院| 国产精品视频久久久久| 亚洲AV综合网| 香蕉成人电影| 国产一级免费观看| 亚洲第九页| 精品国产久久| 爱爱视频无码| 国产嫩苞又嫩又紧AV在线| 亚洲AV成人片无码网站网蜜柚| 综合五月婷婷| 高清中文字幕在线A片| 天美精东蜜桃91| 免费看日P视频| 亚洲成人在线免费| 欧美午夜视频| 激情小说亚洲图片:伦| 午夜久久视频| 国产特级毛片| jizz免费视频| 日韩一片| 91麻豆精品成人一区二区| AV大片免费看| 亚洲福利在线观看视频| 中文字幕乱码亚洲中文在线| 日本成人一区二区三区| 一级黄色免费电影| 青青啪啪啪| 91人人操人人爽| 波多野结衣不卡| 久久人视频| AV免费播放| 丁香婷婷久久久综合精品国产| 精品超碰| 精品无码一区二区三区四区| 欧美18成人| 成人爽a毛片一区二区免费| 天天插天天| 性爱av天堂| 亚洲AV官方网站| 男女AV网站| 今天成全在线观看高清| 精品视频在线免费| 日日操日日| 2025最新国产精品每日更新| 天堂a√在线8| 内射精品| 久久波多野结衣一区二区| 五月天最新网址| 91精品久久久久久综合五月天 | 日日操人人操| 中文字幕在线观看AV| 山东乱子伦视频国产| 人人搞人人摸| 亚洲视频在线观看中文字幕| 黄色视频网站国产| 久99在线视频| 欧美日韩视频在线播放| 日韩乱轮小说与视频| 国产成人无码精品久在线观看| 中文字幕观看| 中文字幕35页| 亚洲免费在线婷婷| 中文无码专区| 安徽少妇搡bbw搡bbbb| 四虎成人精品在永久免费| 深爱婷婷网| 中文无码日本一级A片人| 中文字幕网在线| 男女日逼网站| 国产欧美一区二区三区国产幕精品| 国产精品s色| AAA三级视频| 1024国产| 日本少妇高潮喷水XXXXXXX| 九色PORNY9l原创自拍| 91久久偷拍视频| 人人干人人艹| 国产精品毛片一区二区在线看| 91精品久久久久久久| 成人精品免费无码毛片| 91超碰在线| 热久久91| 久操精品视频| 日韩成人一区二区三区| 国产精品v欧美精品v日韩精品| 不卡视频在线| 国内精品久久久久久久久久变脸| 台湾无码| 九九久热| 德国肥妇熟妇BBwBBw| 国精品伦一区一区三区有限公司| A级黄色毛片| 国产精品毛片久久久久久久| 免费Av在线| 奶大丰满一乱一视频一区二区三区在| 91足浴店按摩漂亮少妇| 欧美一级特黄A片免费观看| 91久久久无码国产一区二区三区| 男女拍拍网站| 就去色色五月丁香婷婷久久久 | 日中文字幕| 一级毛AA片| 西西444www无码精品| 国产精品乱伦片| 色墦五月丁香| av在线观看中文字幕| 色婷婷在线视频播放| 久久h| 在线观看的av网站| 黄色网页免费观看| 亚洲高清无码在线| 亚洲熟女av中文字幕| 水蜜桃成人在线| 18禁www| 色情一级AA片免费观看| 巨爆乳肉感一区二区三区视频| 大香蕉91| 狠狠躁日日躁夜夜躁A片小说免费 色综合久久久无码中文字幕999 | 十八禁网站在线观看| 久久精品福利视频| 国产精品中文| 国产极品无码| 国产无码专区| 色综合一区二区| 国产秘精品区二区三区日本| 杨晨晨不雅视频| 操久久久| 天天躁天干天干| 老司机精品视频在线观看| 狠狠干在线| 人人澡人人爽| 亚洲美女网站免费观看网址| S28AV| 午夜丁香| 91国产乱伦| 日韩不卡中文字幕| 插插插插网| 国产免费AV在线| 欧洲第一无人区观看| 国产欧美日韩一区| 91麻豆国产在线观看| 足交在线观看| 日韩欧美在线不卡| 国产av综合网| 18禁网站在线看| 成人免费大香蕉| 国内成人AV| av手机天堂| 婷婷在线观看免费| 亚洲男人综合| 亚洲欧美人妻| 亚洲无码在线免费| 成人免费在线网站| 日日夜夜天天综合| 欧美国产在线观看综合| 蜜桃久久99精品久久久酒店| 天天射天天射| 国产高潮又爽又无遮挡又免费| 黄网91| 嘿咻无码推油| 99青草| 亚洲乱码日产精品BD在线观看 | 国产在线一区二区三区| 欧美A片在线播放| 深爱激情五月婷婷| 欧美色图狠狠操| 在线观看日韩三级片av| 伊人成人电影| 三根一起进菊眼| 日本人妻在线视频| 九九精品网| 91精彩视频| 伊人网站视频在线| 五月丁香在线观看| 天天干女人| 久久亚洲av| AV无码免费一区二区三区不卡| 无码一区二区高清| 夜夜撸一撸| 免费操逼网址| 手机在线小视频| 亚洲无码视频观看| 人人干人人澡| 国产精品人妻AⅤ在线看| 国产在线视频一区二区三区| 亚洲视频,中文字幕| 波多野结衣AV在线观看| 东京热观看| 人妻中文字幕网| 黄色日逼视频| 777777视频| 成人在线精品| 亚洲av| 国产棈品久久久久久久久久九秃 | 91国产精品在线视频| 丁香花在线小说免费阅读| 亚洲国产高清在线观看视频| 91无码人妻| 大香蕉一区二区三区| 天天摸天天操| 99热自拍| 七十路の高齢熟妇无码| 国产黄色小电影| 手机在线观看av| 神马午夜秋霞不卡| 日韩无码成人片| 五月婷在线观看| 国产人体视频| 欧美成人手机在线看片| 国产乱子伦一区二区三| 9999re| 99热99re6国产线播放| 思思热免费视频| 国产精品久久7777777精品无码 | 亚洲无码精品视频| www.日韩| 国内毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 毛多水多丰满女人A片| 国产精品无码天天爽视频| 久久免费视频播放| 日韩无码电| 久久国产黄色视频| 无码窝在线观看| 亚洲V国产v欧美v久久久久久| 自拍视频在线观看| 国产视频一区二区三区四区五区 | 日本亚洲中文字幕| 一区二区三区无码区| 在线观看免费一区| 宅男噜噜噜66一区二区| 日日搔av一区二区三区| 亚洲自慰|