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

從SPserver到BRPC

開發 后端
本文是之家廣告引擎團隊結合工作中遇到的超時現象及問題分析過程,對服務框架升級背后的思考做出的一個總結與沉淀。

公眾號轉載自:汽車之家技術委員會

1.背景 

性能優化是后端服務優化的一個重要課題。尤其在廣告業務中,服務超時不但會引發廣告客戶的預算消耗顧慮,更會直接影響C端用戶的瀏覽體驗。而一個服務程序的性能往往是覆蓋了編程語言特性、業務需求邏輯,甚至是操作系統底層原理等多方面因素的綜合性外在表現。面對超時問題,不論是對其進行量化分解、問題復現,還是異常監控,以及后續的超時優化,對后端開發同學而言都極富挑戰。如果變換思路,轉而升級后端服務框架或許會成為最為徹底的解決方案。

本文是之家廣告引擎團隊結合工作中遇到的超時現象及問題分析過程,對服務框架升級背后的思考做出的一個總結與沉淀。

2.問題回顧 

之家廣告檢索服務從建立之初采用的一直是SPserver服務框架。Spserver是一個C++實現的半同步異步的網絡框架,名氣雖然不大,但在當年并發編程尤其是協程概念尚不廣泛的年代,相比較代碼風格各異、封裝獨立性參差不齊的諸多自研網絡框架,它確實不失為一個比較好的選擇。特別是在之家廣告系統搭建之初,其以良好的性能、穩定性和簡便的使用方式,在引擎內部曾得到廣泛應用,可以說在推進廣告業務發展上,SPserver立下了汗馬功勞。

隨著需求的不斷迭代和升級,廣告系統運行中碰到的問題也越來越凸顯,包括:內存消耗、并發、超時、生態融合等等,其中又以超時問題為重。

說起超時,恐怕會讓人抓狂,因為它來的太突然而且幾乎不留任何痕跡。沒錯,監控可以抓到它,但問題是通過分析全鏈路日志你可能不會有任何收獲,因為你所劃分的各個業務邏輯階段的耗時并沒有超過預先設定的超時閾值,而且進程的CPU利用率也不高(可以說很低),讓人詭異的是上游請求方的超時卻是實實在在發生了的。

3.問題分析 

應用服務不是孤立的,它所發生的問題也應該是有關聯的。

圖片

(圖1:來自網絡)

通過圖1知道,一個業務應用在處理網絡請求之前以及發送網絡應答之后,數據會流經網絡、系統內核。那么,超時會不會是由它們引起的呢?為此,我們通過壓測環境復現了超時發生的系統上下文場景:

圖片

(圖2)

可以發現,業務應用與其上下游之間經由多個tcp連接通信,而部分tcp連接在對應socket的接收緩沖區和發送緩沖區卻存在著數據積壓的現象,且兩個隊列的積壓數據量分別固定在4xx和2xx。

不同于grpc倡導的單通道通信模式,spserver原生支持多tcp連接服務,這點無可厚非?;趖cp協議的擁塞控制機制,網絡數據進入應用層前,會在操作系統內核態的fd緩沖區稍作停留,因此短時間內存在一定量的數據積壓也是正常的;既然是緩沖區,自然有大小之分。那么,會不會是緩沖區太小或者網絡擁堵導致的超時呢?又該如何判斷呢?

圖片

(圖3)

可見,系統對socket收發緩沖區的默認值都在80k以上,遠大于圖2中的431字節。而且spserver源代碼中也沒有通過setsockopt系統調用對socket的收發緩沖區重新設值。所以,圖2中緩沖區大小是合理的,而其中接收隊列中的數據量431則可能是有問題的(實際上,431是壓測場景中單次請求的數據長度;在生產環境中,這個隊列長度會隨著C端請求的不同而呈現不同的值,毫無規律可言)。

連續刷新netstat,對比目標tcp連接的發送緩沖隊列或接收隊列長度,發現此場景下收發隊列的長度并不能立即消失,也沒有減小,而是持續了1秒左右才有所變化。由此可以推測2種可能:1)網絡擁堵;2)服務端cpu繁忙,不能及時將數據從緩沖區讀走。第一種猜測通過網絡檢測工具很容易驗證,是否定的;第二種猜測,也通過查看系統以及進程cpu的利用率也很容易排除掉。分析排查到此,似乎走到了死胡同。真的是這樣嗎?

有一個細節似乎被忽略了:作為多線程服務,進程的cpu利用率≈線程cpu利用率之和,但進程cpu利用率低并不意味著某些或某個線程cpu利用率也低。換句話說,個別線程所在cpu的高利用率同樣會使上面第二種猜測成立。

圖片

(圖4)

如圖4,反復施加不同量級的請求壓力,會發現除了18194號線程的cpu使用率保持在99%以上,其他線程的cpu使用率最大都不過40%左右。面對高壓力,服務不能平攤cpu壓力,這就是問題!

4.根本原因 

上帝總是吝嗇造就一個十全十美的東西,對待SPserver自然也不例外。其實排查走到線程的cpu利用率時,已經接近真實原因,但還不是真相。為此,擼了一遍spserver的源碼,得出如下線程模型示意圖。

圖片

(圖5)

不出所料,SPserver采用的是單線程reactor網絡模型,即單線程負責事件監聽、socket讀寫,多線程負責業務邏輯處理。單線程io的優劣顯而易見,可以很好的利用thread local加速,也沒有cpu cache bounding的問題;但問題是一旦某個socket上待讀取或待發送的數據量較大時,就會阻塞其他socket上數據的收發,這就比較致命。退一步講,即便每個socket fd上的數據量大小均勻,在上述單線程的cpu吃滿時,整個框架的數據收發效率同樣會成為所在服務的性能瓶頸。

真相大白了,原來SPserver框架的設計機制決定了它不適合高并發、高吞吐業務場景的事實。但如果是在業務初期又或是業務流量比較小,個人覺得它仍可視為一個不錯的選擇(SPserver框架的c++代碼風格還是很不錯的,很簡潔,封裝性也很好,值得借鑒)。

5.選擇BRPC 

如今rpc框架林立,我們的選擇是百度研發的brpc框架,主要是基于以下考慮:

1)高并發高性能

個人理解后面會著重介紹一下。這里我只貼一個brpc和其他rpc框架性能的對比圖:

圖片

(圖6:來自brpc官網)

是的,你沒有看錯,在跨機多client請求單server的場景下,brpc框架的性能已經絕對領先國外知名的rpc框架,尤其是grpc,用碾壓一詞來形容也不為過。

2)文檔資料豐富

brpc有著豐富的中英文文檔,豐富程度讓人有點難以置信,曾一度有人認為是百度內部的技術資料無意中被公開了,呵呵。

3)apache 的頂級項目,目前有數千個企業級應用

說直白點,已經在生產中經歷過千錘百煉了,質量有保證。

當然,brpc還有諸多特性,這里不再贅述。詳見brpc官網或移步到github incubator-brpc項目。

6.性能初探 

經歷了spserver框架,免不了要有一番對比。在介紹brpc的線程模型前,先了解一個bprc中的概念:bthread。我們看一下官方的解釋:

“bthread是brpc使用的M:N線程庫,目的是在提高程序的并發度的同時,降低編碼難度,并在核數日益增多的CPU上提供更好的scalability和cache locality。”M:N“是指M個bthread會映射至N個pthread,一般M遠大于N。由于linux當下的pthread實現[NPTL]是1:1的,M個bthread也相當于映射至N個[LWP]。bthread的前身是Distributed Process(DP)中的fiber,一個N:1的合作式線程庫,等價于event-loop庫,但寫的是同步代碼。”

個人理解bthread其實是一個運行在系統pthread之上的可以低成本、靈活調度的任務(隊列),而這個任務載有自身運行時的上下文信息(比如:棧、寄存器、signal等),使它能夠隨意切換在不同的pthread上運行。其低成本體現在幾個方面:1)bthread實現了多種同步原語,可以和系統線程實現相互等待,我們可以像使用pthread一樣使用bthread;2)納秒級建立bthread,耗時遠低于pthread;3)幾乎沒有上下文切換,且將cpu cache locality和thread local發揮到了極致,這部分后面會有實踐說明。

下面再來看看它的線程模型示意圖:

圖片

(圖7)

由圖7可見:1)在brpc框中系統級線程池pthread是高效運行的基礎設施,不再與具體的業務邏輯直接綁定,取而代之的是bthread;2)bthread按不同責任分成不同類型,且不同類型的bthread有著不同的數量。比如:網絡事件的監聽和驅動由一個bthread專職處理,當然也可以通過命令行啟動服務時配置,或者服務啟動后通過web入口更新;而處理具體請求的bthread數量則是動態計算的;3)brpc支持不忙的線程“偷”繁忙線程的bthread任務來提升系統整體效能。

那么問題來了,某一個socket fd上大量數據的接收或發送,會發生類似spserver那樣的阻塞嗎?答案是不會。首先,每個fd有兩個bthread,分別負責接收和發送,這就能保證收發互不影響;其次,bthread作為被調度的任務,會被分派給不同系統線程(也就是pthread),而一個系統線程同一時刻只能執行一個bthread任務,加上bthread 支持的stealing機制,就保證了進程中所有線程都是有事可做的,不會存在空閑的pthread(除非請求量非常小,不足以給pthread平分)。因此,基本上是不可能發生“一處阻塞處處阻塞”的情況的。

使用更大量的壓測請求對brpc服務發壓,得到各pthread的cpu消耗如下:

圖片

(圖8)

由圖8可見,系統的多核cpu得到充分的調動,且隨著壓力的增大cpu的擴展性表現良好;再來看一下網絡隊列:

圖片

(圖9)

可見,(同機grpc單通道壓測,僅有一個tcp連接)tcp fd的收發緩沖區得到了充分的利用,且隊列長度很快能減少至0。

Socket緩沖區不再是擺設,整個系統活了起來!

另外,值得一提的是線程間的上下文切換。因為過多的上下文切換,會把cpu時間消耗在寄存器、線程棧的保存和恢復上,從而降低服務的整體性能。brpc框架的m:n線程庫,在這方面做的比較好,它使用固定的系統線程調度運行大量用戶態的bthread,將所有的切換基本上都限制在了用戶態,這就避免了內核態和用戶態的數據交換(用戶態之間切換耗時在100~200ns,而內核態和用戶態切換則在微秒級)。通過命令也可以證明這一點:

圖片

(圖10)

如圖10,我們的服務在使用brpc后上下文切換頻次基本保持在每秒1次。再回頭來看看spserver框架,由于沒有用戶態任務的概念,只是單純依賴系統級的線程池,就不可避免的使cpu不斷地游離于多線程調度和任務執行上,內核態和用戶態間的上下文切換開銷肯定少不了:

圖片

(圖11)

用戶態線程切換的另一個好處是,可以將內核態線程與cpu核心很好的綁定到了一起,這就能夠盡量避免cpu不同核心間cacheline的數據同步,從而提升性能,這也是brpc框架高性能的一個原因。

7.應用實踐 

brpc的編譯安裝及基本使用,在官方文檔都有較為詳細的說明,比較簡單。這里再分享一下我們在brpc應用過程中遇到過的幾個值得注意的地方:

1)thread local.

它是多線程程序常用的加速手段。比如tcmalloc就充分利用了這個技術,通過在線程內部設置局部緩存來加速小額空間的申請效率。之家廣告引擎服務毫無例外的也使用了這項技術。但需要注意的是,在引入brpc框架后,原有的pthread id可能將不再有效,如果你執意為之,就可能會在程序運行期間遇到莫名其妙的段錯誤。這是因為我們的業務代碼是托管在bthread中的,而bthread是在系統pthread之間隨機游走的,使用pthread1的標識信息到pthreadN的線程棧中讀取緩存數據自然是讀不到的。我們的臨時解決辦法是,暫時剝離掉thread local緩存,在控制鎖粒度的前提下改為全局cache,暴力、簡單、有效。

2)cpu profiler

顧名思義,你的程序可能會因此得以優化并加速運行。但事實并非完全如此。如果你們業務程序的CMakeList來自某個demo或網絡程序,則最好要注意這個編譯選項。它的原理是通過調用對應的庫函數采集活躍線程中的線程函數信息,并根據棧體現的函數調用關系生成調用圖,進而進行調用優化。所以,它會加速但不是立即,因為它要先采集數據、再分析,最后才能優化運行。我們實踐初期,肉眼可見其性能相比較不加此編譯選項要低10%以上,所以,對待cpu profiler要慎用。

3)關于grpc

前面提到過,gprc默認是基于單通道的通信方式,這是既是google官方的建議也是微軟的實踐建議。下面截圖來自微軟的” Performance best practices with gRPC”一文:

圖片

(圖12:截自微軟官網)

不能總是人云亦云。結合具體業務場景,我們的實踐結論是:多通道數據傳輸效率要優于單通道。受限于tcp速率限制,單通道(連接)情況下,一旦遇到高吞吐的數據傳輸業務場景,會明顯阻塞此網絡連接。特別對于廣告業務來說,我們允許有大數據塊傳輸,但不允許大數據塊的傳輸影響其他正常的廣告數據響應。

因此,我們的建議是:要么使用多通道grpc或者其他協議方式,要么就放棄grpc吧(事實上,grpc在生產中還有其他問題)。

4)并發

早在spserver時期,我們曾在其中實現了并發線程庫(確切說是一個并發線程類),但效果并未達到預期,因為它一定程度上加重了多線程調度成本。而如今的brpc則直接提供了較為簡單的并發線程 api,我們可以直接使用,無需造輪。

然而,會面臨新的選擇:用bthread_start_background,還是用bthread_start_urgent。使用后者啟動bthread后會在當前pthread立即執行任務,而前者則會讓新生成的bthread任務排隊等待調度。在我們的廣告檢索過濾場景中,適合使用后者;而在執行http請求時,則更適合使用前者。建議brpc開發者,一定要根據自己業務的實際情況再做決定。

8.最后 

通過從SPserver框架升級到BRPC框架,在相同的業務場景下,之家廣告服務qps從5w+提升到了10w左右,服務實例數也因此下降了一半以上,收益明顯。

另外,Brpc提供了相對豐富的內置服務,這里貼兩個具有代表性功能的web界面,都比較實用,推薦大家嘗試。

圖13:我們可以看到服務的qps、latency分布等數據,方便把握服務的運行時信息。

圖片

(圖13)

而從下圖,可以看到服務運行期間在等待鎖上所消耗的時間及發生等待的函數,從而支持我們有針對性的開展性能優化。

圖片

(圖14)

note

限于作者水平,難免會有理解和描述上的疏漏或者錯誤,歡迎共同交流、指正。文章供于學習交流,轉載注明出處,謝謝!

作者簡介

圖片

汽車之家

主機廠事業部-技術部

楊明哲

2018年加入汽車之家,目前任職于主機廠事業部-技術部-廣告技術及系統團隊,負責之家廣告引擎架構的設計與研發等相關工作。

圖片

責任編輯:武曉燕 來源: 汽車之家技術委員會
相關推薦

2025-04-30 10:55:46

2021-03-03 08:18:54

Service組件

2023-11-16 21:20:13

ListWatchkube

2015-09-17 13:09:48

預裝軟件毒瘤國產手機

2022-05-09 08:35:43

面試產品互聯網

2013-06-06 13:42:48

OSPF入門配置

2017-06-26 09:15:39

SQL數據庫基礎

2013-04-07 10:10:23

2022-09-04 21:46:12

數據信息風險

2023-10-12 15:38:50

FreeDOS命令

2012-03-31 10:49:18

ibmdw

2023-12-20 14:44:33

軟件開發DevOpsNoOps

2022-06-10 08:17:52

HashMap鏈表紅黑樹

2011-02-23 11:22:59

DojoHTML 5

2017-03-20 08:41:00

2023-05-17 19:37:53

2015-11-26 10:20:17

F5應用交付

2020-06-18 14:39:42

MongoDB數據數據庫

2011-03-23 14:09:38

2022-10-20 08:02:29

ELFRTOSSymbol
點贊
收藏

51CTO技術棧公眾號

亚洲女同中文字幕| 青青青草视频在线| 三级成人在线视频| 日韩中文字幕网| 亚洲网中文字幕| 新版中文在线官网| xf在线a精品一区二区视频网站| 国产不卡精品视男人的天堂| 四虎影院中文字幕| 精品无人区一区二区| 91成人免费网站| 一二三四中文字幕| 日韩精品视频无播放器在线看| 日本特黄久久久高潮| 欧美人与物videos| 中文字幕黄色网址| 另类春色校园亚洲| 欧美久久婷婷综合色| 国产一区二区在线视频播放| 快射av在线播放一区| 91热门视频在线观看| 亚洲xxxx视频| 黄色大全在线观看| 亚洲欧洲日本mm| 另类图片亚洲另类| 精品少妇一区二区三区免费观| 91成人在线网站| 一本色道亚洲精品aⅴ| 日韩黄色片在线| 欧美三级理伦电影| 久久久精品免费网站| 国产精品xxx在线观看www| 91成品人影院| 日韩经典中文字幕一区| 91精品国产九九九久久久亚洲| 日韩av网站在线播放| 精品高清久久| 亚洲国内高清视频| 免费观看黄网站| 亚洲最大成人| 欧美日韩在线看| 丰满的少妇愉情hd高清果冻传媒| 免费黄色网页在线观看| 亚洲国产精品传媒在线观看| 久久涩涩网站| 污污网站在线免费观看| 成人国产在线观看| 国产精品美女黄网| www.亚洲黄色| 国产精品一二三四五| 91久久久久久久久久久久久| 艳妇乳肉豪妇荡乳av| 日韩va亚洲va欧美va久久| 欧美一级电影久久| 天天干在线播放| 国产精品入口66mio| 午夜精品一区二区三区在线| 久久久久久久福利| 激情另类综合| 7777精品久久久久久| 日韩精品在线免费视频| 亚洲综合日本| 国产mv久久久| wwwwww在线观看| 青青草伊人久久| 91精品久久久久| 国产又黄又粗又长| 国产伦精品一区二区三区视频青涩| 成人字幕网zmw| а√中文在线资源库| 处破女av一区二区| 精品无码久久久久国产| 黄上黄在线观看| 国产欧美日韩另类一区| 一区二区三区四区国产| 国产原厂视频在线观看| 亚洲国产美女搞黄色| 自拍日韩亚洲一区在线| 日韩免费va| 欧美欧美欧美欧美首页| 日韩精品视频网址| 国产乱论精品| 国产亚洲精品久久久久动| 中国1级黄色片| 午夜精品av| 欧美中文字幕在线观看| 中文字幕你懂的| 国产精品亚洲一区二区三区在线| 国产欧美日韩伦理| 波多野结衣在线影院| 亚洲欧美另类图片小说| 欧美一级在线看| 岛国精品在线| 精品国产乱码久久久久久久| 国产 欧美 在线| 91av精品| 欧美在线视频观看| 国产色在线视频| 91看片淫黄大片一级在线观看| 亚洲国产精品毛片| av蜜臀在线| 欧美日韩的一区二区| 国产精品入口麻豆| 99久久www免费| 97精品国产97久久久久久春色| 黄色一区二区视频| 成人在线视频一区二区| 先锋影音欧美| 91超碰免费在线| 欧美日韩国产中文| 在线观看日韩精品视频| 91精品亚洲| 国产精品激情自拍| 日韩专区第一页| 亚洲婷婷在线视频| 亚洲国产精品毛片av不卡在线| 日本一区二区三区电影免费观看| 亚洲天堂开心观看| 国产一级片免费| 久久激情五月婷婷| 欧美另类一区| 日本三级韩国三级欧美三级| 欧美三级日本三级少妇99| 亚洲av成人片色在线观看高潮 | 黄色视屏免费在线观看| 欧美日韩综合视频网址| 久久久久亚洲av无码网站| 日本午夜一区| 热久久视久久精品18亚洲精品| 亚洲xxx在线| 亚洲色图20p| 污视频网站观看| 精品国产精品久久一区免费式| 992tv成人免费影院| 性生活三级视频| 日韩理论片网站| 中文字幕亚洲乱码| 日韩在线视频精品| 国产激情综合五月久久| 欧美成人综合在线| 福利微拍一区二区| 成年人的黄色片| 欧美日本三区| 99中文视频在线| 中文av资源在线| 欧美一区二区在线播放| 日本精品在线免费观看| 蜜桃视频在线一区| 一区二区三区四区在线视频| 日韩一级二级| 中文字幕日韩综合av| 无码视频在线观看| 国产欧美日韩三级| www.久久av.com| 香港欧美日韩三级黄色一级电影网站| 国产精品亚洲第一区| 天堂地址在线www| 欧美老肥妇做.爰bbww| 99成人在线观看| 狠狠久久亚洲欧美| av久久久久久| 欧美挤奶吃奶水xxxxx| 992tv成人免费影院| 激情综合闲人网| 欧美日韩国产一级| 亚洲av鲁丝一区二区三区| 成人污污视频在线观看| www..com日韩| 神马影视一区二区| 国产精品午夜视频| 欧美bbbxxxxx| 亚洲乱码国产乱码精品精天堂| www五月天com| 国产精品国产自产拍在线| 国产大片一区二区三区| 激情自拍一区| 欧美日韩在线观看一区二区三区| 伊人久久高清| 久久综合伊人77777蜜臀| 国产综合无码一区二区色蜜蜜| 欧美日韩国产区| 美女网站视频色| 国产成人精品免费一区二区| 国产欧美日韩网站| 成人精品视频| 91免费福利视频| 日本不卡网站| 日韩在线激情视频| 国精产品一品二品国精品69xx| 欧美午夜电影在线| 波多野结衣久久久久| 成人ar影院免费观看视频| 国产成人综合一区| 午夜精品偷拍| 日本最新一区二区三区视频观看| 国产精品1区在线| 欧美在线激情视频| 动漫一区在线| 亚洲天堂av综合网| 高潮一区二区三区乱码| 欧美日韩一区在线观看| 日本天堂网在线观看| 国产精品午夜在线| 亚洲蜜桃精久久久久久久久久久久| 蜜臀av一区二区在线免费观看| 久久av高潮av| 欧美电影《睫毛膏》| 久久精品日产第一区二区三区精品版| 久久久久久久性潮| 欧美一级电影久久| 韩国日本一区| 精品国产一区二区在线| 青青青草原在线| 精品欧美一区二区三区精品久久 | 亚洲欧美日韩国产综合精品二区| 亚洲在线视频一区二区| 色婷婷久久久| 99热国产免费| 国产精品原创视频| 日韩av免费网站| 国产高清自产拍av在线| 久久国产精品亚洲| 日本在线看片免费人成视1000| 精品在线小视频| 免费av一级片| 欧美变态口味重另类| 国产精品久久影视| 欧美三级日韩三级国产三级| 黄瓜视频在线免费观看| 五月婷婷综合网| 久久免费播放视频| 亚洲精品高清在线观看| 日本不卡一二区| 国产精品久久网站| 亚洲av熟女国产一区二区性色| 91亚洲精品久久久蜜桃| 亚洲欧美高清在线| 国产成人99久久亚洲综合精品| 日本高清一区二区视频| 久久精品国产一区二区| 亚洲最大成人在线观看| 青青草成人在线观看| 99视频精品免费| 视频一区在线视频| 日本成人中文字幕在线| 全国精品久久少妇| av五月天在线| 久色婷婷小香蕉久久| 亚欧激情乱码久久久久久久久| 欧美a级一区二区| 91人人澡人人爽人人精品| 日本最新不卡在线| 日本在线观看免费视频| 蜜桃一区二区三区在线| 中文字幕成人免费视频| 国产一区二区三区四| 久久久久久久久久久影视| 东方欧美亚洲色图在线| 在线播放第一页| 99久久99久久免费精品蜜臀| 久久人人妻人人人人妻性色av| 久久这里只有精品6| 亚洲av无码一区二区三区人| 日本一区二区免费在线观看视频| 欧美激情视频二区| 亚洲视频在线一区观看| 久久99久久98精品免观看软件| 亚洲国产视频在线| 国产又黄又粗又爽| 欧美日韩大陆一区二区| jlzzjlzzjlzz亚洲人| 亚洲丁香久久久| 天堂在线中文资源| 在线观看视频亚洲| 高清全集视频免费在线| 久久免费视频网站| 激情亚洲影院在线观看| 成人精品在线观看| 久久精品国产亚洲blacked| 欧美日韩无遮挡| 婷婷综合五月| 欧美在线一区视频| 日本va欧美va精品| 真实乱偷全部视频| 久久综合视频网| 国产成人免费在线观看视频| 夜色激情一区二区| 日韩久久中文字幕| 欧美精品一级二级| 五月天久久久久久| 色婷婷久久一区二区| 狂野欧美性猛交xxxxx视频| 青青久久aⅴ北条麻妃| 91精品麻豆| 九九九九九九精品| 亚州av乱码久久精品蜜桃| 天天夜碰日日摸日日澡性色av| 免费一级片91| 久久性爱视频网站| 国产精品成人免费精品自在线观看| 成人免费看片98| 欧美午夜精品理论片a级按摩| 亚洲成人第一区| 这里只有精品丝袜| 涩涩av在线| 亚洲在线www| 欧美一区二区三| 日本丰满少妇xxxx| 国产精品一品视频| 国产精品suv一区二区88| 欧美性20hd另类| 亚洲va天堂va欧美ⅴa在线| 伊人av综合网| 原纱央莉成人av片| 成人av中文| 国产精品毛片一区二区在线看| 国产91在线免费| 国产成人精品免费一区二区| 国产美女网站视频| 欧美在线不卡视频| 在线观看xxx| 久久久亚洲国产天美传媒修理工| 欧美黄色a视频| 日韩精品欧美在线| 亚洲欧美日韩专区| 91传媒理伦片在线观看| 亚洲精品视频在线观看网站| 国产精品sm调教免费专区| 亚洲欧美999| 韩国精品一区| 国产亚洲福利社区| 韩国在线视频一区| 日韩精品――色哟哟| 亚洲精品国产视频| 99热这里只有精品在线| 久久精品国产精品| 综合久草视频| 色呦呦网站入口| 韩国毛片一区二区三区| 中文国语毛片高清视频| 欧美区一区二区三区| 欧美13一16娇小xxxx| 国产精品日韩在线一区| 日韩av久操| 亚洲欧美日韩一级| 国产精品日日摸夜夜摸av| 波多野结衣视频观看| 国产一区二区三区精品久久久 | 午夜精品久久久久99热蜜桃导演 | bt7086福利一区国产| 精品无码一区二区三区电影桃花| 日韩欧美一区二区不卡| 日本伦理一区二区| 痴汉一区二区三区| 亚洲福利一区| 毛茸茸多毛bbb毛多视频| 欧美日韩亚洲视频一区| 成年在线观看免费人视频 | 国内不卡的一区二区三区中文字幕| 亚洲一区二三| 国产精品一卡二卡| 国产污视频在线观看| 亚洲欧美日韩图片| 成人国产精选| 异国色恋浪漫潭| 成人91在线观看| 男操女视频网站| www.日韩视频| 日日夜夜精品视频| 成人黄色av片| 国产精品毛片大码女人| 999国产精品视频免费| 久久久久久高潮国产精品视| 小说区图片区色综合区| 狠狠热免费视频| 亚洲丝袜另类动漫二区| 欧美性猛交 xxxx| 日本成人激情视频| 91精品国产91久久综合| 亚洲一级Av无码毛片久久精品| 欧美体内谢she精2性欧美| 97电影在线观看| 成人影片在线播放| 麻豆成人精品| 国产真实乱在线更新| 亚洲国产欧美一区二区丝袜黑人 | 激情欧美日韩一区| 久久久久久久毛片| 日韩三级视频在线看| 在线观看特色大片免费视频| 亚洲人成77777| 成人av免费在线播放| 一二三四区在线| 久久久久久久91| 成人在线免费视频观看| www.四虎在线| 欧美日韩国产一级| 玛雅亚洲电影| 黄网站色视频免费观看| 欧美国产精品劲爆|