后端问题排查常用命令
linux篇
资源查看
查看内存剩余空间
1
2
3
4
5
6free -m -s 2 -c 20 -t # 内存剩余空间 以M为输出,两秒更新一次,更新20次
# 输出
total used free shared buff/cache available
Mem: 62838 35817 7814 13366 19206 13099
Swap: 0 0 0
Total: 62838 35817 7814查看nginx中生效的conf文件所在目录(docker 需s要进入容器)
1
2
3
4nginx -t
# 输出
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful查看磁盘空间大小
1
2
3
4
5
6
7
8
9
10
11df -h # -h: human缩写,以易读的方式显示结果(即带单位:比如M/G,如果不加这个参数,显示的数字以B为单位)
df -i: 以inode模式来显示磁盘使用情况,显示inode信息而非块使用量。
df --total:显示所有的信息。
#/opt/app/todeav/config#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
2.0G 711M 1.2G 38% /
/dev/mapper/vg1-lv2 20G 3.8G 15G 21% /opt/applog
/dev/mapper/vg1-lv1 20G 13G 5.6G 70% /opt/app查看当前目录所占空间大小
1
2
3
4
5
6du -sh # -h 人性化显示 -s 递归整个目录的大小
du -ah: 显示目录,其下目录和文件占用的磁盘空间大小,带单位。
du -c: 显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和。
du -sh: 查看当前目录总共占的容量,而不单独列出各子项占用的容量。
du -l:在统计目录占用磁盘空间大小时,把硬链接也统计进来。
du -lh --max-depth=1:查看当前目录下一级子文件和子目录占用的磁盘容量。查看当前目录下所有子文件夹排序后的大小
1
du -sh `ls` | sort # 注意不是单引号`
内存
1
2free -h
free -h:显示内存状态。
打包命令
1 | tar -cvf etc.tar /etc # 仅打包,不压缩!-c :打包选项 -v :显示打包进度 -f :使用档案文件 |
docker 篇
进入容器
1
docker exec -it [containerId|serviceName] /bin/bash
查看运行容器资源占用情况
1
docker stats [contatinerId|serviceName]
查看容器内日志
1
docker logs -f -n 100 [contatinerId|serviceName] | grep -n10 'ERROR' #输出容器运行日志,使用grep查找关键字后10行内容
拷贝容器里的文件到本地
1
docker cp contatinerId:/tmp /home/tmp
- dump docker中
Java 常用排查工具
jstat
官网连接:https://docs.oracle.com/javase/8/docs/technotes/tools/#monitor
jstat 工具允许以固定的监控频次输出JVM的各种监控指标,比如使用-gcutil输出GC和内存占用汇总信息,每隔5秒输出一次,输出100次,可以看到Young GC比较频繁:
1 | jstat -gcutil [pid] [毫秒次] [多少次] |
其中,S0 表示 Survivor0 区占用百分比,S1 表示 Survivor1 区占用百分比,E 表示 Eden 区占用百分比,O 表示老年代占用百分比,M 表示元数据区占用百分比,YGC 表示年轻代回收次数,YGCT 表示年轻代回收耗时,FGC 表示老年代回收次数,FGCT 表示老年代回收耗时。
jstack
将输出的线程栈导入https://fastthread.io/ 进行可视化分析