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

在線“殺死” App 的卡頓難題!

原創
移動開發 Android 系統運維
本?將為大家分享作者是如何在?個?內降低 50% 的 ANR 線上問題發?率的探索與實踐,希望能對開發者有所幫助或啟發。

ANR(Application Not Response)是安卓開發團隊經常遇到的無響應問題,但卻很難定位和根除。尤其是線上問題,由于難以復現,導致開發者難以有效地快速解決。為此,本?將為大家分享作者是如何在?個?內降低 50% 的 ANR 線上問題發?率的探索與實踐,希望能對開發者有所幫助或啟發。

Google 的一項內部研究表明,過高的崩潰與 ANR 發生率會直接影響應用的評分情況,并且很難在商店中累積起用戶量,嚴重影響應用在商店的排名情況。這一系列的連鎖反應將會給應用帶來很大的損失,且有可能失去在應用商店獲得谷歌推薦的資格。因此,ANR 問題對于?多數安卓團隊來說十分棘手,尤其是線上問題令人頭疼。因為本地問題可以復現,線上 ANR 卻很難。因而探究線上 ANR 問題的治理?案更具意義。

觸因與流程分析

1. 關于 ANR

從用戶側看, ANR 問題是指?戶在使?應?過程中出現了嚴重卡頓或卡死時,系統給出的?響應提示彈窗。而從系統側看,ANR 問題就是 AMS 在執?特定?法時出現的超時錯誤,觸發點有四個:

  • InputDispatching Timeout
  • BroadcastQueue Timeout
  • Service Timeout
  • ContentProvider Timeout

系統的 ANR 觸發流程?致可分為兩個部分:

?戶可以直觀感受到的 ANR 彈窗,這部分由 AMS 處理。

同時 AMS 還會發出?個 SIGQUIT 信號:  SignalCatcher 線程會接收到這個信號,并且處理后續的 dump 邏輯;市?上的 ANR 錯誤收集 SDK?部分都依賴于這個原理。

2. 現狀與挑戰

根據美圖秀秀 Android 端的線上監控數據表現, ANR 問題?乎是崩潰問題的兩倍。在這種情況下,?先要考慮的就是如何將問題數量降低,然后再考慮后續?案。

?對大批問題,?先就是對數據進?分析、歸類和梳理以便找出頭部問題。美圖秀秀的線上頭部問題分布如下:

這些問題經過簡單分析后,得出了如下結論:

nativePollOnce 問題,暫時不能依賴現有的?志信息得出結論。不過其占?較?,要放在?優先級處理。processPendingWork 問題已經有可靠的處理?案。占?不低,應該放在較?的優先級處理。

剩余問題數量相近,所以處理順序并不固定。

分析與實踐

在分析具體問題之前,?先跟?家分享?下筆者在處理問題過程中總結的?些經驗。

我們遇到的絕?部分問題,都可以分為兩類:

有源問題:是指可以直接溯源、定位到的問題;有源問題通常可以直接解決,其處理結果直接影響到線上的某個指標(如:相應問題的發?次數,發?率等等)

?源問題:問題成因不定且沒有確定的線索;?對?源問題更多時候需要“?膽假設,??求證” 。通常?源問題需要更多的現場信息以及側?證據來溯源。成功溯源之后的?源問題可轉換成?個或 多個有源問題。

當?系列問題有了明確的優先級以及分類之后,我們就可以開始分析單體 Case 了。

1. MessageQueue.nativePollOnce 問題

線上上報的堆棧如上圖所示。棘手之處在于:如果只看上報的堆棧和錯誤?志,很難排查出問題的根本原因。上?提到過,處理這類問題要“?膽假設”,其可能的原因有:

  • 主線程狀態異常導致“停頓”
  • 卡頓堆棧漂移
  • 其他未知原因
  • 有了假設之后,就需要“??求證”了:
  • 假設主線程異常,那么因何產??
  • 假設卡頓堆棧漂移,那么真實的卡頓堆棧在哪??

1.1 主線程卡死情況

Android 應?啟動過程中有這樣的?段邏輯:zygote 初始化 →RuntimeInit 初始化。在 RuntimeInit 初始化過程中會注冊?個默認的錯誤處理器來響應異常,如下所示:

默認的異常處理機制會在線程發? Crash 時同步給 ActivityThread、ActivityManagerService 之后再“kill”掉?身。

那么如果當主線程發?異常的情況下,不使?系統的處理鏈路或異常處理過程中耗時過久就會發? ANR。當主線程發?了崩潰后其實已處于終?狀態。此時主線程 Looper 的 MessageQueue 組件?法繼續添加新的消息,? Android 應?的運?恰恰依賴的就是主線程的消息輪詢 -- 線上這個錯誤堆棧也是指向了 MessageQueue 組件在等待新消息的到來。因此,當主線程發?異常并?法及時 kill 掉進程時,系統就  會觸發 ANR 超時機制。按照以上的邏輯推斷,我們通過埋點找出了線上異常處理鏈的各個?法耗時數據:

通過對?各個異常處理?法的耗時可以發現,Firebase 異常分析 SDK 在異常處理鏈路中耗時最?。預計移除此組件可降低該問題的發?數量。

最終在去除 Firebase 異常分析 SDK 的版本上線之后,線上數據顯示整體的 ANR 率都有所下降。

接下來分析另?種情況:

1.2 卡頓堆棧漂移

在這種情況下,錯誤上報中的卡頓堆棧已經失真,?法反映出當時現場的真實的情況。因此,增加線上的慢函數監控可以更準確地分析此問題。

線上慢函數監控的原理:

查看 Looper 的源碼得知:主線程所有執?的任務都在 Looper.loop() ?法中的 msg.target.dispatchMessage 中派發執?。在這?有個 Printer 組件分別在消息的執?前、后會 有?個打印的?法調?。可通過 Looper.setMessageLogging ?法設置?個 Printer ,來監控每   個 Message 的執?時間:

監控邏輯的關鍵代碼:

在后期,我們通過這種?式獲得了以下慢函數數據:

整理后得到的分布數據:

不難得出:

【QueuedWork.processPendingWork】、【??創建】類型的問題占?最?,必須優先處理。下?將詳細分析這兩個問題。

回到上?錯誤處理的思路中:

此問題的處理中,使?了通?的?源問題處理?案。通過   【假設 -> 驗證 -> 上線 ->數據變化 】這?流程,最終減少了此問題的發?或轉換成了有源問題。當然,這個問題的誘因不只以上兩個猜想,還有更多的可能需要進?步探索。

2. QueuedWork.processPendingWork 問題處理

問題調?棧:

對 AndroidFrameWork 源碼接觸較少的同學們,可能并不了解這個類的作?。這時候可以借助 Android 源碼搜索引擎來?看究竟:

通過對源碼的分析,可以得出?個?致流程:

SharedPreferencesImpl.apply() ?法中調?  QueuedWork.add() 將  SharedPreferences  的寫 ?任務添加進  QueuedWork 的任務隊列中,之后 ActivityThread 在?些組件?命周期?法中執?了 QueuedWork.waitToFinish → QueuedWork.processPendingWork 這?流程。這?個?命周期方法有:

  • handleStopService
  • handlePauseActivity
  • handleStopActivity
  • handleSleeping

以上的?命周期?法都會先等待 QueuedWork 中的異步隊列執?完成,再執?后續的流程。

很容易得出這樣的結論:SharedPreferences 的 apply ?法本身設計為異步寫?,?Android 系統為了保證數據有效性會在特定的?命周期?法中等待異步寫?任務的完成。如果這個任務處理耗時過?,就會產? ANR 問題

美圖秀秀內部開發了?款代碼的織??具 MtAjx 。其類似于?家熟知的 AspectJ ,相? AspectJ ?案, 有著更好的兼容性(司內?批項?編譯遇到 AspectJ 的問題)以及更?性化的 API 設計。

在處理這個問題時,我們使?了 MtAjx 來攔截 SharedPreferences 的創建,并返回帶?志輸出功能的 SharedPreferencesWrapper 。

簡化的流程如下:

要完成上?的功能,使? MtAjx 只需要編寫?些簡單的規則即可實現:

接下來可采??動化測試來模擬線上?戶的真實操作,并通過 SharedPreferencesWrapper 的?志對SharedPreferences 寫?頻率進?分析。

最終輸出的數據如下:


?前收集的線索可以推斷出:  GMS 組件的某個操作,?量地調?了 SharedPreferences 的 apply ?法。這個操作可能會使 SharedPreferences 的異步寫?任務創建過多從?導致 ANR。后期處理此問題時,我們對這個組件進?了改造:使? MtAjx 在 GMS 中攔截 SharedPreferences 的創建、獲取操作, 并返回?個安全的 SharedPreferences 實現。?然上線之后,得到的數據跟預估的有些差距:

?身問題減少的?例很?

線上整體 ANR 波動不?

猜測這個問題發?時系統的 IO 負載已?分嚴重,處理部分場景可能收益并不?。于是之后上線了全量的 SharedPreferences 替換來避免此問題發?。

請注意,這?的“全量”并?真正的全量替換,?是排除了?些可能會受到影響的調?。?部分都只涉及 業務,這?不作為核?展開討論;使?“安全的” SharedPreferences 實現只是規避問題,其根本還 是需要降低系統負載。

處理全量 SharedPreferences 替換的處理的?法與?志輸出的流程類似。也采?了 MtAjx ?案來攔 截 SharedPreferences 的創建,并返回?個安全的實現。

此處為了容災,線上做了在線開關作為全量替換的整體控制策略來規避未知?險。

最終,這個策略上線之后,上述問題整體降低了 60%-70%,詳見下圖:

3. 首頁創建問題處理

這個問題是通過前?提到的慢函數數據分析發現的。經過堆棧類聚分析之后,關聯到了線上的兩個指 標:

  • 慢函數——關聯了四個問題。
  • ANR——關聯了 N 個問題,?且問題很分散。

其中,慢函數問題多發?在某些 View 的初始化過程中。下?是?些線上觸發此問題的點:

  • ViewPagerFix.()
  • MainTabItemLayout.()
  • MainActivity.onCreate()
  • HomeTopHeaderLayout.

篩選出上述問題的最終調?棧如下:

所有的卡頓點都落在 Runtime.loadLibrary0() 這個調?上。

線上 ANR 或者慢函數的數據表現也近乎?致:都是?通機型、低端機較多。

經過分析得知,?通機型存在?個 BoostFramework 組件?于加快應?的響應速度:類似的機制 可以在 特定情況下提升調度優先級、CPU 頻率,從?加快應?的響應速度。

但在某些情況下,這種機制會導致應?發?卡頓:BoostFramework 初始化依賴?個 so 的加載。?Runtime.loadlibrary0 是?個 synchronize 修飾的函數,多線程調?必然會存在鎖競爭情況。

美圖秀秀在啟動過程中,存在著?量“異步”加載 so 的操作。如果?線程先于主線程進? Runtime.loadLibrary0 ?法,拿不到鎖的主線程就會等待?線程釋放鎖之后再繼續執?。也就是說,如果某個?線程中存在著耗時較久的 so 加載?為,就會阻塞主線程的 so 加載。

?前 so 的加載時間還是盲區,?法針對性地去處理這個問題。與之前 SharedPreferences 問題處理的思路?樣:使? MtAjx 攔截 System.loadLibrary() ?法并輸出其耗時,最后得到如下數據(部分):

從數據上看,某些 so 加載確實消耗了不少時間。要解決此問題,?前初步的?案有:

盡量降低異步 so 加載對主線程 so 加載產?的影響

嘗試 Hack ?通平臺的 BoostFramework,讓其延遲加載或提前加載

列舉出可以執?的?案如下:

最終上線的?案:

  • 延遲執?異步任務中的 so 加載
  • ?通平臺的 BoostFramewok 加速在合理的時間啟動

對這種系統 Hack,必要的容災還是要做。這?與之前的?案?樣,通過在線開關去決定 BoostFramework 加載時機。

采?最終?案上線之后,得出了?些線上的數據:

  • 關聯 ANR 問題發?數降低 50%
  • 低端機啟動速度提升 13%
  • 低端機 ANR 率降低,最?幅度在 50%

復盤 2、3 兩個問題,都經歷了類似的處理過程:

  • 分析:這?包括對問題的根本原因、原理、發?場景全鏈路進?完整分析
  • 建模:指將問題直觀地“數據化”。如SharedPreferences 的讀寫頻次分析、 so 加載中的加載時常數據分析、以及線上的慢函數、ANR 數據變化。
  • 預估:列舉現有?案的優劣對?,以及可能產?的影響,容災措施等
  • 驗證:最終結果和預估時的進?對?,是否影響到線上關聯問題的核?指標。

4. BinderProxy 問題處理

線上 Binder 問題的堆棧表現多種多樣,不過其最終調?點都是android.os.BinderProxy.transactNative() 方法。

經過分析、查閱資料后,初步得出結論。當出現此類問題時,系統或應?基本都處于以下這些狀態:

  • Binder 本地資源耗盡
  • 遠程服務被頻繁調?,致使遠程服務負載過?
  • 其他資源耗盡情況

這個問題的處理思路跟前?的?較類似:?先是收集不同場景下的 Binder 調?數據,然后針對數據進 ?分析、評估是否存在不合理場景。

不同于之前的例?:Binder 問題最終完全發?在系統層,?法通過 MtAjx 進?攔截。因此,換?種? 式:通過 NativeHook 可以攔截所有的 Binder 調?,從?獲取到 Binder 調?運?期的數據。此處選 擇了 BinderProxy.transact() 作為攔截點:

仍然采??動化測試來模擬線上?戶的使?情況并輸出?份?志,分析后得到如下數據(部分):

數據反映出了?系列問題:

  • 頻繁獲取本身 package 信息:如 versionName,versionCode
  • 頻繁獲取設備信息:如 IMEI,IMSI,?卡地址
  • 頻繁?絡類型檢測,?絡狀態檢測
  • 頻繁訪問本地?錄
  • 頻繁權限檢測

這些?法的調?頻率都出現了異常(有些甚?超過了 View 繪制)。通過匯總整理,輸出?份最終修改結論和建議,供內部或者第三?去修改問題:

以上這些問題經過處理,整體 ANR 問題的發?都有?定程度地降低。所以,?部分 ANR 問題并?單體問題,通常降低整個應?的負載亦可降低整體 ANR 問題的發?率。

復盤思考

經過?整?的問題處理之后,通過復盤得出以下?系列思考。

1. 風險控制

在?險存在的時候,通常有以下?種做法:

本地容災策略

異常發?的時候,?適應去熔斷某些功能并上報。這個途徑?論從效率還是從?戶體驗上來講,都是最 好的。不過本地化意味著通常需要各種規則,各種條件去約束。所以?部分情況下這并不是最好的選擇。

在線開關控制

在觀測到異常數量上升(?為、報警)之后,通過在線開關關閉相應的功能。?前最常?的?法,在? 部分場景下都能適?。

熱修復補丁

在觀測到線上異常之后,通過下發熱修復補丁來避免問題的擴?。不過部分設備、渠道可能會失效。

發布緊急版本

迫不得已情況下使?的下策:緊急版本?論從修復效率還是從?戶體驗來講,都是?較糟糕的選擇。

2. 保持數據的準確 & 完整

完善的基礎數據建設更有助于發現問題

筆者之前接?公司另?個業務的性能優化需求時,發現該業務線的應?并沒有采集線上 ANR 指標,這部分在當時來看完全屬于盲區,并且根本?法評估有多少?戶流失與此關聯。

單?維度的數據,只能反映部分事實,能互相佐證的多維度的數據才更可信

?如性能問題中:ANR 數據、慢函數數據、甚?于啟動時?都能相互印證。

3. 別忽視了“蟻穴”

小問題積累到爆發再填坑,往往會耗費更多的精?。

之前公司內部的 AOP 處理?直使? AspectJ ,前期遇到的問題始終在通過加各種規則去規避。在后期問題爆發的時刻,?開發?套 AOP ?案耗費的??會更多。

沒有外?約束下,?個穩定的系統會逐漸地熵增,從?陷?混亂狀態,代碼也是?樣。

質量差的代碼不僅會拖慢研發效率,?且會增加各種各樣的穩定性隱患。平時不注意的細節會在上百萬、上千萬的?戶?前成倍放?。?如主線程的?次 IO 操作:很多?都覺得“? Kb 的數據?已,沒什么?不了的”,可事實真的是這樣嗎?

未來探索

?論過去、現在還是未來, ANR 問題的處理始終是?項具有挑戰的任務。依靠過去的經驗可以避免?些常見的問題,但是面向未來,還需要探索更多的?式去定位和解決問題。

1. 自研性能監控平臺

發現、預警,到 Bug 跟進,可以將整個開發和交付流程串聯起來。這將是未來性能優化?作的??利器。

2. 抽樣上報的詳細 ANR?志

通過對? Bugly 和 XCrash 上報的 ANR ?志,可以看出 XCrash 上報的信息更適合開發同學進?問題定位。在后期,我們將 XCrash 接?作為?個抽樣的上報?案以補充 ANR 數據,為定位問題提供更有價值的信息。

3. 業務異常關聯數據分析

通過對核?業務的操作路徑和線上的異常數據關聯,可以發現?些平時容易被忽略的問題定位?法。我們關聯了圖?處理的業務與 ANR 或 Crash 的發?時間節點,來定位 ANR 或 Crash 是否與某個業務組件相關聯。

結語

ANR 問題并?單體問題。?部分 ANR 問題只是結果,其中的誘因千奇百怪,?中所述僅只是冰???。后續團隊還需要不斷地去解決新的問題,并持續地將已處理問題歸納、總結、規范,進而才能推?使?,更好地治理 ANR 問題。

注:

?中描述的 MtAjx 暫未公開,如有需要可使? AspectJ 代替

?中?量的經驗來源于前?貢獻;?平有限難免存在紕漏 -- 如有問題歡迎隨時與我交流:i@zhan gyanwei.com

專家介紹

作者張彥偉,美圖秀秀 Android 專家。2019 年加入美圖,現負責美圖秀秀 Android 端優化工作。美圖秀秀是 2008 年 10 月 8 日由廈門美圖科技有限公司研發、推出的一款免費影像處理軟件,全球累計超 10 億用戶,在影像類應用排行上長期保持領先優勢。

責任編輯:薛彥澤 來源: 51CTO
相關推薦

2022-05-02 08:30:46

網絡Wi-Fi

2014-08-27 10:24:16

APP

2013-04-19 10:17:57

波士頓馬拉松爆炸的大數據大數據全球技術峰會

2011-11-21 09:26:32

2017-01-12 15:06:30

AndroidAppActivityMan

2011-05-30 14:36:06

Android 在線開發 App Invent

2018-11-03 16:29:48

Red HatKDE桌面環境

2013-03-07 11:33:46

App移動應用盈利

2019-12-27 14:00:43

傳統IT商業模式

2012-12-25 11:54:44

App Store兒童保護隱私

2014-12-15 16:27:54

App推廣

2013-08-13 17:33:17

阿里巴巴BAT

2021-05-29 10:32:15

XDRSIEM安全

2022-12-26 09:00:07

2024-02-26 00:00:00

RAGGeminiLLM

2020-04-03 21:47:58

網絡安全 數據物聯網

2018-02-25 12:14:20

MITAI技術卡頓

2017-01-12 14:21:25

AndroidFragmentActFragment

2015-01-13 11:17:17

2020-03-27 08:17:01

運維DBA服務器
點贊
收藏

51CTO技術棧公眾號

992tv成人免费视频| 欧美天堂在线观看| 欧美丰满高潮xxxx喷水动漫| 亚洲欧美日本国产有色| 久久香蕉精品视频| 欧美电影免费网站| 亚洲人成网站在线| 懂色中文一区二区三区在线视频| 国产精品美女久久久久av爽| 亚洲小说春色综合另类电影| 欧美午夜美女看片| 中国人体摄影一区二区三区| 天堂成人在线视频| 激情深爱一区二区| 欧美制服第一页| 欧美日韩精品一区二区三区 | 国产精品视频二| 欧美69xxxxx| 午夜精品久久久久99热蜜桃导演| 亚洲精品电影在线| 国产欧美一区二| 天堂√中文最新版在线| **性色生活片久久毛片| 免费久久一级欧美特大黄| 国产精品视频一区二区三区,| 亚洲欧美日韩专区| 欧美剧在线观看| 四季av中文字幕| 视频福利一区| 精品国产91亚洲一区二区三区婷婷| 超碰影院在线观看| 男人天堂视频在线观看| 亚洲精品日韩专区silk| 性高潮久久久久久久久| 国际av在线| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 久操视频在线| 国产女人aaa级久久久级| 国产精品久久久久免费a∨大胸 | 神马午夜精品91| 一本色道久久综合亚洲精品酒店 | 天天干天天色天天| 国产一区三区三区| 欧美日韩夜夜| 欧美性大战久久| 亚洲中文字幕无码专区| 日本h片在线| 亚洲欧美日韩一区| 伊人狠狠色丁香综合尤物| 成人三级黄色免费网站| 久久丝袜美腿综合| 免费试看一区| 久青草国产在线| 久久综合久久综合九色| 牛人盗摄一区二区三区视频| 日韩在线观看视频一区| 成人18精品视频| 国产视频精品网| 日本黄色大片视频| 成人黄色大片在线观看 | 91精品国产乱码久久久竹菊| 日韩亚洲欧美在线观看| 国产chinesehd精品露脸| 国产日韩精品在线看| 91色在线porny| 久久久久久久久久久久久久一区| 国产日韩欧美另类| 卡一卡二卡三在线观看| 日韩毛片一区| 亚洲男同1069视频| 日韩不卡一二区| 五月天婷婷激情网| 91在线观看免费视频| 精品一区二区不卡| 欧美人体大胆444www| 久久嫩草精品久久久久| 日韩精品久久一区| www.热久久| 国产不卡视频一区| 国产视频在线观看一区| 深夜福利在线观看直播| 久久久亚洲精品一区二区三区| 欧美久久久久久一卡四| www在线免费观看| 自拍av一区二区三区| av一区二区三区免费观看| 老色鬼在线视频| 在线观看日韩电影| 中文字幕第三区| 亚洲性视频在线| 国产麻豆一区二区三区| 欧美日韩成人在线| 欧美精品日韩三级| 天天做天天爱天天高潮| 日本高清成人vr专区| 亚洲va国产va欧美va观看| 一本久道中文无码字幕av| 999在线视频| 91免费小视频| 亚洲欧洲久久| av福利在线导航| 日本韩国一区二区三区视频| 中文字幕一区二区在线观看视频| 欧洲一区二区三区精品| 欧美老女人第四色| 50一60岁老妇女毛片| 精品国产一区二区三区噜噜噜| 久久中文字幕在线视频| 九九热精品视频在线| 久久国产精品99精品国产| 国产99久久精品一区二区 夜夜躁日日躁| 男操女视频网站| 国产成人av一区二区三区在线| 免费亚洲精品视频| 日本性爱视频在线观看| 欧美日韩精品一区| 一级特黄aaa大片| 粉嫩aⅴ一区二区三区四区| 欧美性极品少妇| 国产中文字幕日韩| 神马久久高清| 一区二区三区四区蜜桃| 日韩亚洲在线视频| 欧美日韩破处| 欧美黄色片视频| 国产精选久久久| 欧美激情一区二区在线| 国产极品粉嫩福利姬萌白酱| 精品久久久久久久久久岛国gif| 亚洲欧美综合精品久久成人| 18精品爽视频在线观看| 激情图区综合网| 西游记1978| 丝袜美腿一区| 亚洲美女喷白浆| 亚洲一区 视频| 欧美丝袜一区| 欧美一级大胆视频| 亚洲国产精品一| 亚洲视频小说图片| 免费一区二区三区在线观看| 亚洲欧洲美洲国产香蕉| 午夜免费日韩视频| 狠狠人妻久久久久久| 成人丝袜视频网| 91看片淫黄大片91| av一级久久| 久久精品最新地址| 国产精品亚洲欧美在线播放| 国产精品人成在线观看免费| 欧洲熟妇精品视频| 国产一区二区区别| 国产成人亚洲综合| 国产一级免费在线观看| 欧美中文字幕一区| 欧美丰满老妇熟乱xxxxyyy| 久久亚洲视频| 天天人人精品| 国产香蕉久久| 日韩女优制服丝袜电影| 午夜国产福利一区二区| 国内成+人亚洲+欧美+综合在线 | 欧美男男gaytwinkfreevideos| 91产国在线观看动作片喷水| 手机看片福利在线| 欧美日韩亚洲精品一区二区三区| 欧美激情中文字幕乱码免费| 国产精品亚洲αv天堂无码| 国产精品对白| 69av成年福利视频| 青青草免费在线| 欧美亚洲综合一区| 三级黄色在线观看| 国产精品88888| 霍思燕三级露全乳照| 欧美日韩夜夜| 国产精品美女久久| 黄色网址在线免费| 亚洲成人久久电影| 久久精品无码av| 日本一区二区三区免费乱视频| av污在线观看| 中出一区二区| 国产乱码精品一区二区三区不卡| 免费在线小视频| 这里只有精品在线观看| 青青草原在线免费观看| 国产激情一区二区三区| 波多野结衣综合网| 精品国精品国产自在久国产应用| 国产精品天天狠天天看| 日本大胆在线观看| 亚洲日本中文字幕免费在线不卡| 伊人久久国产精品| 亚洲一区在线播放| 成人精品视频在线| 中文久久久久久| 日韩电影二区| 99热99热| 黄色动漫在线| 亚洲成人动漫在线播放| www.久久视频| 亚洲香肠在线观看| 黄色av免费播放| 国产sm精品调教视频网站| aaaaaa亚洲| 天天做天天爱天天综合网| 国产91色在线|亚洲| 51一区二区三区| 欧美激情伊人电影| 午夜看片在线免费| 精品视频在线播放色网色视频| 国产普通话bbwbbwbbw| 欧美日韩午夜视频在线观看| 97在线视频免费观看完整版| 色综合天天综合| 最新国产黄色网址| 悠悠资源网久久精品| 午夜视频久久久| 日本一区福利在线| 亚洲一区美女视频在线观看免费| 日韩脚交footjobhd| 亚洲二区免费| 在线成人性视频| 竹菊久久久久久久| 福利视频一区二区三区| 亚洲国产综合在线观看| 日韩二区三区在线| 精品人妻无码一区二区三区蜜桃一| 一本久久a久久精品亚洲| 中文字幕第28页| 亚洲免费视频网| 国产精品视频麻豆| 性欧美丰满熟妇xxxx性久久久| 精品亚洲aⅴ乱码一区二区三区| 熟妇人妻无乱码中文字幕真矢织江| 亚洲经典自拍| 日韩黄色片在线| 97久久中文字幕 | 大香伊人久久| 美女黄色丝袜一区| 欧美jizzhd69巨大| 日韩性xxxx爱| 国产精品一卡二卡三卡| 日韩一区二区在线视频| 91免费在线| 色偷偷亚洲男人天堂| 国产福利第一视频在线播放| 亚洲精品永久免费精品| 四虎影视精品成人| 精品亚洲一区二区三区在线播放 | 国产稀缺真实呦乱在线| 一区二区三区视频在线看| 中文字幕在线有码| 亚洲欧洲综合另类| 欧美爱爱小视频| 一区二区成人在线| 精品少妇久久久| 精品电影在线| 日韩欧美中文字幕一区| 超碰在线观看av| 精品精品国产高清a毛片牛牛 | 少妇人妻精品一区二区三区| 日韩视频一区二区在线观看| 精品人妻一区二区三区日产乱码 | 国产91色在线|免| 自拍偷自拍亚洲精品被多人伦好爽| 欧洲永久精品大片ww免费漫画| 超级碰碰久久| 国产精品日韩在线一区| 日本国产亚洲| 成人动漫视频在线观看完整版| 中文字幕一区二区三区四区久久 | 日韩www.| 麻豆中文字幕在线观看| 欧美aa国产视频| 黄色激情在线视频| 性欧美xxxx大乳国产app| 亚洲高清在线免费观看| 国产一区二区三区高清播放| 中文字幕在线观看91| 日日夜夜一区二区| 日韩一级片免费视频| 国产视频一区在线观看一区免费| 精品久久久久久久久久久久久久久久久 | 中文字幕第31页| 欧美精品777| 少妇高潮一区二区三区69| 亚洲三级 欧美三级| av片在线观看网站| 国产91成人video| 99精品视频在线免费播放| 国产精选在线观看91| 日韩毛片视频| 国产精品999视频| 另类小说一区二区三区| a级片在线观看视频| 中文字幕成人网| 久久9999久久免费精品国产| 欧美在线观看18| 蜜桃视频久久一区免费观看入口| 亚洲天堂免费在线| 色呦呦呦在线观看| 国产精品久久久久久久久久99| 一本一道久久a久久| 亚洲国产午夜伦理片大全在线观看网站 | 久久sese| 99久久自偷自偷国产精品不卡| 激情综合网站| 日韩网站在线免费观看| 久久成人精品无人区| 麻豆av免费观看| 成人在线观看免费网站| 91精品国产综合久久蜜臀| 色香蕉在线视频| 日韩精品1区2区3区| 99re国产在线播放| 大片网站久久| 黄色免费观看视频网站| 国产高清亚洲一区| 99久久99久久精品免费| 日本一区二区三区国色天香 | 欧美亚洲国产日韩2020| 麻豆精品久久| 亚洲欧美日韩精品综合在线观看| 久久99伊人| 性欧美丰满熟妇xxxx性久久久| 亚洲精品乱码久久久久久日本蜜臀| 伊人网视频在线| 亚洲三级免费看| 蜜桃视频在线观看免费视频| 国产视频一区二区不卡| 欧美成人有码| 手机在线视频一区| 一区在线中文字幕| 中文字幕你懂的| 在线亚洲国产精品网| 一二三四视频在线中文| 九九九九精品| 一区久久精品| 人妻 丝袜美腿 中文字幕| 亚洲精品日日夜夜| 成人av一区二区三区在线观看| 久久久国产成人精品| 日本一区免费网站| 日韩久久精品一区二区三区| 久久精品系列| 熟女高潮一区二区三区| 中文字幕久久午夜不卡| 色av性av丰满av| 亚洲欧美在线第一页| 午夜欧美巨大性欧美巨大| 日本中文不卡| 日韩av一区二区三区四区| 天天av天天操| 亚洲免费视频中文字幕| 99热这里只有精品在线| 久久99久国产精品黄毛片入口| 视频精品国内| 日韩欧美视频第二区| 久久在线91| 免费一级特黄3大片视频| 欧美视频在线观看一区二区| 91亚洲精选| 亚洲一区在线电影| 51自拍视频在线观看| 综合电影一区二区三区| 国产伦精品一区二区三区免.费| 久久久国产一区| 91精品短视频| 日韩 欧美 高清| 欧美激情一区二区在线| 国产喷水福利在线视频| 久久免费精品日本久久中文字幕| 欧洲在线一区| 亚洲这里只有精品| 亚洲精品成人悠悠色影视| 人妻91麻豆一区二区三区| 日韩免费在线看| 欧美顶级大胆免费视频| 国产免费无码一区二区| 天天色图综合网| 成人在线免费观看| 亚洲xxxxx性| 夜夜嗨网站十八久久| 久久综合在线观看| 亚洲综合视频网| 欧美在线观看在线观看| 国产一区二区丝袜高跟鞋图片| 欧美激情无毛| 成人免费毛片糖心| 91精品欧美一区二区三区综合在 | 77777少妇光屁股久久一区| 国内黄色精品| 特级特黄刘亦菲aaa级| 欧洲精品一区二区三区在线观看| 综合久久2o19| 日本婷婷久久久久久久久一区二区| 黄色资源网久久资源365| 日韩特黄一级片|