數(shù)十年專注企業(yè)數(shù)字化轉(zhuǎn)型、智能化升級、企業(yè)上云解決方案服務(wù)商
工單提交 騰佑科技咨詢熱線咨詢熱線: 400-996-8756
百度云服務(wù)中心騰佑科技公司
云服務(wù)器活動(dòng) 服務(wù)器租用 服務(wù)器托管 機(jī)柜租賃 帶寬租賃
  • 最新資訊
  • 熱門資訊
  • 最熱資訊
智能建站

百度程序員排查問題的工具清單,分享給你!

發(fā)布時(shí)間:2019-04-12 作者:騰佑科技

簡述:百度程序員排查問題的工具清單,分享給你! Linux命令類 tail 最常用的tail-f tail-300fshopbase.log#倒數(shù)300行并進(jìn)入實(shí)時(shí)監(jiān)聽文件寫入模式 grep grepfor

 

百度程序員排查問題的工具清單,分享給你!

Linux命令類

tail

最常用的tail -f

tail -300f shopbase.log #倒數(shù)300行并進(jìn)入實(shí)時(shí)監(jiān)聽文件寫入模式

grep

grep forest f.txt #文件查找 grep forest f.txt cpf.txt #多文件查找 grep 'log' /home/admin -r -n #目錄下查找所有符合關(guān)鍵字的文件 cat f.txt | grep -i shopbase grep 'shopbase' /home/admin -r -n --include *.{vm,java} #指定文件后綴 grep 'shopbase' /home/admin -r -n --exclude *.{vm,java} #反匹配 seq 10 | grep 5 -A 3 #上匹配 seq 10 | grep 5 -B 3 #下匹配 seq 10 | grep 5 -C 3 #上下匹配,平時(shí)用這個(gè)就妥了 cat f.txt | grep -c 'SHOPBASE'

awk

1 、基礎(chǔ)命令

awk '{print $4,$6}' f.txt awk '{print NR,$0}' f.txt cpf.txt awk '{print FNR,$0}' f.txt cpf.txt awk '{print FNR,FILENAME,$0}' f.txt cpf.txt awk '{print FILENAME,"NR="NR,"FNR="FNR,"$"NF"="$NF}' f.txt cpf.txt echo 1:2:3:4 | awk -F: '{print $1,$2,$3,$4}'

2 、匹配

awk '/ldb/ {print}' f.txt #匹配ldb awk '!/ldb/ {print}' f.txt #不匹配ldb awk '/ldb/ && /LISTEN/ {print}' f.txt #匹配ldb和LISTEN awk '$5 ~ /ldb/ {print}' f.txt #第五列匹配ldb

3 、 內(nèi)建變量

NR:NR表示從awk開始執(zhí)行后,按照記錄分隔符讀取的數(shù)據(jù)次數(shù),默認(rèn)的記錄分隔符為換行符,因此默認(rèn)的就是讀取的數(shù)據(jù)行數(shù),NR可以理解為Number of Record的縮寫。

FNR:在awk處理多個(gè)輸入文件的時(shí)候,在處理完第一個(gè)文件后,NR并不會從1開始,而是繼續(xù)累加,因此就出現(xiàn)了FNR,每當(dāng)處理一個(gè)新文件的時(shí)候,F(xiàn)NR就從1開始計(jì)數(shù),F(xiàn)NR可以理解為File Number of Record。

NF: NF表示目前的記錄被分割的字段的數(shù)目,NF可以理解為Number of Field。

find

sudo -u admin find /home/admin /tmp /usr -name *.log(多個(gè)目錄去找) find . -iname *.txt(大小寫都匹配) find . -type d(當(dāng)前目錄下的所有子目錄) find /usr -type l(當(dāng)前目錄下所有的符號鏈接) find /usr -type l -name "z*" -ls(符號鏈接的詳細(xì)信息 eg:inode,目錄) find /home/admin -size +250000k(超過250000k的文件,當(dāng)然+改成-就是小于了) find /home/admin f -perm 777 -exec ls -l {} ; (按照權(quán)限查詢文件) find /home/admin -atime -1 1天內(nèi)訪問過的文件 find /home/admin -ctime -1 1天內(nèi)狀態(tài)改變過的文件 find /home/admin -mtime -1 1天內(nèi)修改過的文件 find /home/admin -amin -1 1分鐘內(nèi)訪問過的文件 find /home/admin -cmin -1 1分鐘內(nèi)狀態(tài)改變過的文件 find /home/admin -mmin -1 1分鐘內(nèi)修改過的文件

pgm

批量查詢vm-shopbase滿足條件的日志

pgm -A -f vm-shopbase 'cat /home/admin/shopbase/logs/shopbase.log.2017-01-17|grep 2069861630'

tsar

tsar是咱公司自己的采集工具。很好用, 將歷史收集到的數(shù)據(jù)持久化在磁盤上,所以我們快速來查詢歷史的系統(tǒng)數(shù)據(jù)。當(dāng)然實(shí)時(shí)的應(yīng)用情況也是可以查詢的啦。大部分機(jī)器上都有安裝。

tsar ###可以查看最近一天的各項(xiàng)指標(biāo)

 

百度程序員排查問題的工具清單,分享給你!

 

 

tsar --live ###可以查看實(shí)時(shí)指標(biāo),默認(rèn)五秒一刷

 

百度程序員排查問題的工具清單,分享給你!

 

 

tsar --mem tsar --load tsar --cpu ###當(dāng)然這個(gè)也可以和-d參數(shù)配合來查詢某天的單個(gè)指標(biāo)的情況

 

百度程序員排查問題的工具清單,分享給你!

 

 

tsar --memtsar --loadtsar --cpu###當(dāng)然這個(gè)也可以和-d參數(shù)配合來查詢某天的單個(gè)指標(biāo)的情況

 

百度程序員排查問題的工具清單,分享給你!

 

 

 

百度程序員排查問題的工具清單,分享給你!

 

 

 

百度程序員排查問題的工具清單,分享給你!

 

 

top

top除了看一些基本信息之外,剩下的就是配合來查詢vm的各種問題了

ps -ef | grep java top -H -p pid

獲得線程10進(jìn)制轉(zhuǎn)16進(jìn)制后jstack去抓看這個(gè)線程到底在干啥

其他

netstat -nat|awk '{print $6}'|sort|uniq -c|sort -rn #查看當(dāng)前連接,注意close_wait偏高的情況,比如如下

 

百度程序員排查問題的工具清單,分享給你!

 

 

 

 

 

排查利器

btrace

首當(dāng)其沖的要說的是btrace。真是生產(chǎn)環(huán)境&預(yù)發(fā)的排查問題大殺器。 簡介什么的就不說了。直接上代碼干

1、查看當(dāng)前誰調(diào)用了ArrayList的add方法,同時(shí)只打印當(dāng)前ArrayList的size大于500的線程調(diào)用棧

@OnMethod(clazz = "java.util.ArrayList", method="add", location = @Location(value = Kind.CALL, clazz = "/.*/", method = "/.*/")) public static void m(@ProbeClassName String probeClass, @ProbeMethodName String probeMethod, @TargetInstance Object instance, @TargetMethodOrField String method) { if(getInt(field("java.util.ArrayList", "size"), instance) > 479){ println("check who ArrayList.add method:" + probeClass + "#" + probeMethod + ", method:" + method + ", size:" + getInt(field("java.util.ArrayList", "size"), instance)); jstack(); println(); println("==========================="); println(); } }

2、監(jiān)控當(dāng)前服務(wù)方法被調(diào)用時(shí)返回的值以及請求的參數(shù)

@OnMethod(clazz = "com.taobao.sellerhome.transfer.biz.impl.C2CApplyerServiceImpl", method="nav", location = @Location(value = Kind.RETURN)) public static void mt(long userId, int current, int relation, String check, String redirectUrl, @Return AnyType result) { println("parameter# userId:" + userId + ", current:" + current + ", relation:" + relation + ", check:" + check + ", redirectUrl:" + redirectUrl + ", result:" + result); }

注意:

經(jīng)過觀察,1.3.9的release輸出不穩(wěn)定,要多觸發(fā)幾次才能看到正確的結(jié)果

正則表達(dá)式匹配trace類時(shí)范圍一定要控制,否則極有可能出現(xiàn)跑滿CPU導(dǎo)致應(yīng)用卡死的情況

由于是字節(jié)碼注入的原理,想要應(yīng)用恢復(fù)到正常情況,需要重啟應(yīng)用。

騰佑科技專注idc行業(yè)13年,不管是服務(wù)器租用、服務(wù)器托管機(jī)柜租用、云服務(wù)器等業(yè)務(wù)都可以找我們哦。

點(diǎn)擊展開全文

鄭州騰佑科技有限公司(以下簡稱“騰佑科技”)成立于2009年, 總部位于鄭州,是 一家致力于互聯(lián)網(wǎng)服務(wù)業(yè)的高新技術(shù)企業(yè),公司主營業(yè)務(wù)以互聯(lián)網(wǎng)數(shù)據(jù)中心、云計(jì)算、人 工智能、軟件開發(fā)、安全服務(wù)“互聯(lián)網(wǎng)+”行業(yè)解決方案及行業(yè)應(yīng)用等相關(guān)業(yè)務(wù)。

售前咨詢熱線:400-996-8756

備案提交:0371-89913068

售后客服:0371-89913000

熱門活動(dòng)

百度云服務(wù)中心
標(biāo)簽:
  • 熱門資訊
  • 隨便看看