巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

阿里员工排盘题目的东西清单,总有一款合适你!

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-03-26 12:47:53 阅读数: 120

简介:作者:红魔七号链接:http://yq.aliyun.com/articles/69520?utm_content=m_10360这是一篇来历于阿里外部手艺服装服装服装服装服装服装论坛t.vhao.nett.vhao.nett.vhao.nett.vhao.nett.vhao.nett.vhao.net的文章,原文在阿里外部取得分歧好评。作者已把这篇文章开放到云栖社区中供外网拜候。文章内容做了 ...


阿里员工排盘题目的东西清单,总有一款合适你!

作者:红魔七号
链接:http://yq.aliyun.com/articles/69520?utm_content=m_10360

这是一篇来历于阿里外部手艺服装服装服装服装服装服装论坛t.vhao.nett.vhao.nett.vhao.nett.vhao.nett.vhao.nett.vhao.net的文章,原文在阿里外部取得分歧好评。作者已把这篇文章开放到云栖社区中供外网拜候。文章内容做了局部删减,首要删减掉了此中只要阿里外部能力操纵的东西的先容,并删减掉局部只要经由过程阿里内网能力拜候到的链接。

媒介

平常平凡的任务中常常碰着良多疑题目目的处置,在处置题目的同时,有一些东西起到了相称大的感化,在此誊写上去,一是作为条记,能够让本身后续健忘了可疾速翻阅,二是分享,但愿看到此文的同窗们能够拿出本身平常感受赞助很大的东西,大师一路前进。

闲话未几说,开搞。

Linux号令类

tail

最常常操纵的tail -f
tail -300f shopbase.log #倒数300行并进入及时监听文件写入形式


grep

grep forest f.txt #文件查找
grep forest f.txt cpf.txt #多文件查找
grep "log" /home/admin -r -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 #高低婚配,平常平凡用这个就妥了
cat f.txt | grep -c "SHOPBASE"


awk


1 、根本号令
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 、 内建变量

NR:NR表现从awk起头履行后,根据记实分开符读取的数据次数,默许的记实分开符为换行符,是以默许的便是读取的数据行数,NR能够懂得为Number of Record的缩写。

FNR:在awk处置多个输入文件的时辰,在处置完第一个文件后,NR并不会从1起头,而是持续累加,是以就呈现了FNR,每当处置一个新文件的时辰,FNR就从1起头计数,FNR能够懂得为File Number of Record。

NF: NF表现今朝的记实被朋分的字段的数量,NF能够懂得为Number of Field。

find

sudo -u admin find /home/admin /tmp /usr -name *.log(多个目次去找)
find . -iname *.txt(巨细写都婚配)
find . -type d(以后目次下的一切子目次)
find /usr -type l(以后目次下一切的标记链接)
find /usr -type l -name "z*" -ls(标记链接的详细信息 eg:inode,目次)
find /home/admin -size +250000k(跨越250000k的文件,固然+改成-便是小于了)
find /home/admin f -perm 777 -exec ls -l {} ; (根据权限盘问文件)
find /home/admin -atime -1 1天内拜候过的文件
find /home/admin -ctime -1 1天内状况转变过的文件
find /home/admin -mtime -1 1天内修悔改的文件
find /home/admin -amin -1 1分钟内拜候过的文件
find /home/admin -cmin -1 1分钟内状况转变过的文件
find /home/admin -mmin -1 1分钟内修悔改的文件


pgm


批量盘问vm-shopbase知足前提的日记
pgm -A -f vm-shopbase "cat /home/admin/shopbase/logs/shopbase.log.2018-01-17|grep 2069861630"


tsar


tsar是咱公司本身的收罗东西。很好用, 将汗青搜集到的数据耐久化在磁盘上,以是咱们疾速来盘问汗青的体系数据。固然及时的操纵情况也是能够盘问的啦。大局部机械上都有装置。
tsar ###能够检查比来一天的各项目标

阿里员工排盘题目的东西清单,总有一款合适你!

tsar --live ###能够检查及时目标,默许五秒一刷

阿里员工排盘题目的东西清单,总有一款合适你!

tsar -d 20161218 ###指定检查某天的数据,貌似最多只能看四个月的数据

阿里员工排盘题目的东西清单,总有一款合适你!

tsar --mem
tsar --load
tsar --cpu
###固然这个也能够和-d参数共同来盘问某天的单个目标的情况

阿里员工排盘题目的东西清单,总有一款合适你!

阿里员工排盘题目的东西清单,总有一款合适你!

阿里员工排盘题目的东西清单,总有一款合适你!

top


top除看一些根基信息以外,剩下的便是共同来盘问vm的各类题目了
ps -ef | grep java
top -H -p pid

取得线程10进制转16进制后jstack去抓看这个线程究竟在干啥

其余

netstat -nat|awk "{print $6}"|sort|uniq -c|sort -rn 
#检查以后毗连,注重close_wait偏高的情况,比方以下

阿里员工排盘题目的东西清单,总有一款合适你!

阿里员工排盘题目的东西清单,总有一款合适你!

排查利器

btrace

首当其冲的要说的是btrace。真是出产情况&预发的排盘题目大杀器。 简介甚么的就不说了。间接上代码干

1、检查以后谁挪用了ArrayList的add体例,同时只打印以后ArrayList的size大于500的线程挪用栈
@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、监控以后办事体例被挪用时前往的值和要求的参数
@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);
}

更多内容,感乐趣的请移步:http://github.com/btraceio/btrace

注重:

  1. 颠末察看,1.3.9的release输入不不变,要多触发几回能力看到准确的成果

  2. 正则抒发式婚配trace类时规模必然要节制,不然极有能够呈现跑满CPU致使操纵卡死的情况

  3. 因为是字节码注入的道理,想要操纵规复到一般情况,须要重启操纵。


Greys


说几个挺棒的功效(局部功效和btrace重合):

sc -df xxx: 输入以后类的概况,包含源码地位和classloader布局

trace class method: 相称喜好这个功效! 很早前能够早JProfiler看到这个功效。打印出以后体例挪用的耗时情况,细分到每一个体例。

javOSize


就说一个功效

classes:经由过程点窜了字节码,转变了类的内容,当即失效。 以是能够做到疾速的在某个处所打个日记看看输入,毛病谬误是对代码的侵入性太大。可是若是本身晓得本身在干吗,的确是不错的玩艺儿。

其余功效Greys和btrace都能很等闲做的到,不说了。

JProfiler


之前判定良多题目要经由过程JProfiler,可是此刻Greys和btrace根基都能搞定了。再加上出题目的根基上都是出产情况(搜集断绝),以是根基不怎样操纵了,可是仍是要标记一下。官网请移步http://www.ej-technologies.com/products/jprofiler/overview.html

大杀器

eclipseMAT

可作为eclipse的插件,也可作为零丁的法式翻开。 概况请移步http://www.eclipse.org/mat/

java三板斧,噢毛病,是七把

jps

我只用一条号令:
sudo -u admin /opt/taobao/java/bin/jps -mlvV

阿里员工排盘题目的东西清单,总有一款合适你!

jstack


通俗用法:
sudo -u admin /opt/taobao/install/ajdk-8_1_1_fp1-b52/bin/jstack 2815

阿里员工排盘题目的东西清单,总有一款合适你!

native+java栈:
sudo -u admin /opt/taobao/install/ajdk-8_1_1_fp1-b52/bin/jstack -m 2815

阿里员工排盘题目的东西清单,总有一款合适你!

jinfo


可看体系启动的参数,以下
sudo -u admin /opt/taobao/install/ajdk-8_1_1_fp1-b52/bin/jinfo -flags 2815

阿里员工排盘题目的东西清单,总有一款合适你!

jmap


两个用处

1.检查堆的情况
sudo -u admin /opt/taobao/install/ajdk-8_1_1_fp1-b52/bin/jmap -heap 2815

阿里员工排盘题目的东西清单,总有一款合适你!

阿里员工排盘题目的东西清单,总有一款合适你!

2.dump
sudo -u admin /opt/taobao/install/ajdk-8_1_1_fp1-b52/bin/jmap -dump:live,format=b,file=/tmp/heap2.bin 2815


sudo -u admin /opt/taobao/install/ajdk-8_1_1_fp1-b52/bin/jmap -dump:format=b,file=/tmp/heap3.bin 2815

3.看看堆都被谁占了? 再共同zprofiler和btrace,排盘题目的确是为虎傅翼
sudo -u admin /opt/taobao/install/ajdk-8_1_1_fp1-b52/bin/jmap -histo 2815 | head -10

阿里员工排盘题目的东西清单,总有一款合适你!

jstat


jstat参数浩繁,可是操纵一个就够了
sudo -u admin /opt/taobao/install/ajdk-8_1_1_fp1-b52/bin/jstat -gcutil 2815 1000 

阿里员工排盘题目的东西清单,总有一款合适你!

jdb


时至本日,jdb也是常常操纵的。

jdb能够用来预发debug,假定你预发的java_home是/opt/taobao/java/,长途调试端口是8000.那末

sudo -u admin /opt/taobao/java/bin/jdb -attach 8000.

阿里员工排盘题目的东西清单,总有一款合适你!

呈现以上代表jdb启动胜利。后续能够停止设置断点停止调试。详细参数可见oracle官方申明http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html

CHLSDB


CHLSDB感受良多情况下能够看到更好玩的东西,不详细论述了。 盘问材料传闻jstack和jmap等东西便是基于它的。
sudo -u admin /opt/taobao/java/bin/java -classpath /opt/taobao/java/lib/sa-jdi.jar sun.jvm.hotspot.CLHSDB

更详细的可见R大此贴http://rednaxelafx.iteye.com/blog/1847971

plugin of intellij idea

key promoter

疾速键一次你记不住,多来几回你总能记着了吧?

阿里员工排盘题目的东西清单,总有一款合适你!

maven helper


阐发maven依靠的好帮忙。

VM options

1、你的类究竟是从哪一个文件加载出去的?
-XX:+TraceClassLoading
成果形如[Loaded java.lang.invoke.MethodHandleImpl$Lazy from D:programmejdkjdk8U74jrelib
t.jar]

2、操纵挂了输入dump文件
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/admin/logs/java.hprof

jar包抵触

把这个零丁写个大标题不过度吧?每小我或多或少都处置过这类烦人的case。我特么下边这么多计划不信就搞不定你?
mvn dependency:tree > ~/dependency.txt

打出一切依靠
mvn dependency:tree -Dverbose -Dincludes=groupId:artifactId

只打出指定groupId和artifactId的依靠干系
-XX:+TraceClassLoading

vm启动剧本插手。在tomcat启动剧本中可见加载类的详细信息
-verbose

vm启动剧本插手。在tomcat启动剧本中可见加载类的详细信息
greys:sc

greys的sc号令也能清楚的看到以后类是从那里加载过去的
tomcat-classloader-locate

经由过程以下url能够获知以后类是从那里加载的curl http://localhost:8006/classloader/locate?class=org.apache.xerces.xs.XSObjec

其余

dmesg

若是发明本身的java历程悄无声气的消逝了,几近不留下任何线索,那末dmesg一发,很有能够有你想要的。
sudo dmesg|grep -i kill|less

去找关头字oom_killer。找到的成果近似以下:
[6710782.021013] java invoked oom-killer: gfp_mask=0xd0, order=0, oom_adj=0, oom_scoe_adj=0
[6710782.070639] [<ffffffff81118898>] ? oom_kill_process+0x68/0x140
[6710782.257588] Task in /LXC011175068174 killed as a result of limit of /LXC011175068174
[6710784.698347] Memory cgroup out of memory: Kill process 215701 (java) score 854 or sacrifice child
[6710784.707978] Killed process 215701, UID 679, (java) total-vm:11017300kB, anon-rss:7152432kB, file-rss:1232kB

以上标明,对应的java历程被体系的OOM Killer给干掉了,得分为854.诠释一下OOM killer(Out-Of-Memory killer),该机制会监控机械的内存资本耗损。当机械内存耗尽前,该机制会扫描一切的历程(根据必然法则计较,内存占用,时辰等),遴选出得分最高的历程,而后杀死,从而掩护机械。

dmesg日记时辰转换公式:log现及时辰=格林威治1971-01-01+(以后时辰秒数-体系启动至今的秒数+dmesg打印的log时辰)秒数:
date -d "1971-01-01 UTC `echo "$(date +%s)-$(cat /proc/uptime|cut -f 1 -d" ")+12288812.926194"|bc ` seconds"

剩下的,便是看看为甚么内存这么大,触发了OOM-Killer了。

新手艺get

RateLimiter

想要邃密的节制QPS? 比方如许一个场景,你挪用某个接口,对方明白须要你限定你的QPS在400以内你怎样节制?这个时辰 RateLimiter 就有了用武之地。概况可移步http://ifeve.com/guava-ratelimite

阿里员工排盘题目的东西清单,总有一款合适你!

点击阅读原文,当即订票



本文仅代表作者小我概念,不代表巅云官方发声,对概念有疑义请先接洽作者自己停止点窜,若内容不法请接洽平台办理员,邮箱2522407257@qq.com。更多相干资讯,请到巅云www.taishanly.com进修互联网营销手艺请到巅云建站www.yx10011.com。
一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家搜集公司供给自助建站平台搭建办事。

相干消息more

26
04月
Thinkphp5.0主动天生模块及目次的方

本文实例报告了Thinkphp5.0主动天生模块及目次的体例。分享给大师供大师参考,详细以下:Thinkphp5.0宣布已有些光阴了,听说性... >>概况

30
04月
php图片上传存储源码并且能够预览

复制代码 代码以下: <?php header("content-Type: text/html; charset=gb2312");... >>概况

28
04月
浅谈php冒泡排序

PHP完成的代码先送上:复制代码 代码以下:function bubble_sort($array) { for ($i = 0; $i &... >>概况

20
04月
html5指南-7.geolocation结

明天咱们将把html5的geolocation连系google maps开辟一个小的操纵。google maps的api地点:https:/... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751