排障命令-汇总

日志查询

1. grep

定义:(global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式

grep常用命令:

grep '查询条件' xxx.log
grep -r update /etc/acpi  : 以递归的方式查找符合条件的文件。例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为
grep –e "正则表达式" 文件名 : 从文件内容查找与正则表达式匹配的行

2. zgrep

定义:压缩文件中查找

zgrep常用命令:

zgrep '查询条件' xxx.log.gz :压缩文件中查询
zgrep '查询条件' xxx.log.gz | grep 'condition2' | grep 'condition3'

cpu

1. top

定义:查询系统负载、CPU、内存使用情况

top常用命令:

top:进程维度的明细
top -o cpu:按照cpu排序
top -o rsize:按内存使用率排序
top -Hp pid:查询进程pid下的所有线程占用cpu等明细,非常实用


 

内存

1. free

定义:查看内存使用情况

free常用命令:

free : 单位Kb 
free -m :单位Mb

tcp相关

1. netstat

定义:用于显示网络状态

netstat常用命令:

netstat -l:listening 显示监控中的服务器的Socket
netstat -t:显示TCP传输协议的连线状况
netstat -t | grep '172.16.248.12':显示TCP传输协议的连线状况并按照一定条件过滤

状态统计
netstat -ant | awk '/tcp/ {print $6}'|sort |uniq -c |sort -nr
    131 ESTABLISHED
     92 TIME_WAIT
     44 LISTEN
      7 CLOSE_WAIT
 
前十位ESTABLISHED状态ip统计
netstat -ant | grep "ESTABLISHED"|awk '/tcp/ {print $5}'|cut -d ":" -f1|sort |uniq -c |sort -nr |head -10

前十位TIME_WAIT状态ip统计
netstat -ant | grep "TIME_WAIT"|awk '/tcp/ {print $5}'|cut -d ":" -f1|sort |uniq -c |sort -nr |head -10
 
服务器本地被连接的EST
netstat -ant | grep "EST"|awk '/tcp/ {print $4}' |sort |uniq -c |sort -nr |head -10
 
服务器本地被连接的WAIT
netstat -ant | grep "TIME_WAIT"|awk '/tcp/ {print $4}' |sort |uniq -c |sort -nr |head -10
 
netstat -ant |awk '/^tcp/ {print $5}'|cut -d ":" -f1 |sort |uniq -c|sort -nr |grep -v "10.20"

2. ulimit

定义:可用于显示系统资源的设置

ulimit常用命令:

ulimit -n :指定同一时间最多可开启的文件数

3. lsof

定义:查看当前进程的打开文件详情(list open files)

lsof常用命令:

lsof -p pid :查看当前进程的打开文件详情,不适用,打印出来太多
lsof -i:80  :查看80端口被那个进程占用

列出TCP连接(List TCP Connections)
我们只能使用-i tcp选项列出TCP连接。
$ lsof -i tcp

jvm常用

1. jps

定义:查询进程号相关

jps常用命令:jps

2. jinfo

定义:

jinfo常用命令:

jinfo -flags pid : 查询java进程启动参数

3. jstack

定义:打印进程的堆栈信息

jstack常用命令:

jstack -l pid

jstack主要用于生成java虚拟机当前时刻的线程快照,线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。通过top命令定位到cpu占用率较高的线程之后,继续使用jstack pid命令查看当前java进程的堆栈状态。jstack命令生成的thread dump信息包含了JVM中所有存活的线程,为了分析指定线程,必须找出对应线程的调用栈,应该如何找?在top命令中,已经获取到了占用cpu资源较高的线程pid,将该pid转成16进制的值,在thread dump中每个线程都有一个nid,找到对应的nid即可;隔段时间再执行一次stack命令获取thread dump,区分两份dump是否有差别

4. jmap

定义:查询JVM内存对象信息

jmap常用命令:

jmap -histo pid | head -n20 : 查询top20对象
jmap -dump:format=b,file=/home/admin/logs/app/heap.hprpf pid : 对进程号为pid进行dump文件操作

5. jstat

定义:

jstat常用命令:

jstat -gc pid      : 查询pid的gc实时信息、分代使用信息
jstat -gc pid 2000 : 间隔两秒打印一次
jstat -gcnew pid   : 查询new对象的信息
jstat -gcold pid   : 查询old对象的信息

使用此命令可以得出设置的各个代的大小是否合理,若不合理,如何调整。调整的策略必须以实际应用为主,比如说:full gc的时间停顿让客户感觉明显,我们分析原因得知是old区域设置的过大,导致一次full gc需要的时间过久;如果我们直接缩小old区域的大小,又回发现full gc过于频繁;这个时候也许我们需要更换gc的算法

进制转换

1. 十进制转16进制

printf '%x\n' 15

磁盘管理

1. df

df :disk free

命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计

df -h 参数-h表示使用「Human-readable」的输出

2. du

du (英文全拼:disk usage)命令用于显示目录或文件的大小

du --max-depth=1 -h
 

du 会显示指定的目录或文件所占用的磁盘空间

参数-h表示使用「Human-readable」的输出,也就是在档案系统大小使用 GB、MB 等易读的格式

参数–max-depth指定深入目录的层数,这是个极为有用的参数,如果当前目录下文件和文件夹很多,使用不带参数du的命令,会循环列出所有文件和文件夹所使用的空间。这对查看究竟是那个地方过大是不利的

你可能感兴趣的:(性能问题分析及解决,linux,运维,服务器)