久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Java線上排查利器Arthas實(shí)戰(zhàn):從CPU飆高到接口超時(shí)

Java線上排查利器Arthas實(shí)戰(zhàn):從CPU飆高到接口超時(shí) 在Java后端摸爬滾打久了你大概率經(jīng)歷過這樣的場景線上應(yīng)用突然CPU飆高、接口超時(shí)、用戶反饋某個功能時(shí)好時(shí)壞可日志里干干凈凈一點(diǎn)異常都沒打出來。重啟大法雖然能暫時(shí)緩解但根本問題還在而且重啟以后什么現(xiàn)場都沒了。這種時(shí)候我第一反應(yīng)就是開Arthas這個工具我第一次用就覺得“真香”甚至可以說它已經(jīng)成了我排查線上問題的默認(rèn)入口。所有要連著好幾臺機(jī)器、翻各種日志、反復(fù)猜測代碼邏輯的日子在Arthas面前基本可以畫上句號了。Arthas是Java生態(tài)里非常出名的在線診斷工具它最大的特點(diǎn)是不用改代碼、不用重啟應(yīng)用直接附著在運(yùn)行中的JVM上就能實(shí)時(shí)查看類加載信息、方法調(diào)用參數(shù)、返回值、異常甚至還能動態(tài)修改內(nèi)存中已加載的類重新定義類邏輯。對于需要快速定位生產(chǎn)環(huán)境問題的開發(fā)、運(yùn)維和SRE同學(xué)來說這是一把不折不扣的瑞士軍刀。這篇內(nèi)容我會把日常用得最多、最順手的功能串起來講一遍從怎么快速附著到具體命令怎么用、遇到問題的排查思路是什么盡量按照實(shí)戰(zhàn)場景來寫方便你直接照葫蘆畫瓢。1. 為什么Arthas值得“真香”先搞清楚它解決的痛點(diǎn)1.1 傳統(tǒng)排查方式的困境我最早排查線上問題基本靠三板斧看日志、加臨時(shí)日志重新發(fā)版、重啟試試。日志如果沒有打印出關(guān)鍵堆棧就得靠猜加日志發(fā)版光是走流程就要很久而且改了代碼的行為可能就和問題現(xiàn)場不一致了有些偶發(fā)問題根本復(fù)現(xiàn)不出來重啟就更不用提了JVM里的現(xiàn)場被清得一干二凈線程狀態(tài)、堆內(nèi)存數(shù)據(jù)、正在執(zhí)行的調(diào)用鏈全都沒了。更難受的是定位性能問題。一個接口耗時(shí)忽高忽低你懷疑某個第三方調(diào)用超時(shí)但沒法確認(rèn)到底卡在哪一行。最原始的方案是到處打時(shí)間戳然后重新發(fā)版算下來一個下午就過去了。而且發(fā)版本身會引入變量問題可能就這次發(fā)完消失了下次出問題又不知道什么時(shí)候。Arthas這類工具的思路完全不同應(yīng)用不需要重啟它會在目標(biāo)JVM進(jìn)程上啟動一個代理然后把診斷命令通過socket傳給這個代理代理用字節(jié)碼注入技術(shù)去攔截目標(biāo)類的方法把你想看的參數(shù)、返回值、異常、執(zhí)行耗時(shí)實(shí)時(shí)抓回來。相當(dāng)于給運(yùn)行中的應(yīng)用做了一次“無痛內(nèi)窺鏡”檢查隨時(shí)都能做做完拔掉恢復(fù)原樣。1.2 和BTrace、Greys等同類工具的取舍其實(shí)在Arthas之前已經(jīng)有BTrace這類早期工具我也試用過。BTrace有一個很大的問題是使用門檻比較高需要編寫專門的腳本而且對版本、對JVM參數(shù)比較敏感用得不好容易把自己搞掛。Arthas雖然也用了類似字節(jié)碼增強(qiáng)的原理但它在交互體驗(yàn)和命令設(shè)計(jì)上做了很多工程化的打磨像看板一樣實(shí)時(shí)刷新的dashboard、一鍵查看線程CPU占用的thread命令、跟蹤方法調(diào)用鏈的trace命令都是直接敲命令就能用非常符合后端開發(fā)的直覺。另外Arthas對Java版本和中間件環(huán)境的兼容性做得不錯像Spring Boot這類框架的項(xiàng)目幾乎開箱即用不需要額外改啟動參數(shù)。所以很多團(tuán)隊(duì)會把Arthas作為標(biāo)準(zhǔn)線上問題排查工具來推廣甚至要求每個服務(wù)鏡像里都預(yù)留Arthas的安裝路徑方便隨時(shí)附著排查。提示Arthas本身是一個診斷工具它不改變業(yè)務(wù)代碼的最終邏輯。但要注意在敏感環(huán)境使用時(shí)需要做好權(quán)限管理避免有人通過它執(zhí)行危險(xiǎn)操作比如動態(tài)修改類邏輯。生產(chǎn)環(huán)境建議配合審計(jì)和權(quán)限體系來用。2. 五分鐘上手Arthas安裝、啟動與附著2.1 用官方腳本快速安裝Arthas的安裝方式很靈活最省事的方法是直接下載官方提供的as.sh腳本然后執(zhí)行curl -L -O https://github.com/alibaba/arthas/releases/latest/download/arthas-boot.jar java -jar arthas-boot.jar這里我個人更推薦直接下載arthas-boot.jar來用因?yàn)楹罄m(xù)版本升級時(shí)用它來引導(dǎo)會更統(tǒng)一也方便自定義下載目錄。腳本方式適合快速體驗(yàn)它的本質(zhì)也是下載arthas-boot.jar再啟動。啟動之后命令行會列出當(dāng)前機(jī)器上所有的Java進(jìn)程就像這樣[INFO] arthas-boot version: 3.x.x [INFO] Found existing java process, please choose one and input the serial number: * [1] 12345 xxx-order-service [2] 23456 xxx-gateway輸入序號回車就能附著到對應(yīng)的進(jìn)程上。需要注意當(dāng)前登錄用戶必須和目標(biāo)進(jìn)程的啟動用戶一致否則會附著失敗或者出現(xiàn)權(quán)限不足的問題。這個坑我踩過很多次后面會在排查章節(jié)單獨(dú)說。2.2 無交互式啟動適合腳本和自動化場景如果你需要在CI/CD流水線或者自動化腳本里啟動Arthas就不能用交互式選擇進(jìn)程的方式。這時(shí)候可以直接指定進(jìn)程ID啟動java -jar arthas-boot.jar --attach-only --target-ip 127.0.0.1 -p 12345或者直接用as.sh帶參數(shù)./as.sh -p 12345還有一種場景是應(yīng)用本身就集成了Arthas的agent方式啟動即在JVM參數(shù)里加上-javaagent:arthas-agent.jar這樣應(yīng)用一跑起來Arthas的attach通道就已經(jīng)準(zhǔn)備好了需要診斷的時(shí)候直接用客戶端連接即可。這種方式特別適合容器環(huán)境因?yàn)槿萜鞯腜ID 1進(jìn)程往往不是Java進(jìn)程動態(tài)attach會受PID namespace影響提前掛agent反而更省心。2.3 理解Arthas的attach與Agent機(jī)制Arthas底層用的是Java的Attach API。它向目標(biāo)JVM發(fā)送attach請求并加載一個agent這個agent會和Arthas的服務(wù)端建立通信服務(wù)端再開一個telnet端口默認(rèn)8563以及一個HTTP端口默認(rèn)8562。你敲的每一條命令都會先經(jīng)過本地的Arthas客戶端再通過這個通道發(fā)送給目標(biāo)JVM里的agent去執(zhí)行。這條鏈路聽起來有點(diǎn)繞但只要理解了排錯就快多了。比如你遇到attach成功但命令半天沒反應(yīng)那大概率是目標(biāo)進(jìn)程中agent初始化出了問題比如類加載器沖突、Arthas版本過舊等。再比如你發(fā)現(xiàn)本地能連上自己的測試環(huán)境但線上環(huán)境始終連接失敗就要檢查網(wǎng)絡(luò)策略是否開放了8563和8562這兩個端口。2.4 檢查Arthas是否工作正常附著成功后可以先執(zhí)行一個最簡單的命令試試[arthas12345]$ version如果返回版本號說明鏈路通暢。然后可以執(zhí)行[arthas12345]$ sysprop查看系統(tǒng)屬性。這些都正常了再進(jìn)入正式的診斷流程。3. 高頻命令實(shí)戰(zhàn)解析從看板到方法級追蹤3.1 dashboard實(shí)時(shí)全局看板dashboard是我每次進(jìn)入Arthas后幾乎必敲的第一條命令。它會以一個動態(tài)面板的形式展示當(dāng)前JVM的概況包括線程、內(nèi)存、GC、類加載數(shù)量以及運(yùn)行時(shí)環(huán)境信息??窗鍟詣铀⑿履J(rèn)每3秒刷新一次當(dāng)然你可以用-i參數(shù)指定刷新間隔比如[arthas12345]$ dashboard -i 1000這樣每秒刷新一次。下面給你看一眼典型輸出長什么樣ID NAME GROUP PRIORITY STATE %CPU TIME INTERRUPTED DAEMON 67 xx-rpc-thread-14 main 5 RUNNABLE 33 0:23 false true ... Memory used total max usage GC heap 1.2G 2.0G 4.0G 30.00% gc.ps_scavenge.count: 128 ...看板里最值得關(guān)注的是CPU占用排前幾的線程。如果某條業(yè)務(wù)線程長期處于RUNNABLE狀態(tài)而且CPU占比明顯偏高基本可以鎖定它就是CPU飆高問題的元兇。再用thread -n命令抓它的線程棧就能進(jìn)一步確認(rèn)卡點(diǎn)位置。3.2 thread線程排查利器thread命令有好幾個重要的用法按實(shí)用頻率排大概是這么個順序第一查看當(dāng)前最耗CPU的線程棧[arthas12345]$ thread -n 5這個命令會把CPU占用最高的5個線程的堆棧信息全部打印出來并且自動帶上線程的ID、名稱、CPU使用率、狀態(tài)。有一次我遇到線上CPU突然打滿用這個命令一下就看到了某個線程卡在了一個JSON序列化工具的循環(huán)里棧頂清清楚楚寫著某行代碼的toString調(diào)用問題原因秒定位。第二查看指定線程的完整棧[arthas12345]$ thread 67其中67就是線程ID。這會打印該線程的完整堆棧適合排查線程阻塞在哪里、鎖等待在哪里。第三查找線程間是否有鎖等待和死鎖[arthas12345]$ thread --stateBLOCKED如果想要檢查死鎖Arthas沒有專門的一條命令但是可以結(jié)合thread --stateBLOCKED和線程棧中的“waiting for monitor”字樣來判斷。某次我處理過一個偶發(fā)死鎖問題兩個線程都在等對方的鎖通過這個命令一查堆棧里兩個線程互相等待的鎖對象非常直觀最后定位到是加鎖順序不一致導(dǎo)致的經(jīng)典死鎖。3.3 jad反編譯線上類確認(rèn)跑的是不是你以為的代碼線上最尷尬的情況之一就是代碼看著是新的實(shí)際發(fā)出去的包是舊的。與其問別人不如直接反編譯看字節(jié)碼。jad命令能反編譯任意已加載類打印出它的Java源碼結(jié)構(gòu)實(shí)際是反編譯結(jié)果可能和原始源碼有細(xì)微差別但邏輯基本可讀。用法非常簡單[arthas12345]$ jad com.example.OrderService輸出會帶類加載器信息、源碼位置、反編譯的Java代碼。這個命令在排查“為什么線上行為和本地不一致”時(shí)特別有用。有一次客戶端反饋某功能表現(xiàn)異常我用jad一查發(fā)現(xiàn)類里根本沒有最新加的判斷邏輯立刻確認(rèn)是發(fā)布流程出了問題省掉了無休止的討論。如果你的類被JIT優(yōu)化了反編譯出來可能有部分內(nèi)容顯示不出來但不影響判斷大致邏輯??梢杂胘ad --source-only只輸出源碼方便復(fù)制到本地做diff比較。3.4 watch觀察方法調(diào)用入?yún)ⅰ⒎祷刂岛彤惓atch是Arthas里我最喜歡的命令沒有之一。它用來觀察指定方法的每一次調(diào)用抓取入?yún)?、返回對象、拋出的異常、耗時(shí)等。寫法如下[arthas12345]$ watch com.example.OrderService createOrder {params, returnObj, exception, cost} -x 3拆解一下這個命令第一個參數(shù)是類全限定名。第二個參數(shù)是方法名。第三個參數(shù)是OGNL表達(dá)式?jīng)Q定要輸出什么。{params, returnObj, exception, cost}分別代表入?yún)⒘斜?、返回對象、異常、耗時(shí)。這個大括號不是列表字面量而是輸出多個字段的組合。-x表示展開對象的層級數(shù)字越大展開細(xì)節(jié)越多。比如-x 3能看到入?yún)ο蟮娜龑忧短捉Y(jié)構(gòu)。這個命令在排查“參數(shù)對了卻得到奇怪結(jié)果”、“某個方法偶爾拋異常但日志沒記錄”的場景下幾乎是精準(zhǔn)制導(dǎo)。比如有次同行遇到一個接口偶爾返回錯誤碼但代碼里沒打日志我建議用watch帶異常參數(shù)去抓結(jié)果沒等多久就抓到了異常棧是一個特殊的非法參數(shù)組合導(dǎo)致的本地測試完全沒覆蓋到。注意點(diǎn)watch默認(rèn)只監(jiān)控方法進(jìn)入時(shí)的信息如果你想額外看方法退出時(shí)的結(jié)果要加上-b或-e參數(shù)來控制位置或者更常用的是保持默認(rèn)然后在OGNL表達(dá)式里同時(shí)取返回值和異常即可。Arthas的做法是默認(rèn)在方法結(jié)束以后統(tǒng)一輸出所以直接查returnObj和exception是能拿到的。3.5 trace定位方法內(nèi)部耗時(shí)分布有時(shí)候接口慢但你不知道熱點(diǎn)是在內(nèi)部哪個子調(diào)用上。trace命令可以追蹤一個方法內(nèi)部的所有子調(diào)用輸出每一層的耗時(shí)以及調(diào)用次數(shù)。[arthas12345]$ trace com.example.OrderService createOrder #cost 200這個命令的含義是當(dāng)createOrder整體耗時(shí)超過200毫秒時(shí)打印方法內(nèi)部的調(diào)用鏈耗時(shí)詳情。每一行會顯示類名、方法名、耗時(shí)、調(diào)用來源。trace是我處理性能問題時(shí)最依賴的工具。比如你懷疑數(shù)據(jù)庫查詢慢但數(shù)據(jù)庫監(jiān)控又沒查到慢SQL或者懷疑HTTP外部服務(wù)超時(shí)卻不知道具體在哪個階段。trace一跑整個方法內(nèi)部的每一步耗時(shí)一目了然是內(nèi)存計(jì)算慢還是RPC調(diào)用慢還是某個循環(huán)里做了太多無用計(jì)算全都能看到。和watch不同的是trace的成本相對高一些尤其是在高頻調(diào)用方法上開啟trace會有一定的性能開銷。所以在生產(chǎn)環(huán)境使用時(shí)要控制好追蹤的目標(biāo)方法不要掛在整個入口上大規(guī)模trace更推薦在定位到大致方法后細(xì)粒度去開trace。3.6 stack方法被誰調(diào)用、調(diào)用鏈長什么樣stack命令會輸出當(dāng)前方法被調(diào)用的調(diào)用路徑簡單理解就是“誰調(diào)用了我”。用法[arthas12345]$ stack com.example.OrderService createOrder這個命令適合回答“這個方法為什么被反復(fù)觸發(fā)”、“這個入口是被人調(diào)用還是內(nèi)部定時(shí)任務(wù)觸發(fā)的”。有一次排查一個數(shù)據(jù)錯亂問題就是想弄清楚某條數(shù)據(jù)為什么會走到一個異常分支最后用stack發(fā)現(xiàn)原來是消息消費(fèi)邏輯里間接調(diào)用了同一個方法導(dǎo)致數(shù)據(jù)狀態(tài)被重復(fù)修改。stack還支持按條件輸出比如只輸出耗時(shí)超過閾值的調(diào)用[arthas12345]$ stack com.example.OrderService createOrder #cost1000這樣既能看到調(diào)用鏈也能篩選出慢調(diào)用用來排查偶發(fā)性慢請求特別好使。3.7 tt時(shí)間隧道記錄方法調(diào)用的歷史現(xiàn)場如果說watch是“實(shí)時(shí)看每一次調(diào)用”那tt就是“把調(diào)用的現(xiàn)場記下來回頭慢慢看”。tt命令能記錄一段時(shí)間內(nèi)某個方法的調(diào)用快照包含入?yún)?、返回、異常、調(diào)用時(shí)間等并且你能用tt的Play功能去重放某一次調(diào)用?;居梅╗arthas12345]$ tt -t com.example.OrderService createOrder -n 20意思是記錄最近20次createOrder調(diào)用的快照。輸出里每行有一個ID如果你想看第8次調(diào)用的具體參數(shù)和返回值[arthas12345]$ tt -i 8有一次線上偶發(fā)問題最讓人頭疼的就是無法復(fù)現(xiàn)當(dāng)時(shí)我用tt掛了半小時(shí)記錄到了那一次異常調(diào)用的完整入?yún)⑷缓笥眠@個參數(shù)在測試環(huán)境一跑就復(fù)現(xiàn)了整個排查從“玄學(xué)”變成了“確定性”。tt的代價(jià)比watch更大因?yàn)樗诜椒ǔ鋈肟诙疾迦霐r截邏輯并且保存快照。所以開啟時(shí)間不要過長記錄次數(shù)也要限制比如-n 20抓完立即關(guān)閉。3.8 monitor統(tǒng)計(jì)方法調(diào)用頻率、成功率和耗時(shí)趨勢如果你想看一個方法在一段時(shí)間內(nèi)的整體表現(xiàn)比如每分鐘被調(diào)多少次、成功率如何、平均耗時(shí)多少monitor就是干這個的[arthas12345]$ monitor com.example.OrderService createOrder -c 30表示每30秒統(tǒng)計(jì)一次createOrder的調(diào)用次數(shù)、失敗次數(shù)、失敗率、平均耗時(shí)等。這個命令適合不需要看單個調(diào)用細(xì)節(jié)而是想看宏觀趨勢的場景。比如壓測過程中觀察某個方法的TPS、RT變化或者線上某個接口失敗率突然升高時(shí)先確認(rèn)是不是這個原因。3.9 sc、getstatic與ognl查看類信息、讀取靜態(tài)變量、執(zhí)行任意表達(dá)式這三個命令放到一起講因?yàn)樗鼈兪茿rthas里“探查類結(jié)構(gòu)”的組合拳。sc用來搜索所有已加載的類[arthas12345]$ sc *OrderService*輸出會顯示類全限定名、類加載器、類狀態(tài)。如果想看類的詳細(xì)結(jié)構(gòu)加-d參數(shù)[arthas12345]$ sc -d com.example.OrderService這樣會輸出類的修飾符、注解、父類、接口、成員變量等。getstatic用來讀取類的靜態(tài)變量[arthas12345]$ getstatic com.example.OrderService CACHE_SIZE比如某個配置類的靜態(tài)字段是在啟動時(shí)加載的又沒辦法動態(tài)刷新用getstatic能直接看到當(dāng)前內(nèi)存里的值判斷配置是否真的生效了。ognl是最靈活的命令它能在目標(biāo)JVM里執(zhí)行任意表達(dá)式。比如調(diào)用某個靜態(tài)方法、獲取某個對象的字段、甚至修改某個字段的值[arthas12345]$ ognl com.example.GlobalConfiggetConfig()也可以帶上下文執(zhí)行比如獲取當(dāng)前線程上下文的某個Bean[arthas12345]$ ognl -x 2 #context org.springframework.web.context.ContextLoadergetCurrentWebApplicationContext(), #bean context.getBean(orderService), #bean.queryStatus()ognl的“任意執(zhí)行”能力非常強(qiáng)但也要格外小心它相當(dāng)于給了你在生產(chǎn)環(huán)境執(zhí)行代碼的權(quán)限。尤其是在寫修改類型表達(dá)式時(shí)一定要仔細(xì)確認(rèn)不要改錯字段。3.10 mc與redefine動態(tài)更新類邏輯redefine是我用得比較謹(jǐn)慎但關(guān)鍵時(shí)刻能救命的命令。它允許你修改已加載類的字節(jié)碼相當(dāng)于在運(yùn)行中“熱更新”類的邏輯。基本流程是先用jad把目標(biāo)類反編譯出來導(dǎo)出源碼到本地改完邏輯以后用mc命令編譯成.class文件再用redefine命令把它加載進(jìn)JVM。步驟如下[arthas12345]$ jad --source-only com.example.OrderService /tmp/OrderService.java # 然后在本機(jī)編輯 /tmp/OrderService.java改好邏輯 [arthas12345]$ mc /tmp/OrderService.java -d /tmp/output [arthas12345]$ redefine /tmp/output/com/example/OrderService.class注意事項(xiàng)redefine只改變后續(xù)新執(zhí)行的邏輯對已經(jīng)執(zhí)行到一半的調(diào)用是無效的而且redefine不會改變類的結(jié)構(gòu)你不能新增字段、不能新增方法簽名、不能增加銷毀原結(jié)構(gòu)。一般我拿它來做臨時(shí)補(bǔ)丁加一個日志輸出、調(diào)一個參數(shù)值等等等新的版本發(fā)上去以后就不要再依賴redefine的臨時(shí)邏輯了。警告redefine本質(zhì)上是修改運(yùn)行中的JVM內(nèi)存里的類定義風(fēng)險(xiǎn)等級很高只適合臨時(shí)應(yīng)急。不到萬不得已我建議你先嘗試用ognl修改配置值、用dashboard觀察趨勢最后才考慮redefine。而且redefine前一定要把原始類文件備份好保證能回滾。4. 實(shí)戰(zhàn)案例拆解從CPU飆高到接口超時(shí)的排查全流程4.1 案例一CPU突然飆到500%的線程定位事情大約是這樣的某跨平臺訂單服務(wù)的CPU在下午兩點(diǎn)左右突然飆高監(jiān)控報(bào)警直接打到群里。按照以前的處理方式第一件事是登錄機(jī)器看top找到CPU高進(jìn)程的PID然后jstack導(dǎo)出線程棧再手動去找nid對應(yīng)的線程。這一套流程本身沒問題但jstack的線程棧里全是十六進(jìn)制線程ID要對應(yīng)到業(yè)務(wù)線程還得人工比對效率很低。有了Arthas之后流程變成了這樣先附著到目標(biāo)進(jìn)程執(zhí)行dashboard馬上就能看到哪個線程的CPU占用異常高通常那個線程的ID還會反復(fù)出現(xiàn)在刷新面板的最前面。然后執(zhí)行[arthas12345]$ thread -n 3Arthas會直接打印出CPU占用最高的三個線程的完整堆棧自動把線程名稱、CPU時(shí)間、堆棧都組裝好了。那次我一眼就看到某個線程卡在一個XML解析方法內(nèi)部最底層是在JVM里做正則匹配數(shù)據(jù)量一大CPU直接被吃滿。順著棧里的業(yè)務(wù)類名很快就對應(yīng)到了代碼行發(fā)現(xiàn)是一個對超大字符串做了多次replaceAll的循環(huán)屬于典型的正則回溯問題。這個案例關(guān)鍵點(diǎn)在于thread -n非常省事省掉了jstack 人工匹配nid的過程。如果只靠jstack十幾分鐘能定位就算不錯了用Arthas一兩分鐘就鎖定了根因。4.2 案例二接口偶發(fā)超時(shí)怎么抓到慢調(diào)用的具體位置另一個印象深刻的案例是某個查詢接口偶發(fā)超時(shí)時(shí)好時(shí)壞。我先打開trace守護(hù)在入口方法上[arthas12345]$ trace com.example.QueryService queryDetail #cost 1000跑了大約十分鐘抓到了一次耗時(shí)1200毫秒的調(diào)用快照。結(jié)果顯示大部分耗時(shí)花費(fèi)在調(diào)用下游的某個HTTP接口上時(shí)間約900毫秒而我對這個下游HTTP接口的容錯判斷閾值是500毫秒所以導(dǎo)致上游超時(shí)。順著這個線索檢查了下游服務(wù)的響應(yīng)時(shí)間分布發(fā)現(xiàn)是對方服務(wù)在整點(diǎn)時(shí)刻做批量任務(wù)導(dǎo)致該時(shí)段RT拉長。后續(xù)調(diào)整了調(diào)用方的超時(shí)時(shí)間并且給這個下游調(diào)用增加了本地緩存問題徹底解決。如果不用trace靠加日志排查這種偶發(fā)問題可能要發(fā)好幾個版本才能抓到一個慢樣本而且很有可能會因?yàn)殡S機(jī)性導(dǎo)致錯過現(xiàn)場。trace的價(jià)值在于它不需要任何提前埋點(diǎn)事后診斷能力很強(qiáng)。4.3 案例三方法返回值為什么和預(yù)期不一致還有過一次經(jīng)歷是同事在排查一個對賬系統(tǒng)的金額計(jì)算差異。日志里打了入?yún)⒁泊蛄俗罱K返回值但中間經(jīng)過了好幾個子方法的嵌套調(diào)用看不出是哪一步把金額改錯了。這種情況watchstack組合拳非常管用。先watch最外層方法看看入?yún)⒑妥罱K返回值如果出入?yún)]問題就深入內(nèi)部方法分別watch找到第一個出現(xiàn)差異的那一層。當(dāng)時(shí)我們用watch單獨(dú)盯了一個金額調(diào)整的方法抓到的入?yún)⑹且粋€對象對象的某個金額字段是100.00但returnObj返回時(shí)變成了99.99。再往下一層看發(fā)現(xiàn)里面調(diào)用了一個舍入工具舍入模式默認(rèn)是向下取整而業(yè)務(wù)方預(yù)期是四舍五入。順著這個鏈路往下追又用stack查了舍入工具方法的調(diào)用來源確認(rèn)只有這一條業(yè)務(wù)路徑走錯了舍入模式。整個過程沒有重啟、沒有改動一行代碼一個下午就把根因挖干凈了。5. 常見問題與排查思路Arthas使用中踩過的坑5.1 attach失敗提示Unable to open socket file這個報(bào)錯最常見的場景是你用的系統(tǒng)賬號和目標(biāo)Java進(jìn)程的啟動賬號不一致。比如應(yīng)用是用service用戶啟動的你sudo到root用戶執(zhí)行Arthas那么Arthas無法讀取目標(biāo)JVM的臨時(shí)目錄文件就會出現(xiàn)socket文件路徑相關(guān)報(bào)錯。解決辦法很直接換成和啟動進(jìn)程相同的用戶執(zhí)行。如果一定要root操作可以考慮安裝Arthas到目標(biāo)用戶目錄下并用su切換到該用戶后再啟動。5.2 所有命令都能執(zhí)行但watch/trace沒有任何輸出這個有兩種可能。一種是方法已經(jīng)啟動了很久沒有被調(diào)用你可以先用monitor確認(rèn)調(diào)用是否真的存在。另一種是方法是在其他類加載器里加載的而Arthas默認(rèn)匹配的類加載器集合不對。特別是用到自定義類加載器、OSGi環(huán)境時(shí)需要用sc -d確認(rèn)類的類加載器信息然后用classloader命令配合指定類加載器再觀察[arthas12345]$ classloader -l然后指定類加載器的索引再對目標(biāo)方法執(zhí)行watch。你也可以用watch時(shí)帶上-c參數(shù)指定類加載器的hash值。當(dāng)然現(xiàn)實(shí)中多數(shù)Spring Boot應(yīng)用是單一類加載器基本不會遇到這類問題。5.3 對象層級太深輸出被截?cái)嗄J(rèn)情況下Arthas為了避免把大量數(shù)據(jù)一股腦打印出來會限制OGNL表達(dá)式輸出對象的展開深度。如果你想看更多字段用-x參數(shù)調(diào)大即可。比如[arthas12345]$ watch com.example.OrderService createOrder {params, returnObj} -x 5如果-x調(diào)得太大導(dǎo)致輸出非常長影響閱讀可以同時(shí)用-n限制觀察次數(shù)比如-n 3只輸出三次結(jié)果。5.4 ognl表達(dá)式寫復(fù)雜了容易出錯怎么調(diào)試ognl表達(dá)式在Arthas里雖然功能強(qiáng)大但一旦寫復(fù)雜了語法錯誤可能比業(yè)務(wù)代碼本身還難排查。我的習(xí)慣是先在本地用一個簡單的Spring Boot應(yīng)用試表達(dá)式確認(rèn)無誤了再拿到生產(chǎn)環(huán)境執(zhí)行。還有一個技巧是拆分成小的表達(dá)式逐步驗(yàn)證先獲取對象引用再訪問字段不要一口氣寫超長的OGNL鏈條。比如你想拿到Spring容器里的某個Bean并調(diào)用方法可以先執(zhí)行[arthas12345]$ ognl #ctxorg.springframework.web.context.ContextLoadergetCurrentWebApplicationContext(), #ctx確認(rèn)這個對象能拿得到再去擴(kuò)展后面的字段訪問。5.5 Arthas本身對性能的影響很多人會擔(dān)心Arthas附著之后影響業(yè)務(wù)性能。實(shí)話實(shí)說開啟watch/trace/monitor這類命令會對目標(biāo)方法做字節(jié)碼增強(qiáng)有一定額外開銷。如果目標(biāo)是低頻方法影響幾乎可以忽略如果目標(biāo)是高QPS方法性能損耗會明顯一些。所以生產(chǎn)使用有幾個原則只在需要排查的時(shí)間窗口打開命令用-n限制記錄次數(shù)用完馬上關(guān)閉。不要同時(shí)開啟大量方法的trace/watch。優(yōu)先用dashboard和thread這類低開銷命令做初步排查鎖定目標(biāo)后再用watch/trace做精細(xì)分析。5.6 Arthas版本太舊導(dǎo)致命令行為不一致Arthas迭代速度比較快一些命令的參數(shù)和輸出格式在舊版本里可能不兼容。如果你發(fā)現(xiàn)某個命令行為和文檔不一致優(yōu)先檢查版本[arthas12345]$ version建議下載最新release版本并保持目標(biāo)環(huán)境和運(yùn)維腳本里使用的版本一致免得今天在這臺機(jī)器上可用、明天換臺機(jī)器就報(bào)錯。5.7 容器環(huán)境里attach的特殊情況容器化部署越來越普遍在容器里用Arthas有時(shí)會遇到PID namespace限制導(dǎo)致attach失敗或者容器里沒有安裝完整JDK只有JRE。解決辦法是基礎(chǔ)鏡像里提前安裝JDK而不是只有JRE。使用Arthas的agent模式啟動應(yīng)用避免動態(tài)attach的限制。容器內(nèi)執(zhí)行Arthas時(shí)確認(rèn)/tmp目錄可寫并且PID對得上宿主機(jī)還是容器內(nèi)的Namespace。5.8 無法訪問8563端口如果Arthas在遠(yuǎn)程機(jī)器上運(yùn)行而你想從本地連上去操作需要確保8563端口默認(rèn)telnet端口和8562端口默認(rèn)HTTP端口被你當(dāng)前的網(wǎng)絡(luò)允許連接。一些公司內(nèi)部網(wǎng)絡(luò)策略較嚴(yán)格需要提網(wǎng)絡(luò)放行申請或者你可以用ssh隧道把遠(yuǎn)程端口映射到本地再訪問這樣就不用額外開防火墻端口了。整體來說Arthas確實(shí)是一個讓我“用過就回不去”的工具。它解決的不是某一個具體的問題而是把人從“盲人摸象”的排查模式里解放出來讓你能直接看到運(yùn)行中JVM的內(nèi)部。剛開始接觸時(shí)可能會被它的命令數(shù)量嚇到但只要把dashboard、thread、jad、watch、trace、tt這幾個核心命令用熟就已經(jīng)能覆蓋絕大部分日常排查場景了。我自己一次一次踩坑之后才慢慢意識到滿屏的命令并不可怕關(guān)鍵是把每一條的適用時(shí)機(jī)記清楚——先看全局再鎖線程然后用watch或trace深入方法內(nèi)部再用ognl處理疑難雜癥這套思路比硬記命令參數(shù)重要得多。希望這篇文章能幫你少走一些彎路也歡迎你把這些命令在測試環(huán)境多試幾遍熟能生巧之后線上問題再也不用靠“重啟大法”來解決了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天躁日日躁狠狠躁| 99人人干| 欧美 青青草| 黄色大片免费在线| 美国三级日本三级久久99| 好色综合| 久操网址| 国产怡红院| 亚洲91在线播放影院| 婷婷久草| 肥佬影院91| 五月丁香综合| 亚洲最大成人a毛毛片| 色与欲影视天天看综合网| 狠狠中文字幕| 久久香蕉影院| 天天综合欧美综合| 欧美18老人禁| 92久久| 国产亚卅97| 久久婷婷视频| 人看人人摸人人操| 浪人综合网| 天天影视色香欲综合网小说| 久久久久幕乱码| 欧美激情欧美精品| 超碰激情808| 伊人婷婷五月天| 色综合av男人天堂| 欧美精品1区2区3区| 一个色导综合| 午夜男人av| 亚洲av噜噜噜噜噜噜| 97久久久久久久久久| 欧美在线色| 久久国99999| 欧亚久久偷拍视频| 2019天天操天天爽天天拍| 精品一区二区三区国产| 91在线免费观看处女| 亚洲情色视频| 日本黄色精品专区网站| 秋霞久久亚洲精品成人| 性在久久久久久| 国产一级不卡在线观看| 日韩不卡a级视频专区| 亚洲天堂在线怕怕视频| 色约约一区=区三区| 91精品人妻| 91在线视频国产网站| 国内外内射高清视频| 人妻一区二区三区四区视频| 在线观看高清AV| 啪啪免费| 久9久| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 天天影视亚洲| 精品成人亚洲午夜电影| 色综合99| 欧美成人国产精品| 亚洲国产一级黄色视频| 五月天婷婷综合| 日本精品88888888| 久久线上视频免费看| 人人模人人看| 久久综合日韩亚洲欧美| 欧美成人精品欧美一级乱黄一区二…| 五月天偷拍| 日韩AV中文字幕电影| 亚洲男人的天堂V| 黄色小说亚洲| 日韩无码人妻| 麻豆久久久一区二区| 久久综合超碰| 国产第二页| 欧美精品黑人猛交高潮| 五月丁香拍拍激情综合三级| 热久日综合| 亚洲高清自拍| 91老熟女逼| 婷婷国产精品一区二区| 久久人人舔人人爽舔人人av片| 99在线免费观看| 在线 欧美 亚洲| 久操凹凸视频| 污电影在线观看| 亞洲久久直播| 9999久久久| 成人激情无码在线视频| 学生妹天天看| 99久久久er直播网址| 偷拍欧美综合| 国产黄色小视频网站| 啊好爽受不了无码| www.久久最新地址| 99精品无码| 婷婷丁香六月| 口爆吞精在线观看| 好爽视频在线观看| 久久欧洲| 蜜臀少妇一区二区| 97亚洲综合| 久久日本熟妇熟色高清| 97日视频| 五月丁香影院| 欧美亚洲尤物久久| 激情一区二区| 精品一区二区久久| 国产夜夜艹| 大香网站| 精品国产乱码| 黄色成年| 日韩欧美偷拍美女视频| 99精品无码| 中文字幕一区二区三区高清| 男人的天堂久久久| 夜夜嗨一区| 久久9 9 9精品| 思思热免费视频观看| 九九综合九九综合| 91老熟女视频| 另类小说欧美激情校园春色| 欧美国产操逼| 国产精品视频在线播放| 精品国产污一区二区三区| 玖玖爱免费观看视频| 青青草中文字幕| 国产精品一区二区麻豆| 9久精品视频在线观看| 免费看美国人人爽,人人操| 91 亚洲 欧美 日韩 国产 综合| 神马久久久久久久| 欧美国产婷婷久久| 欧美亚洲高清| jazzjazz国产精品麻豆| 亚洲国产成人精品999| 宅男午夜在线视频| 久久久久熟女| 韩日男人的天堂| 日本女人操逼| 天天日夜夜爽| 玖玖97综合| 久久,精品一二三| 久久久精品视频免费观看| 中文字幕日韩人妻视频一区二区三区| 国内毛片国产欧美拍| 在线午夜成人无码视频| 精品国产91内射久久| 人妻无一区二区三区| 日韩亚洲精品一区二区| 免费看日本操逼视频| 六月丁香啪啪| 久久綜合很很很| 久久人妻无码毛片A片麻豆| 亚洲有码第一页| 大色网久久| 亚洲人妻日日日| 999久久久精品国产| 户外裸露刺激视频第一区| 日本操BAV| 天天做天天爱天天爽| 六月丁操逼| 久久久久人| 色色毛片| 任你爽视频| 懂色AV中文| 四虎免费在线播放| 国产精品999zyz| 久久久久人妻| 强奸熟女一区二区三区| 一区二区不卡| 午夜男女爽爽爽在线视频 | 日本三级久| 干B网| 亚洲色堂免费视频| 激情干在线| 亚洲最新Av| 啪啪啪综合| 亚熟hd视频在线| 婷婷久月| 伦理片秋霞免费影院| 中文字幕av亚洲精品| 人人妻人人色一区二区三区| 六月丁操逼| 99在线免费视频| 亚洲成人一区二区精品| 97色伦97色伦国产欧美| 天天亚洲| 亚洲一级特黄大片在线播放91| 国产精品农村妇女| 精品人妻一区二区三区蜜桃视频| 九区国产| 亚洲有码第一页| 久偷拍| 91蜜臀熟女| 久久艹逼视频| 久久9视频| 性爱av网站| 国产精品毛片?v一区二区三区| 九九草| 麻豆天天躁天天揉揉AV| 久久人妻无码毛片A片麻豆| 四虎影视在线| 好吊色在线观看| 日本三级日本三级99| 2019久久久久久久久福利| 日韩熟女乱伦中出| 免费自拍三级综合| 深夜激情无码| 亚洲天堂 视频你懂的| 中文字幕乱在线伦视频中文字幕乱码在线| 日韩日本欧美在线观看| 国产美女在线精品免费看| 啊啊啊啊好多水| 欧美综合 站| 91精品免费| 超碰 国产熟女精品一区| 青青操视频在线| 另类图片五月天| 欧美日韩不卡传媒| 欧美v日韩v亚洲v最新在线| 96久久久久| 囯产精品久久久久久久久久梁医生 | 亚洲一区二区麻豆影院| 韩日精品四区| 国产一级久久久| 99色婷婷中文字幕乱色| 天美传媒av在线| 亚洲蜜臀精品视频久久| 国产熟女无套内射| 国产又黄又粗又猛大片| 大香焦A片| 青青操轻轻| 亚洲色综合| 欧美亚州手机在线| 欧美综合制服在线| 99久久99九九99九九九| 国模无码人体一区二区三| 天堂а√在线最新版在线| 顶级丝袜熟女一区二区三区| 99啪| 日本免费一区二区不卡| 老女人综合网| 97国产高清视频在线观看| 天天干天天做| 久久97资源 网| 啊嗯嗯啊好大好爽| 青青草国产欧美非洲黑人| 国产丝袜美女在线一区| 99热自拍| 亚洲资源网| 亚洲av资源| 国内精品a| www…国产操逼| 日本 成 人 小说 电影 一区二区| 好爽,再快点啊哈嗯嗯嗯嗯| 天天操美美| 91精品人妻一区二区三区蜜桃| 成人小说另类在线| 亚洲高潮少妇| 欧美极品色| 97精品一区二区视频| 亚洲少妇中文字幕网址| 97天天综合网| 人妻夜夜爽天天爽三区麻豆AV网站| 国产亚洲精品无码三区| 久青草影院| 91碰超| 91麻豆天美国产欧美日| 黑人性欧美| 久久黄色性爱视频| 大香网伊人久久综合网eew| 国产9l 大屁股| 国产亚洲日本精品在线| 97久久精品不卡| 乱伦一二三区| 天天操女人| 日韩99999| 亚洲成人性爱在线观看| 亚洲欧美天| 日韩中文字幕人妻视频| 久久爽爽精品| 综合激情二| 亚洲综合春色| 国产成人拍国产亚洲精品| 暖暖精品二区三区观看| 久久久新亚洲AV| 99自拍视频| 美国三级日本三级久久99| 黄色视频60分钟| 99热在线不卡| 日韩激情无码影院| 人人污日韩一区二区| 蜜臀久久99精品久久久久久婷婷| 婷婷尹人大香蕉免费| 九久久精品| 日本国产高清色www视频在线| 97在线无精品| 午夜理论片在线观看免费| 丰满精品人妻少妇久久字幕| 超清福利精品视频在线| 91 综合 色| 国产亚洲精品美女久久久m| 亚洲天堂日本| 在线视频日韩欧美国产| 青青草原香蕉日本Ap| 大屁股xxxxx| 97国产|免费| 九九久久精品| 日本操逼视频在线| 鸥美插入视频| 亚乱色| 国产av色网| 久久这里只精品99re66图| 女人天堂网| 国产成人+综合亚洲+天堂| 舔足天天操天天射| 最新亚洲风情电影| 国产av又色又爽又黄| 性色高清..……| 大屁股xxxxx| 91n欧美| 四虎视频在线观看| 激情干在线| 麻豆天美在线| 人人综合| 人人天天干干| 国产又黄又粗又猛大片| 射丝袜大香蕉| 插入综合网| 欧美一区二区福利在线| 色妇综合网| 久久97资源 网| 自拍偷拍 日韩无码| 日日操夜夜操天天操免费观看麻豆| 理论久久婷婷网 8| 免费啪啪一级视频| 青娱乐休闲视频在线观看| 亚洲人妖网| 9 9精品一区二区三区| 强被迫伦姧在线观看无码网站| 最新9久久久9免费视频| 日韩性色b| 99热这里只有精品地址| 小说区 图片区色 综合区| 亚洲老司机123专区| 婷婷丁香六月| 另类 日韩 熟女| 白嫩少妇| 日本黄色精品| 久久综合久色欧美综合狠狠| 少妇天堂网络| 亚洲综合网电影91| 999岛国大片| 日韩在线欧美精品一区二区| 亚洲图片 欧美电影| 好看的91视频| 国产天天骚| 可以免费观看的av| 九九av| 黄色小视频日本txt| 日韩电影在线观看网址| 久久欧美激情| 97综合在线| 欧日韩一二三f区| 欧洲亚洲天堂精品| 欧美综合网1| 国产亚卅97| 91亚州日韩高清| 丁香九月激情啪| 思思热久久成人| 一区二区三区美女超清| 久久97| 欧美黄业| 酒色综合网| 丝袜AV一区二区三区| 超碰偷拍| 国产精品农村妇女| 999精品女人| 中国91AV| 偷拍盗拍亚洲色图图片 | 欧美黄片视频在线观看免费| 国产专区第一页| 国产精品永久免费10000| 青娱乐休闲视频在线观看| 少妇久久久久| 熟妇乱伦一区二区| 日本国产欧美一区三区二区| 一区二区三区免费视频入口| 午夜福利1区2区3区| 国产黄色视频久久| 三级激情网站| 精品人人插人人操| 六九九九| 少妇人妻精品| 91女优在线观看 | 久久久久99精品成人片蜜臀| 欧美翘臀视频网站一区二区三区 | 女人爽到高潮潮喷18禁网站| 3p国产欧美99热| 26uuu国产免费观看| 超碰99热| 污到发麻的视频 国产| 亚熟在线| 日韩人妻精品| 97爱爱爱| 色哟哟511老熟女| 综合久久欧美| 欧美亚洲国产自久久| 97色视频在线| 久久蜜桃一区二区| 色欲三区| 五月丁香激情啪啪| 超碰在线97国产| 怡红院网站在线视频| 97超碰色色| 国产成人拍国产亚洲精品| 岛国片国产成人亚洲播放| 色情综合| 欧美日韩精品久久| 日本二三四区| 熟妇操花| 亚洲男人天堂网久久| 福利大香蕉| 国产精品九九九| 美國A片| 久久精品亚洲婷婷| 玖玖超碰熟| 男人天堂东京热| 免费人成在线观看网站品爱网| 国产亚洲禁久一区二区 | 亚洲人妻在线精品| 思思热免费视频观看| 熟女一区二区| 色妇综合网| 视频黄色国产一级| 操死我干死我| 水滴偷拍| 熟女六十路| 中日韩久久人妻一区二区| 蜜桃传媒视频第一区入口在线看| 免费a级毛片av无码久久精品中文字幕| 久久精品国产72国产精品福利 | 东京热毛片177b2viP| 日韩一级成人毛片免费观看 | 清纯唯美综合亚洲| 温婉少妇玩3p| 超碰人妻中文在线| 欧美大香蕉久| 久jiu久神马影院| 久久久久幕乱码| 伊人网综合在线视频| 天堂资源欧美| 51国产午夜精品视频| 丁香五月婷婷基地| 96久久久久久久| 91精品伊人久久久大香线蕉91| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 中国91AV| 熟女突然公开看18禁影片| 久久久中文版| www.91人妻.com| 九九久久首页| 福利视频合集| 丰满翘臀美女影院视频| 91av熟女人妻| 欧美日韩电影一区二区| 久久久新亚洲AV| 蜜桃臀 后入 一区 二区 三区 在线| 亚洲图片 欧美电影| 成人免费福利在线观看| 久久精品日韩专区免费观看| 全免费a敌肛交毛片免费| 少妇内射www在线观看视频| 午夜操逼不卡| 天堂网 主播 亚洲| aaaa黄片| 漂亮人妻被强中文字幕hd| 日韩一级片| 日韩精品午夜操呦呦不卡影院| 性色av婷婷久久一区二区点复制| 中日韩久久久免费看| 激情久久久| 日韩无码服务区| 99热色精品| 蜜臀AV成人精品蜜臀AV久久| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 91亚洲欧洲| 久久久99久9| 日韩偷拍一区二区三区| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 国产三级日产三级韩国三级| 午夜福利合集| 高清不卡国产| 亚洲 自拍偷拍 欧美| 果冻传媒一区二区三区| 亚洲色五月| 国产高清自拍视频| 亚洲drav色图| 91色综| 久久精品国产AV一区二区三区| 一区二区视频你懂的| 免费毛片在线播放| 1769一区| 日韩精品三级| 国厂麻豆77q4| www.婷婷| 日日噜噜夜夜狠狠视频无| 自拍啪啪视频| 亚洲精品欧洲精品| 91日本在线观看| 午夜福利一区二区影院| 国产精品白丝AV| 亚欧美天堂在线| 国产色呦呦| 香蕉国产精品麻豆亚洲欧美日韩| 亚洲色图第四色| 操九九九九九九| 欧美性爱系列| 人妻啪| 激情欧美97| 天堂网 主播 亚洲| 丝袜综合| 丝袜制服字幕在线| 中文字幕av乱伦| 国产成人精品必看| 亚洲色图91| 婷婷探花久久精品一区| 无码人妻精品一区二区三区九九| 欧洲无码一区二区| 婷色五月| 国产成人精品日本视频| 国产亚洲精品美女久久久| 中出欧美| 91中文字幕制服丝袜免费视频| 青女在线| 1二区9| 韩国轻伦国内自拍一区| 亚洲一区二区麻豆影院| av九九| 日本一级性爱| 日韩乱伦视频| 人人插人人搞人人操| 久操com| 一级日本牲交大片好爽在线看| 999久久久国产精品| 综合亚州欧美| 欧美热图99| 国产乱码久久久| 超碰97资源网亚洲| 男人的天堂三级| 国产乱码久久久久久| 熟妇高潮一区二| 9热9热综合网| 少妇同性| 日韩精品操少妇| 男生女生啊啊啊啊| 亚av顶级裸体一区二区三区四区五区| 97看操| 性爱欧美五月| 日韩 欧美 国产 麻豆| 色网1| 亚洲91大片| 玖玖爱综合网| 人妻熟妇一区二区三区| 国产深喉| 97啪啪| 在线播放成人高清免费视频| 人人操,人人插| 色天使亚洲综合在线观看| 国产一区在线观看无码AV| 日韩欧美中文日韩欧美色| 久久久久九九九| 操逼日韩无码| 99国内精品| 久久一二三四不卡 | 青青在线视频日韩欧美| 26UUU欧美日本| 中文字幕一区二区日韩网| 顶级丝袜熟女一区二区三区| 成人av免费观看| 亚洲日本韩国极品一区二区| 一区二区 日韩 欧美 国产 传媒| 97爱碰| 精品久久97观看在线视频| 久久久久亚洲| AV一起草在线| 亚洲毛片一级带毛片基地| 无码不卡八戒| 欧美天天搞| 97超碰色色| 亚洲AV麻豆Aⅴ无码电影一| 最新岛国大片| 99色视频| 美美91成人国产精品欧美精品久久久久久久| 啊啊啊啊操死我了| 久久欧美激情| 欧美日韩国产三级黄色| 26uuu欧美| 亚洲熟久久| 蜜臀久久99精品久久久久久酒店| 牛牛操视频逼| 激情丁香婷婷| 久草在| 日韩色香| 亚洲日韩成人性爱视频| 色综合中文字幕不卡| 97久久国产亚洲精品超碰热| 放黄片放3级黄片没穿衣服| 亚洲AV性爱电影| 91丨国产丨白浆| 加勒比综合a∨| 一本色道无码DVD中文字幕| 1769精品一区二区三区| 狠综合网| 中国AAAAAA黄色片| 亚洲丝袜色| 情色五月天就去干| 岛国黄色短视频| 九九热免费在线国产视频伊人五月| 1204人成网站色www| 蜜乳成人AV| 天天添天天干电影| 91色欧美| 色综合久| 成人一级二级| 日本三级一区二区 在线| 天天干2019| 色九久| 五月丁香婷婷综合网| 99日免费视频中文字幕| 国产精品网址| 乱老熟女一区二区三区| 欧美日韩在线视频网站| 人妻精品综合中文字幕在线 | 超碰 欧美| 国产精品呦一区二区三区| 91av天美性媒精品视频| 亚洲国产成人7777| 色狠狠综合噜一二三区| 欧美97爱| 日本免费一区二| 国产激情视频一区区三区| 志村玲子视频一区二区| 天天欲望网| 91碰碰| 久久啊啊啊| 色妺妺在线视频| 蜜臀视频网站| 欧美久久婷| 操屄日韩| 亚洲视频二区| 精品在线观看视频在线| 人妻喷水| 亚洲天堂电影精品一区| 欧美宗合色| 麻豆2区1区天美| 国产在线综合福利网站| 三级网站超变态精品| 亚洲一区二区久久久久| 懂色影视久久| 亚洲欧美精品91| 放黄片放3级黄片没穿衣服| 麻豆久久久久久久久丝袜 | 96精品在线| 偷拍偷窥与盗摄视频专区| 婷婷激情一区二区三区俺也去| 亚洲无码成人精品| 秋霞福利网| 中文字幕黄色片| 国产色图乱伦| 亚精品无码毛片一区二区三区| 亚洲国产精品成人无码久久久 | 91精品丝袜在线观看| 久久欧美激情| 九九久久99| 国产一区在线免费播放| 俞拍久久国应视频| 亚洲区限制级| 思思热在线观看| 国产女s强制榨精视频| 青青草狠狠撸| 无码免费一区二区三区啪啪| 狠狠操官网| 国产97色在线 | 亚洲| 人人操天天爽| 日韩免费性爱视频在线观看| 日韩欧美性吧婷婷乱伦大香蕉| 高潮综合网| av中文在线| 国产毛片久久久久久久| 干B网| 黑人与人妻| 色妺妺在线视频| 亚欧无码在线| 国产成人91一区二区三区| 日日碰视频网| 97玖玖超碰| 开心激情婷婷| 激情综合二| 日本爽爽爽爽爽爽免费视频| 欧美性高潮| 亚洲资源网| 天天香香欲综合| 婷婷五月影院| 日韩人妻 中文字幕| 日韩欧美性爱电影在线观看| 青草精品视频一日本久久久久网站| 国产AV天美| 97人妻色| www.色五月| 国语对白在线播放视频| 午夜国产乱伦视频| 婷婷伊人五月| 屁股久久久久久| 亚洲精品蜜桃久久久| 久日91在线| 中文久久一区| 九九热免费在线国产视频伊人五月| 九九色逼| 中文字幕成人| 婷婷色中文字幕| 殴美在线AⅤ| 秋霞久久亚洲精品成人| 99亚洲精品| 国产精品国产亚洲区艳妇糸列| 麻豆av一区二区| 国产91丝袜 在线播放| 在线电影亚洲色图| 91网站18+| 激情小说亚洲视频| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 色婷久久| 亚洲综合婷婷| 日本色婷婷| 岛国精品视频在线观看| 入口操逼网站| 8050午夜少妇无码| 久久久久国产精品片区无码直播| 亚洲无码?第一页| 久久精品国产亚洲AV嘿嘿| 免费一级a毛片久久久久久鸭绿欲| 欧美一级黄色免费专区| 亚洲国产成人精品999| 日韩黄片影院| 久久久久亚洲AV无码专区少妇| 99久久久无码精品国产人| 日小BB小视频| 国语精品内射在线观看| 竹菊影视国产一区二区| 婷婷五月天色色| 久久久久13| 最新一二三区视频| 国产成人AV麻豆| 久久亚码| 98超碰欧美| 麻豆久久一区二区三区| 日本国产亚洲一区在线观看| 伊人久久在线视频观看| 免费的黄片wwwwww| 91大学精品激情戏| 欧美一区二区在线资源| 中文字幕超碰CAO| 亚洲图片偷拍欧美| 亚州性色| 欧美1区二区三区公司| 欧美人妻精品一区二区| 五月天婷婷成人网| 闷骚老熟女15P| 操91| 久久午夜色播影院免费高清| 国产精品蜜臀久久久久无码AV| 国产网站在线播放| 国产成人亚洲精品自产在线| 日韩超碰精品综合| 性欧美| 人人模人人看| 欧美三级中文字幕hd| 这里只有精品视频| 亚州综合AⅤ| 久久啊啊| 国产综合网站在线播放| 又大又黄国产| 青青青草伊人精品| 又粗又长又大国产不卡| 中国国国产一级特黄毛片| 国产一区二区三区中文字幕| 欧美熟女丝袜| 蜜臀99久久精品久久久懂爱| 97欧美性爱| 99国产精品在线观看| 精品国产乱码久久久久久日本公司| 熟女人妻精品一区二区视频 | 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 国产久久男人天堂| 99久久久无码国产精品性啊聊| 国产黄色 A 片免费看| 97超碰69| 67914在线兔费成人视频| 精品久久无码午夜福利 | 97日韩欧美| 破苞ⅩXXX性无码动漫无码| 亚洲欧美另类少妇精品| 另类小说欧美激情校园春色| 多毛小伙内射老太婆| 97精品国产97久久久| 国产熟女高潮一区二区三区| 乱伦熟女专区| 六九九九| 欧美碰碰综合色| 国产精品自在线发布| 欧美精品 - 91爱爱| 精品黄色电影| 五月天激情婷婷| 亚欧操逼片在线观看 | 欧美一区二区三区大综合| 国产精选视频| 高清在线偷拍自拍视频| 人人操人人射人人干| 久操操AV电影| 成人老鸭窝人人在线视频| 九九九九精品精| www.色婷婷| 91美女视频。| 免费啪啪啪网站18岁| 五十路人妻在线| 国语国产操逼伊人AV网| 噜噜噜亚洲精品| 18禁中文字幕| 97在线青| 亚洲精品无码久久AV| 无码人妻精品一区二区三区九九 | 九九热在线精品视频| 日韩三A大片在线观看| 国产有码一区| AV一起草在线| 女人的天堂大香蕉网| 免费观看性欧美一级| 欧美熟妇操操视频| 国产在线强奸视频| 粉嫩小泬久久久一区二区| av天堂天堂av日韩| 后入福利视频| 五月婷婷激情综合| 国产精品乱码久久| 大鸡吧尹人在线| 日韩熟女无码| 亚洲淫色网中文| 少妇高潮对白在线观看| 久久久久九九九九九| 97色婷婷| 国产午夜精品理论片a大结局| 情色av电影| 性久久| 九久久精品| 久久,精品一二三| 亚洲成人精品在线一区| 伊人伊人LD| 91精品伊人久久久大香线蕉91| 欧美少妇高潮| 久视频在线观看| 免费精品中文字幕| 激情视频图片| 色噜噜人妻av 中文字幕| 欧美成人A√在线一区二区| 欧美色图人妻| 亚洲宅男天堂| 国产精品一区av在线| 亚洲91射| 久久国产精品,久久国产| 亚洲一欧洲中文字幕在线 | 激情久久久| 超碰在线人妻中文字幕| 亚洲综合 欧美| 色蜜AV| 国产AV精久久| 综合色好色| 成人片视频| 性爱动态120秒| 日本熟女中文字幕一区| 9丨久久九九九| 久热久操| 精品夜夜澡人妻无码| 国产操操日韩三级黄| 殴美性天天| 精品成人女人久久| 97爱爱爱综合| 亚洲经典啪啪| 日韩欧美午夜一区二区| 9久久久久久| 欧美青青视频| 91九久| av资源在线观看少妇| 91被操| 亚洲女人91| 中文子幕一二三| 91色爽欧美| 亚洲欧美精品91| 日韩在线观看字幕精品| 国产辣妈在线视频福利| sewuyueav| 搡老女人老91妇女熟女| wwe 天天干.com| 人人天天欧洲| 伊人五月天| 日韩欧美午夜视频在线| 乱伦一二三区| 3PAV乱伦视频| 超碰97国产欧美| 9 1超碰九色| 日韩图区| 欧美A√综合网 | 超碰欧美97| 四虎影视国产精品| 夜夜青青无码影院| 色大香蕉97N| 91热情品| 天堂麻豆天美| 亚洲五区熟女| 亭亭丁香激情| 精品v1区| 熟妇人妻一区二区| 成人精品电影| 加勒比在线视频| 天天综合91在线| 床上啊啊啊一区二区三区| 久热大香蕉| 国模精品一区二区三区苹果色戒| 凹凸视频在线观看伊人| 台湾成人无码AV| 日本性爰一道本| 波多野结衣一级视频| 色就色综合| 99老司机精品视频在线观看| www.yeyecao| 99老司机精品视频在线观看| 成人97人人超碰人人| 免费?级毛片无码?∨蜜芽试看| 成人av性爱电影在线观看| 日本东京热久久久电影| 88xx成人精品视频| 桃花色综合影院| 欧洲欧美视频一区二区| 久久久久亚洲av综合波多野制衣| 亚洲精品国产熟女| 在线综合色| 国模吧 一区二区三区| 成人精品在线| 素人播放一区| 美女97超碰| 亚熟hd视频在线| 男女香蕉一区二区| 有码专区最新中文字幕有码| 97超碰欧美精品| 久久久久9999| 日韩乱伦AⅤ| 欧美性爱视频免费一区一A| 亚洲Av无码成人精品国产| 99热自拍| 欧美黄色图片| 青青草日韩免费观看高清在线| 久久精品99| 欧美激情内射| 日韩成人私密一级精品av| 久久精品国产99精品亚洲蜜...| 亚一综合久久久久久久久久| 亚欧性爱在线无码| 久久手机视直播| 欧洲与亚洲欧美精品中文字幕| 五月天欧美色图| 天天做天天爱| AV网站高清无码在线观看| 久久久九九网站| 国产精品熟女AV中文字幕在线播放| 亚洲国成人情色好看电影| 九九九九97| 九七超碰| 精品v日韩欧美国产| 日本三级久| 成人欧美日超碰| 好爽视频在线观看视频| 国产一级内射无挡观看| 9+1视频网址| 国产精品久久久777| 91N综合网| 又粗又长又爽在线观看| 五月婷婷综合网| 伊人aaa| 欧美懂色综合网| 亚洲精品官网在线观看| 久久99黄色卞西瓜| 成人开心网在线视频| 人人性爱视频免费| 激情色色| 亚州高清av| 88xx成人精品视频| 成人短视频在线观看| 美女诱惑在线一区| 亚洲欧美人妻| 99久在线精品99re8热| 欧美日本天堂| 日本一区二区中文字幕久久| 色综合久| 青青草狠狠撸| 国产乱伦性爱区| 久久色人体| 精品一区二区三区18| 无套内射人妻在线播放| 香蕉一区二区三区在线视频| 久久久久久人体| 性爱乱伦一区| 久久成人午夜狠狠| 色操逼网| 91色爽欧美| 家庭乱伦麻豆| 亚州宗合另类| 天天干18禁| 色五月婷婷久久| 午夜操操操| 黄片无码在线制服| 天海翼久久| 污污汅18禁网站在线永久免费观看 | 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 啊啊啊好舒服好爽啊啊啊视频| 后入式免费视频| 日本大片日本一区二区免费高清| 蜜臀网址在线| 91超碰人人操| 理论久久婷婷网8| 综合色99| 大香久久| 七久久久| 精品91| 欧美日韩免费专区在线| 精品性爱| 91久久午夜无码鲁丝片久久人妻| 欧美v日韩v亚洲v最新在线| 97爱免费插| 亚洲阿v天堂在线| 熟妇一区二区三区| 亚洲熟女乱色一区二区三区| 用力操死我| 91丨九色丨国产丨人妻在线 | 啊啊啊啊网站| 情色日播放AV| 97无码视频在线播放| 国产嫩草精品A88AV在线| 欧美十八禁视频| 999综合色| 免费啪啪一级视频| 99热线麻豆| 能看的AV| 综合伊人网12色| 91草草草| 操逼逼无码| 后入国产| 91天美传媒精品| 亚洲欧综合另类无码一区| 97国产中文| 日夜啪电影| 免费少妇一区二区| 伊人在线大香蕉视频久久| 久热无码| 国产精品无码成人精品| 亚欧美综合网。| 国产成人综合网| 91福利网在线观看| 色阁阁AV综合网| 丁香五月色| 免费国产电影一区二区| 老司机午夜精品福利视频一区二区 | 欧美少妇一区二区三区| 日本日逼高清| 成人性交午夜免费片| 国产专区路线| 99精品成人免费看| 91网站18| 九九九热精品| www.狠狠干.coom | 亚洲成A∨人影院在线欢看| 亚洲 欧美 色图| 精品999日本| 婷婷五月天社区| 久思思热视频在线观看| 91女色| 中文幕97| 精品久久久久久亚洲| 少妇人妻太紧太深av| 国产精品不卡少妇白| 91在线丝袜视频| 丁香五月天堂网| 天天艹天天日| 色汉综合| 男人天堂网手机版婷婷| 高清不卡视频| 日本中文字幕在线视频 | 天天激色| 97玖玖人妻| 日韩中文字幕二区| 亚洲国产av中文字幕久久 | 亚洲无套久久嗯嗯| 美女国产一区二区久久 | 欧美日韩国产人人| 精品免费1| 婷婷色中文字幕| 欧美色性爱| 国产精品久久妻无码网站| 91观看 国产白丝| 久久精品99| 伊人aaa| 日本丝袜美腿人妻九九| www.色婷婷| 粉嫩绯色AV一区二区在线| 人妻无一区二区三区| 伊人骚琪琪亚洲天堂网站| 日本道日本道中文字幕日本道最新日本道在线观看 | 青青草久久在线| 四虎884a| 天堂九九九九九九九九九| 丁香五月激情综合国产| 久草网站免费在线观看| 亚欧毛片基地国产毛片基地| 91亚洲网| 91爱剪切久久| 91美女视频直播| 99re热| 91影视亚洲| 天天舔天天日天天射| 久久精品视频在线观看| 肥臀熟女福利视频一区二区| 高清无码网址| 九九热在线精品视频| 国产成人无码久久精品| 操逼视频免费日韩无码| 国产综合永久精品日韩鬼片| 最新亚洲人成网站在线影院| 精品美女久久久久| 欧美大波激情xxxx| 一级毛片电影免费看| 亚洲影院成人| 亚洲高清视频在线免费观看| 欧美男人天堂| 狠狠婷婷亚洲中文综合久久| 日韩在线观看三级电影| 神马久久久久久| 日韩三级伊人| 久久亚洲国产成人| 亚洲国产91精品一区二区久久| av爱爱爱| 一级aaaaa欧美中文字幕录像片| 国产极品精品美女视频| 91香蕉视频在线观看免费| 一区不卡在线观看av| 国产一区二区精品久久99| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 国产欧美日韩女同性恋ww喷水精品| 天天综合91在线| 国产有码一区| 亚洲第91页| 综合网亚洲1|