1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        系統(tǒng)架構(gòu)性能問(wèn)題診斷及優(yōu)化思路

        共 5306字,需瀏覽 11分鐘

         ·

        2022-03-03 00:16

        點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)??

        作者 | 人月聊IT
        出品?|?http://u6.gg/k3qpu

        今天談下業(yè)務(wù)系統(tǒng)性能問(wèn)題分析診斷和性能優(yōu)化方面的內(nèi)容。這篇文章重點(diǎn)還是談已經(jīng)上線的業(yè)務(wù)系統(tǒng)后續(xù)出現(xiàn)性能問(wèn)題后的問(wèn)題診斷和優(yōu)化重點(diǎn)。

        | 系統(tǒng)性能問(wèn)題分析流程

        我們首先來(lái)分析下如果一個(gè)業(yè)務(wù)系統(tǒng)上線前沒(méi)有性能問(wèn)題,而在上線后出現(xiàn)了比較嚴(yán)重的性能問(wèn)題,那么實(shí)際上潛在的場(chǎng)景主要來(lái)自于以下幾個(gè)方面。
        • 業(yè)務(wù)出現(xiàn)大并發(fā)的訪問(wèn),導(dǎo)致出現(xiàn)性能瓶頸
        • 上線后的系統(tǒng)數(shù)據(jù)庫(kù)數(shù)據(jù)日積月累,數(shù)據(jù)量增加后出現(xiàn)性能瓶頸
        • 其它關(guān)鍵環(huán)境改變,比如我們常說(shuō)的網(wǎng)絡(luò)帶寬影響
        正是由于這個(gè)原因,當(dāng)我們發(fā)現(xiàn)性能問(wèn)題的時(shí)候,首先就需要判斷是單用戶非并發(fā)狀態(tài)下本身就有性能問(wèn)題,還是說(shuō)在并發(fā)狀態(tài)才存在性能問(wèn)題。對(duì)于單用戶性能問(wèn)題往往比較容易測(cè)試和驗(yàn)證,對(duì)于并發(fā)性能問(wèn)題我們可以在測(cè)試環(huán)境進(jìn)行加壓測(cè)試和驗(yàn)證,以判斷并發(fā)下的性能。
        如果是單用戶本身就存在性能問(wèn)題,那么大部分問(wèn)題都出在程序代碼和SQL需要進(jìn)一步優(yōu)化上面。如果是并發(fā)性能問(wèn)題,我們就需要進(jìn)一步分析數(shù)據(jù)庫(kù)和中間件本身的狀態(tài),看是否需要對(duì)中間件進(jìn)行性能調(diào)優(yōu)。
        在加壓測(cè)試過(guò)程中,我們還需要對(duì)CPU,內(nèi)存和JVM進(jìn)行監(jiān)控,觀察是否存在類似內(nèi)存泄漏無(wú)法釋放等情況,即并發(fā)下性能問(wèn)題本身也可能是代碼本身原因?qū)е滦阅墚惓!?/span>

        | 性能問(wèn)題影響因素分析

        對(duì)于性能問(wèn)題影響因素,簡(jiǎn)單來(lái)說(shuō)包括了硬件環(huán)境,軟件運(yùn)行環(huán)境和軟件程序三個(gè)方面的主要內(nèi)容。下面分別再展開(kāi)說(shuō)明下。
        硬件環(huán)境
        硬件環(huán)境就是我們常說(shuō)的計(jì)算,存儲(chǔ)和網(wǎng)絡(luò)資源。
        對(duì)于服務(wù)器的計(jì)算能力,一般來(lái)說(shuō)廠家都會(huì)提供TPMC參數(shù)作為一個(gè)參考數(shù)據(jù),但是我們實(shí)際看到相同TPMC能力下的X86服務(wù)器能力仍然低于小型機(jī)的能力。
        除了服務(wù)器的計(jì)算能力參數(shù),另外一個(gè)重點(diǎn)就是我們說(shuō)的存儲(chǔ)設(shè)備,影響到存儲(chǔ)的重點(diǎn)又是IO讀寫(xiě)性能問(wèn)題。有時(shí)候我們監(jiān)控發(fā)現(xiàn)CPU和內(nèi)存居高不下,而真正的瓶頸通過(guò)分析反而發(fā)現(xiàn)是由于IO瓶頸導(dǎo)致,由于讀寫(xiě)性能跟不上,導(dǎo)致大量數(shù)據(jù)無(wú)法快速持久化并釋放內(nèi)存資源。
        比如在Linux環(huán)境下,本身也提供了性能監(jiān)控工具方便進(jìn)行性能分析。比如常用的iostat,ps,sar,top,vmstat等,這些工具可以對(duì)CPU,內(nèi)存,JVM,磁盤(pán)IO等進(jìn)行性能監(jiān)控和分析,以發(fā)現(xiàn)真正的性能問(wèn)題在哪里。
        比如我們常說(shuō)的內(nèi)存使用率持續(xù)告警,你就必須發(fā)現(xiàn)是高并發(fā)調(diào)用導(dǎo)致,還是JVM內(nèi)存泄漏導(dǎo)致,還是本身由于磁盤(pán)IO瓶頸導(dǎo)致。
        對(duì)于CPU,內(nèi)存,磁盤(pán)IO性能監(jiān)控和分析的一個(gè)思路可以參考:

        | 運(yùn)行環(huán)境-數(shù)據(jù)庫(kù)和應(yīng)用中間件
        數(shù)據(jù)庫(kù)和應(yīng)用中間件性能調(diào)優(yōu)是另外一個(gè)經(jīng)常出現(xiàn)性能問(wèn)題的地方。

        數(shù)據(jù)庫(kù)調(diào)優(yōu)

        拿Oracle數(shù)據(jù)庫(kù)來(lái)說(shuō),影響數(shù)據(jù)庫(kù)性能的因素包括:系統(tǒng)、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)。數(shù)據(jù)庫(kù)的優(yōu)化包括:優(yōu)化數(shù)據(jù)庫(kù)磁盤(pán)I/O、優(yōu)化回滾段、優(yōu)化Rrdo日志、優(yōu)化系統(tǒng)全局區(qū)、優(yōu)化數(shù)據(jù)庫(kù)對(duì)象。
        要調(diào)整首先就需要對(duì)數(shù)據(jù)庫(kù)性能進(jìn)行監(jiān)控。

        我們可以在init.ora參數(shù)文件中設(shè)置TIMED_STATISTICS=TRUE 和在你的會(huì)話層設(shè)置ALTER SESSION SET STATISTICS=TRUE 。運(yùn)行svrmgrl 用 connect internal 注冊(cè),在你的應(yīng)用系統(tǒng)正?;顒?dòng)期間,運(yùn)行utlbstat.sql 開(kāi)始統(tǒng)計(jì)系統(tǒng)活動(dòng),達(dá)到一定的時(shí)間后,執(zhí)行utlestat.sql 停止統(tǒng)計(jì)。統(tǒng)計(jì)結(jié)果將產(chǎn)生在report.txt 文件中。

        數(shù)據(jù)庫(kù)性能優(yōu)化應(yīng)該是一個(gè)持續(xù)性的工作,一個(gè)方面是本身的性能和參數(shù)巡檢,另外一個(gè)方面就是DBA也會(huì)經(jīng)常提取最占用內(nèi)存的低效SQL語(yǔ)句給開(kāi)發(fā)人員進(jìn)一步分析,同時(shí)也會(huì)從數(shù)據(jù)庫(kù)本身的以下告警KPI指標(biāo)中發(fā)現(xiàn)問(wèn)題。
        比如我們可能會(huì)發(fā)現(xiàn)Oracle數(shù)據(jù)庫(kù)出現(xiàn)內(nèi)存使用率高的告警,而通過(guò)檢查會(huì)發(fā)現(xiàn)是產(chǎn)生了大量的Redo日志導(dǎo)致,那么我們就需要從程序上進(jìn)一步分析為何會(huì)產(chǎn)生如此多的回滾。
        應(yīng)用中間件性能分析和調(diào)優(yōu)
        應(yīng)用中間件容器即我們常說(shuō)的Weblogic, Tomcat等應(yīng)用中間件容器或Web容器。應(yīng)用中間件調(diào)優(yōu)一個(gè)方面是本身的配置參數(shù)優(yōu)化設(shè)置,一個(gè)方面就是JVM內(nèi)存啟動(dòng)參數(shù)調(diào)優(yōu)。
        對(duì)于應(yīng)用中間件本身的參數(shù)設(shè)置,主要包括了JVM啟動(dòng)參數(shù)設(shè)置,線程池設(shè)置,連接數(shù)的最小最大值設(shè)置等。如果是集群環(huán)境,還涉及到集群相關(guān)的配置調(diào)優(yōu)。
        對(duì)于JVM啟動(dòng)參數(shù)調(diào)優(yōu),往往也是應(yīng)用中間件調(diào)優(yōu)的一個(gè)關(guān)鍵點(diǎn),但是一般JVM參數(shù)調(diào)優(yōu)會(huì)結(jié)合應(yīng)用程序一起進(jìn)行分析。
        比如我們常見(jiàn)的JVM堆內(nèi)存溢出,如果程序代碼沒(méi)有內(nèi)存泄漏問(wèn)題的話,我就需要考慮調(diào)整JVM啟動(dòng)時(shí)候堆內(nèi)存設(shè)置。在32位操作系統(tǒng)下只能夠設(shè)置到4G,但是在64位操作系統(tǒng)下已經(jīng)可以設(shè)置到8G甚至更大的值。
        其中JVM啟動(dòng)的主要控制參數(shù)說(shuō)明如下:
        -Xmx??#設(shè)置最大堆空間
        -Xms??#設(shè)置最小堆空間
        -XX:MaxNewSize?#設(shè)置最大新生代空間
        -XX:NewSize????#設(shè)置最小新生代空間
        -XX:MaxPermSize??#設(shè)置最大永久代空間(注:新內(nèi)存模型已經(jīng)替換為Metaspace)
        -XX:PermSize?????#設(shè)置最小永久代空間(注:新內(nèi)存模型已經(jīng)替換為Metaspace)
        -Xss???#設(shè)置每個(gè)線程的堆棧大小
        那么這些值究竟設(shè)置多大合適,具體來(lái)講:
        Java整個(gè)堆大小設(shè)置,Xmx 和 Xms設(shè)置為老年代存活對(duì)象的3-4倍,即FullGC之后的老年代內(nèi)存占用的3-4倍。永久代 PermSize和MaxPermSize設(shè)置為老年代存活對(duì)象的1.2-1.5倍。
        年輕代Xmn的設(shè)置為老年代存活對(duì)象的1-1.5倍。
        老年代的內(nèi)存大小設(shè)置為老年代存活對(duì)象的2-3倍。

        注意在新的JVM內(nèi)存模型下已經(jīng)沒(méi)有PermSize而是變化為Metaspace,因此需要考慮Heap內(nèi)存和Metaspace大小的配比,同時(shí)還需要考慮相關(guān)的垃圾回收機(jī)制是采用哪種類型等。

        對(duì)于JVM內(nèi)存溢出問(wèn)題,我前面寫(xiě)過(guò)一篇專門(mén)的分析文章可以參考。

        從表象到根源-一個(gè)軟件系統(tǒng)JVM內(nèi)存溢出問(wèn)題分析解決全過(guò)程:

        軟件程序性能問(wèn)題分析
        在這里首先要強(qiáng)調(diào)的一點(diǎn)就是,當(dāng)我們發(fā)現(xiàn)性能問(wèn)題后首先想到的就是擴(kuò)展資源,但是大部分的性能問(wèn)題本身并不是資源能力不夠?qū)е?,而是我們程序?qū)崿F(xiàn)上出現(xiàn)明顯缺陷。
        比如我們經(jīng)??吹降拇罅垦h(huán)創(chuàng)建連接,資源使用了不釋放,SQL語(yǔ)句低效執(zhí)行等。
        為了解決這些性能問(wèn)題,最好的方法仍然是在事前控制。其中包括了事前的代碼靜態(tài)檢查工具的使用,也包括了開(kāi)發(fā)團(tuán)隊(duì)對(duì)代碼進(jìn)行的Code Review來(lái)發(fā)現(xiàn)性能問(wèn)題。
        所有已知的問(wèn)題都必須形成開(kāi)發(fā)團(tuán)隊(duì)的開(kāi)發(fā)規(guī)范要求,避免重復(fù)再犯。

        | 業(yè)務(wù)系統(tǒng)性能問(wèn)題擴(kuò)展思考

        對(duì)于業(yè)務(wù)系統(tǒng)的性能優(yōu)化,除了上面談到的標(biāo)準(zhǔn)分析流程和分析要素外,再談下其它一些性能問(wèn)題引發(fā)的關(guān)鍵思考。
        上線前的性能測(cè)試是否有用?
        有時(shí)候大家可能覺(jué)得奇怪,為何我們系統(tǒng)上線前都做了性能測(cè)試,為何上線后還是會(huì)出現(xiàn)系統(tǒng)性能問(wèn)題。那么我們可以考慮下實(shí)際上我們上線前性能測(cè)試可能存在的一些無(wú)法真實(shí)模擬生產(chǎn)環(huán)境的地方,具體為:
        • 硬件能否完全模擬真實(shí)環(huán)境?最好的性能測(cè)試往往是直接在搭建完成的生產(chǎn)環(huán)境進(jìn)行。
        • 數(shù)據(jù)量能否模擬實(shí)際場(chǎng)景?真實(shí)場(chǎng)景往往是多個(gè)業(yè)務(wù)表都已經(jīng)存在大數(shù)據(jù)量的積累而非空表。
        • 并發(fā)能否模擬真實(shí)場(chǎng)景?一個(gè)是需要錄制復(fù)合業(yè)務(wù)場(chǎng)景,一個(gè)是需要多臺(tái)壓測(cè)機(jī)。
        而實(shí)際上我們?cè)谧鲂阅軠y(cè)試的時(shí)候以上幾個(gè)點(diǎn)都很難真正做到,因此要想完全模擬出生產(chǎn)真實(shí)環(huán)境是相當(dāng)困難的,這也導(dǎo)致了很多性能問(wèn)題是在真正上線后才發(fā)現(xiàn)。
        系統(tǒng)本身水平彈性擴(kuò)展是否完全解決性能問(wèn)題?
        第二個(gè)點(diǎn)也是我們經(jīng)常談的比較多的點(diǎn),就是我們的業(yè)務(wù)系統(tǒng)在進(jìn)行架構(gòu)設(shè)計(jì)的時(shí)候,特別是面對(duì)非功能性需求,我們都會(huì)談到系統(tǒng)本身的數(shù)據(jù)庫(kù),中間件都采用了集群技術(shù),能夠做到彈性水平擴(kuò)展。那么這種彈性水平擴(kuò)展能力是否又真正解決了性能問(wèn)題?
        實(shí)際上我們看到對(duì)于數(shù)據(jù)庫(kù)往往很難真正做到無(wú)限的彈性水平擴(kuò)展,即使對(duì)于Oracle RAC集群往往也是最多擴(kuò)展到單點(diǎn)的2到3倍性能。對(duì)于應(yīng)用集群往往可以做到彈性水平擴(kuò)展,當(dāng)前技術(shù)也比較成熟。
        當(dāng)中間件能夠做到完全彈性擴(kuò)展的時(shí)候,實(shí)際上仍然可能存在性能問(wèn)題,即隨著我們系統(tǒng)的運(yùn)行和業(yè)務(wù)數(shù)據(jù)量的不斷積累增值。實(shí)際上你可以看到往往非并發(fā)狀態(tài)下的單用戶訪問(wèn)本身就很慢,而不是說(shuō)并發(fā)上來(lái)后慢。因此也是我們常說(shuō)的要給點(diǎn),即:
        • 單點(diǎn)訪問(wèn)性能正常的時(shí)候可以擴(kuò)展集群來(lái)應(yīng)對(duì)大并發(fā)狀態(tài)下的同時(shí)訪問(wèn)
        • 單點(diǎn)訪問(wèn)本身性能就有問(wèn)題的時(shí)候,要優(yōu)先優(yōu)化單節(jié)點(diǎn)訪問(wèn)性能
        業(yè)務(wù)系統(tǒng)性能診斷的分類
        對(duì)于業(yè)務(wù)系統(tǒng)性能診斷,如果從靜態(tài)角度我們可以考慮從以下三個(gè)方面進(jìn)行分類
        • 操作系統(tǒng)和存儲(chǔ)層面
        • 中間件層面(包括了數(shù)據(jù)庫(kù),應(yīng)用服務(wù)器中間件)
        • 軟件層面(包括了數(shù)據(jù)庫(kù)SQL和存儲(chǔ)過(guò)程,邏輯層,前端展現(xiàn)層等)
        那么一個(gè)業(yè)務(wù)系統(tǒng)應(yīng)用功能出現(xiàn)問(wèn)題了,我們當(dāng)然也可以從動(dòng)態(tài)層面來(lái)看實(shí)際一個(gè)應(yīng)用請(qǐng)求從調(diào)用開(kāi)始究竟經(jīng)過(guò)了哪些代碼和硬件基礎(chǔ)設(shè)施,通過(guò)分段方法來(lái)定位和查詢問(wèn)題。
        比如我們常見(jiàn)的就是一個(gè)查詢功能如果出現(xiàn)問(wèn)題了,首先就是找到這個(gè)查詢功能對(duì)應(yīng)的SQL語(yǔ)句在后臺(tái)查詢是否很慢,如果這個(gè)SQL本身就慢,那么就要優(yōu)化優(yōu)化SQL語(yǔ)句。如果SQL本身快但是查詢慢,那就要看下是否是前端性能問(wèn)題或者集群?jiǎn)栴}等。
        軟件代碼的問(wèn)題往往是最不能忽視的一個(gè)性能問(wèn)題點(diǎn)
        對(duì)于業(yè)務(wù)系統(tǒng)性能問(wèn)題,我們經(jīng)常想到的就是要擴(kuò)展數(shù)據(jù)庫(kù)的硬件性能,比如擴(kuò)展CPU和內(nèi)存,擴(kuò)展集群,但是實(shí)際上可以看到很多應(yīng)用的性能問(wèn)題并不是硬件性能導(dǎo)致的,而是由于軟件代碼性能引起的。對(duì)于軟件代碼常見(jiàn)的性能問(wèn)題我在以往的博客文章里面也談過(guò)到,比較典型的包括了。
        • 循環(huán)中初始化大的結(jié)構(gòu)對(duì)象,數(shù)據(jù)庫(kù)連接等
        • 資源不釋放導(dǎo)致的內(nèi)存泄露等
        • 沒(méi)有基于場(chǎng)景需求來(lái)適度通過(guò)緩存等方式提升性能
        • 長(zhǎng)周期事務(wù)處理耗費(fèi)資源
        • 處理某一個(gè)業(yè)務(wù)場(chǎng)景或問(wèn)題的時(shí)候,沒(méi)有選擇最優(yōu)的數(shù)據(jù)結(jié)構(gòu)或算法
        以上都是常見(jiàn)的一些軟件代碼性能問(wèn)題點(diǎn),而這些往往需要通過(guò)我們進(jìn)行Code Review或代碼評(píng)審的方式才能夠發(fā)現(xiàn)出來(lái)。因此如果要做全面的性能優(yōu)化,對(duì)于軟件代碼的性能問(wèn)題排查是必須的。

        通過(guò)IT資源監(jiān)控或APM應(yīng)用工具來(lái)發(fā)現(xiàn)性能問(wèn)題

        對(duì)于性能問(wèn)題的發(fā)現(xiàn)一般有兩條路徑,一個(gè)就是通過(guò)我們IT資源的監(jiān)控,APM的性能監(jiān)控和預(yù)警來(lái)提前發(fā)現(xiàn)性能問(wèn)題,一個(gè)是通過(guò)業(yè)務(wù)用戶在使用過(guò)程中的反饋來(lái)發(fā)現(xiàn)性能問(wèn)題。
        APM應(yīng)用性能管理主要指對(duì)企業(yè)的關(guān)鍵業(yè)務(wù)應(yīng)用進(jìn)行監(jiān)測(cè)、優(yōu)化,提高企業(yè)應(yīng)用的可靠性和質(zhì)量,保證用戶得到良好的服務(wù),降低IT總擁有成本(TCO)。
        資源池-》應(yīng)用層-》業(yè)務(wù)層
        這個(gè)可以理解為APM的一個(gè)關(guān)鍵點(diǎn),原有的網(wǎng)管類監(jiān)控軟件更多的是資源和操作系統(tǒng)層面,包括計(jì)算和存儲(chǔ)資源的使用和利用率情況,網(wǎng)絡(luò)本身的性能情況等。但是當(dāng)要分析所有的資源層問(wèn)題如何對(duì)應(yīng)到具體的應(yīng)用,對(duì)應(yīng)到具體的業(yè)務(wù)功能的時(shí)候很難。
        傳統(tǒng)模式下,當(dāng)出現(xiàn)CPU或內(nèi)存滿負(fù)荷的時(shí)候,如果要查找到具體是哪個(gè)應(yīng)用,哪個(gè)進(jìn)程或者具體哪個(gè)業(yè)務(wù)功能,哪個(gè)sql語(yǔ)句導(dǎo)致的往往并不是容易的事情。在實(shí)際的性能問(wèn)題優(yōu)化中往往也需要做大量的日志分析和問(wèn)題定位,最終才可能找到問(wèn)題點(diǎn)。
        比如在我們最近的項(xiàng)目實(shí)施中,結(jié)合APM和服務(wù)鏈監(jiān)控,我們可以快速的發(fā)現(xiàn)究竟是哪個(gè)服務(wù)調(diào)用出現(xiàn)了性能問(wèn)題,或者快速的定位出哪個(gè)SQL語(yǔ)句有驗(yàn)證的性能問(wèn)題。這個(gè)都可以幫助我們快速的進(jìn)行性能問(wèn)題分析和診斷。
        資源上承載的是應(yīng)用,應(yīng)用本身又包括了數(shù)據(jù)庫(kù)和應(yīng)用中間件容器,同時(shí)也包括了前端;在應(yīng)用之上則是對(duì)應(yīng)到具體的業(yè)務(wù)功能。因此APM一個(gè)核心就是要將資源-》應(yīng)用-》功能之間進(jìn)行整合分析和銜接。
        而隨著DevOps和自動(dòng)化運(yùn)維的思路推進(jìn),我們更加希望是通過(guò)APM等工具主動(dòng)監(jiān)控來(lái)發(fā)現(xiàn)性能問(wèn)題,對(duì)于APM工具最大的好處就是可以進(jìn)行服務(wù)全鏈路的性能分析,方便我們發(fā)現(xiàn)性能問(wèn)題究竟發(fā)生在哪里。比如我們提交一個(gè)表單很慢,通過(guò)APM分析我們很容易發(fā)現(xiàn)究竟是調(diào)用哪個(gè)業(yè)務(wù)服務(wù)慢,或者是處理哪個(gè)SQL語(yǔ)句慢。這樣可以極大的提升我們性能問(wèn)題分析診斷的效率。

        1.?面試官必問(wèn):說(shuō)說(shuō) Spring Bean 的實(shí)例化過(guò)程?

        2.?一口氣說(shuō)出 Redis 16 個(gè)常見(jiàn)使用場(chǎng)景 !

        3.?無(wú)需 XML Mapper,超級(jí) Mybatis 代碼即是 SQL 操作!真香?

        4.?聊聊 InnoDB 數(shù)據(jù)頁(yè)變成索引這件事

        最近面試BAT,整理一份面試資料Java面試BATJ通關(guān)手冊(cè),覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。

        獲取方式:點(diǎn)“在看”,關(guān)注公眾號(hào)并回復(fù)?Java?領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

        PS:因公眾號(hào)平臺(tái)更改了推送規(guī)則,如果不想錯(cuò)過(guò)內(nèi)容,記得讀完點(diǎn)一下在看,加個(gè)星標(biāo),這樣每次新文章推送才會(huì)第一時(shí)間出現(xiàn)在你的訂閱列表里。

        點(diǎn)“在看”支持小哈呀,謝謝啦??

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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            一区二区三区无码在线观看| 一级片免费观看视频| 欧美性猛交一区二区三区精品 | 国外成人在线视频老鸭窝| 国产黄色一级片| 免费无码成人片在线观看在线| www.黄色在线观看| 国产精品国产精品国产专区| 中文字幕在线网| 色屁屁草草影院ccyycom| 久久这里只有精品9| 另类老妇奶性BBWBBwBBw | 亚洲欧美网站| 精品无码人妻一区二区三区| 国产1区2区3区中文字幕| 国产无码高清在线| 超碰碰97| 国产精品女人777777| 久久久无码AV| 久久精品视频播放| 久久成人在线视频| 午夜影院操| 黄色免费a级片一级片| 初学影院WWWBD英语完整版在线观看 | 久草福利在线观看| 久久人妻中文字幕| 国产91白丝在一线播放| 日韩啪啪视频| 成人无码视频在线观看| 六月婷婷激情| 99久久99九九九99九他书对| 久久77777| 天天色天天色天天色| 粉嫩护士小泬18p| 国产午夜精品一区二区| 六月婷婷网| 人人爽人人操人人| 成人网大香蕉| 色吊丝中文字幕| 大香蕉大香蕉网| 激情久久av| 久久成人网豆花视频| 熟女人妻一区二区| 婷婷丁香色五月| 丰满人妻一区二区三区四区53| www.199麻豆在线观看网站| 波多野结衣视频免费在线观看 | 波多野结衣av一区| 成人网站一区二区| AV大片免费看| AV国产在线观看| 无码三级午夜久久人妻| 成年视频在线观看| 国产白浆一区二区三区| 激情国产精品| 欧美成人国产| 亚洲第一成年人网站| 亚洲第一成人久久网站| 97人妻精品一区二区三区免 | 91精品视频在线免费观看| 97超碰人人摸| 亚洲男同tv| 欧美性猛交ⅩXXX无码视频 | 狠狠操狠狠操狠狠操| 粉嫩av懂色av蜜臀av分享| 中文字幕不卡在线| 天天插天天射| 久久嫩草精品久久久久| 婷婷五月精品中文字幕| 国产精品久久久精品| 麻豆视频在线观看| 水蜜桃视频在线观看| 免费一级A片在线观看视频| 91免费在线视频| 国产精品色在线回看| 久久久久国产一区二区三区四区 | 国产A级毛片久久久久久| 无码六区| 五月停亭六月,六月停亭的英语| 欧美性猛交XXXX乱大交HD| 在线免费观看视频黄| 国产毛片毛片毛片毛片毛片| 青青草91视频| 97福利在线| 人人肏人人摸| 中文字幕网址在线| 米奇色色| av高清无码| 国产视频福利| 91大神免费在线观看| 乱子伦一区二区三区视频在线观看| 狠狠撸狠狠撸| 亚洲操逼图片| 五月天无码免费视频| 青娱乐精品在线视频| 久热亚洲| 日韩操逼电影| 日韩黄色视频网站| 亚洲夜夜操| 麻豆91精品人妻成人无码| 乱伦麻豆| 亚洲一级二级| 激情小视频国产在线播放| 999国产精品视频| 成人精品亚洲人成在线| 黄色视频在线观看| 國產精品777777777| 一级黄视频| 天天爱天天爽| 99在线精品视频免费观看20| 91成人免费电影| 久久av一区二区三区| 男女爱爱动态图| 国产亚洲欧美一区二区| 亚洲精品一区二区三区四区高清 | 手机看片1024国产| 国产精品a久久久久| 好吊视频一区二区| 日韩黄色三级片| 欧美色色网| 日韩激情无码视频精选| 一卡二卡久久| 中文字幕乱伦视频| 无码在线免费播放| www.日本色| www.av91| 插菊花综合网2| 特级丰满少妇一级AAAA爱毛片| 免费精品黄色网页| 成人五月天黄色电影| 成人免费啪啪视频| 一级黄色电影免费| 无码av一区| 97国产超碰| 免费黄色在线视频| 思思久久高颜值| 日韩中文字幕成人| 4388亚洲最大| 性爱日韩| 91视频专区| 免费一级黄色视频| 久久高清免费视频| 国内一级A片| 国产suv精品一区二区6精华液| 米奇狠狠干| 亚洲精品成人无码AV在线| 久久久久久高清毛片一级| 豆花视频成人| 一级片在线播放| 插菊花综合网亚洲| 国产免费观看AV| www久久99| 超碰在线观看99| 蜜桃视频无码| 俺去也| 国产婷婷精品| 69av网站| 国产18毛片18水多精品| 黄片在线免费观看视频| 日产久久视频| 2026无码视频| 最新中文字幕无码| 影音先锋男人你懂的| 人人干干| 中文字幕AV在线观看| 懂色Av| 国产日韩a| 中文字幕第一页av| 天堂资源中文在线| 国产A视频| 操逼一区| 在线天堂9| 国产日韩中文字幕| 丁香五月婷婷五月天| 欧美强开小嫩苞| 亚洲在线| 日本大香蕉在线视频| 亚洲精品国产精品国自产| 99xav| 五月婷婷激情网| 人妻少妇av中文字幕乱码牛牛| 色五月天导航| 翔田千里无码播放| 无码偷拍| 欧一美一婬一伦一区二区三区自慰| 老司机AV91| 国产精品美女久久久| 一级无码在线观看| aaa在线| 国产色片| 中日韩中文字幕一区二区区别| 蜜臀AV午夜精品| 欧美性小说| 精品国产久久久| 精品欧美激情精品一区| 在线观看小视频| 亚洲在线高清| 免费看无码一级A片在线播放| 国产精品天天AVJ精麻传媒| 丰满人妻一区二区三区精品高清| 亚洲伊人成人| 少妇bbw搡bbbb搡bbbb| 在线黄网| 久久久一级| 日韩精品无码电影| 四虎精品成人无码A片| 超碰超碰| 99久久人妻精品免费二区| 国产成人精品免费看视频| 69看片| 亚洲成人无码在线| 国产一级在线免费观看| 日韩情色| 一区二区三区成人电影| 无码高清视频| 久久黄片视频| 日本欧美在线播放中文| 成人内射视频| 手机看片福利永久| 91精品视频在线免费观看| 国产无码二区| 日屄视频在线观看| 亚洲精品图片| 亚洲专区区免费| 在线观看中文字幕无码| 欧美成人自拍视频| 欧美黑吊大战白妞欧美大片| 又a又黄高清无码视频| AV高清无码在线观看| 日韩欧美成人网站| 欧美成人大香蕉| 色婷婷一区二区三区四区五区精品视| 波多野结衣AV网站| 熟女少妇一区二区三区| 欧美成人精品一区二区三区| AV天堂国产| 91理论片| 午夜性爱网站| 东京热免费视频| 中文无码毛片| 成人爱爱免费视频| AV天堂亚洲| 一区二区Av| aaa在线观看| 亚洲精品人伦一区二区| 日韩一级无码| 黄色免费视频网站| 天天爱天天爽| 免费黄色在线视频| 欧美三级在线观看视频| 69精品在线| 欧美一级婬片A片免费软件| 色香蕉视频在线观看| 先锋影音AV资源站| 黄片大全免费看| 一区二区亚洲| 国产精品2| 国产男女无套免费视频| 精品视频在线免费观看| 天天操天天操天天操天天| 亚洲色色色| 在线视频亚洲| 国产18女人水真多免费看| 成人午夜无码| 国产色情视频| 精品无码一区二区人妻久久蜜桃| 国产午夜精品一区二区三区四区| 国产精品福利导航| 欧美精品在线视频| 成人欧美一区二区三区白人| 天堂aaa| 高清无码在线免费| 久久亚洲中文| 91麻豆精品无码人妻| 翔田千里av| 日产精品久久| 日韩情色| 国产一区二区三区免费| 免费AV黄色| 97国产在线观看| 久久久久免费视频| 天堂vs亚洲| 欧美黄色性爱| 精品人妻一区二区| 69视频在线观看免费| 久久精品无码视频| 操逼免费网站| 18禁成人A∨片| 日韩成人区| 国产AV激情| 激情国产精品| 7777AV| 最近中文字幕2022在线观看A | 成人超碰在线| 天堂无码高清| 人人舔人人草| 日韩一区二区免费视频| 三级一区二区| 国产丝袜自拍| 日韩免费一级片|