linux服务器异常挂掉怎么定位,关于linux:Linux常用命令与服务器异常分析与定位...

一、引言

二、常用命令

#CentOS装置零碎状态命令,以下性能指标命令没有的能够尝试装置

yum install -y sysstat

整机性能指标命令

1、top命令

#查看整机零碎性能命令

top -H

# -H 能够查看由某个过程启动的所有线程 ,p指定要看的过程

top -Hp 6106

load average:三组数字别离示意为1分钟、5分钟、15分钟CPU负载的状况。以一个单核的机器为例,load=0.5示意CPU还有一半的资源能够解决其余的线程申请,load=1示意CPU所有的资源都在解决申请,没有残余的资源能够利用了,而load=2则示意CPU曾经超负荷运作,另外还有一倍的线程正在期待解决。多核处理器中,你的load average不应该高于处理器外围的总数量。

阐明:该命令用来从全局的角度查看整机零碎性能。

2、uptime命令

#top命令的简化版

[root@localhost home]# uptime

22:43:42 up 1:06, 2 users, load average: 0.97, 0.74, 0.40

CPU性能指标命令

1、vmstat命令

#每两秒采样一次,共采样3次

[root@localhost home]# vmstat -n 2 3

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

2 0 0 427172 2116 342488 0 0 23 4 494 564 3 7 91 0 0

1 0 0 427172 2116 342520 0 0 0 65 4586 4940 20 26 54 0 0

2 0 0 427172 2116 342524 0 0 0 0 4589 4940 20 25 54 0 0

procs

我的项目

含意

r

运行和期待cpu工夫片的过程数,原则上1核的cpu的运行队列不要超过2,整个零碎的运行队列不要超过总核数的2倍

b

期待资源的过程数,比方正在期待磁盘I/O、网络I/O等

cpu

我的项目

含意

us

用户过程耗费cpu工夫百分比,us值高,代表用户过程耗费cpu工夫多,如果长期大于50%,须要优化程序

sy

内核过程耗费的cpu工夫百分比,us+sy参考值为80%,超过此阈值表明cpu负荷过大

id

处于闲暇的cpu百分比

wa

零碎期待IO的cpu工夫百分比

st

来自于一个虚拟机窃取的cpu工夫百分比

阐明:该命令次要用来查看cpu的一些指标(蕴含但不限于)。

2、mpstat(Multiprocessor Statistics)命令

#查看所有cpu外围的信息,2秒采样一次共三次,-P {|ALL} 示意监控哪个CPU, cpu在[0,cpu个数-1]中取值

mpstat -P ALL 2 3

阐明:查看所有cpu核信息,其报告与CPU的一些统计信息,这些信息寄存在/proc/stat文件中。在多CPUs零碎里,其岂但能查看所有CPU的均匀情况信息,而且可能查看特定CPU的信息。

3、pidstat命令

#查看cpu的信息,每秒钟采样1次共采样5次,-p指定具体过程编号

pidstat -u 1 5 -p 1796

#查看内存信息,每秒钟采样1次共采样5次,-p指定具体过程编号

pidstat -r 1 5 -p 1796

#查看磁盘信息,每秒钟采样1次共采样5次,-p指定具体过程编号

pidstat -d 1 5 -p 1796

阐明:查看某个具体的过程应用cpu的信息。

内存指标命令

1、free命令

#默认单位kb

free

#指定单位mb

free -m

#指定单位gb

free -g

磁盘指标命令

1、df命令

#查看磁盘残余空间

df -h

IO指标命令

1、iostat命令(磁盘IO)

#查看磁盘IO情况,2秒采样一次共三次

iostat -xdk 2 3

我的项目

含意

rkB/s

每秒读取数据量kb

wkB/s

每秒写入数据量kb

svctm

IO申请的均匀服务工夫,单位毫秒

await

IO申请的均匀等待时间,单位毫秒,值越小越好

util

一秒中有百分之几的工夫用于IO操作,靠近100%时,示意磁盘带宽盘满,须要优化程序或减少磁盘

阐明:rkB/s、wkB/s长期超大的数据读写,必定不是失常景象;svctm与await值很靠近,示意简直没有IO期待,磁盘性能好,如果await值远高于svctm的值,示意IO等待时间太长,待优化。

1、ifstat命令(网络IO)

#查看网络IO情况

ifstat 1

三、服务器异样剖析与定位

1、JAVA程序CPU占用过高的剖析思路与定位

制作一个简略的CPU密集计算的java程序,而后再服务器上跑起来,以此实例来模仿生产环境CPU占用过高的场景。

#编译

javac WhileTrueDemo.java -d

#运行示例程序,造成CPU密集计算

nohup java com.jayway.WhileTrueDemo &

具体步骤

先用整机性能命令top找出CPU占比最好的过程

阐明:通过top命令根本能够看出PID为6106的过程CPU占用过大。

利用ps后者jps进一步定位

#采纳ps命令进一步查看搞事的java程序

[root@localhost home]# ps -ef | grep java | grep -v grep

root 6106 1460 99 22:09 pts/0 00:52:15 java com.jayway.WhileTrueDemo

#采纳java自带命令查看

[root@localhost home]# jps -l

6106 com.jayway.WhileTrueDemo

6238 sun.tools.jps.Jps

定位到具体线程或者代码

#-m 显示所有的线程

#-p pid过程应用CPU的工夫

#-o 该参数后是用户自定义格局

ps -mp 6106 -o THREAD,tid,time

阐明:从上图可知6107这个线程占用的CPU最多并且占用CPU工夫也最多,从它下手持续剖析。

将须要的线程ID转换为16进制英文小写格局

#转换线程号6107为16进制英文小写,后果为:17db

printf "%x\n" 6107

java程序采纳jstack命令查看java堆栈信息,定位具体问题

# 过程号为6106,查找问题线程号17db(16进制英文小写)

jstack 6106 | grep 17db -C10

阐明:从上图就能够看出WhileTrueDemo文件的第八行代码是问题的本源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值