10分钟快速定位互联网应用报障的方法

简介: 10分钟快速定位互联网应用报障的方法

一.通常的报障类型


1.异常流量导致服务器负载高


2.数据库负载高(应用被刷或sql性能问题或机器很久没重启后的假象)


3.项目上线后遇到的各种问题(服务器负载高、页面豆腐块没数据或50x、死循环、页面响应慢等)


二.快速排查定位报障的步骤:


第一步应用方面


1.查看应用日志


vi所有日志stdout、stderr、jdkout、jvm等log,都细看下


搜索/xxxx


按n往下查xxxx


ctrl+f往下翻页


ctrl+b往回翻页


2.查看应用线程情况、monitor、jvm信息


第二步查看服务器信息方面


1.cpu


1)top


继续按


c:按CPU占用排序且显示具体的进程明细


M:按内存使用排序


1:显示各CPU的使用情况


回车:刷新数据


“load average”为当前系统负载的平均值,三个值分别为1分钟前、5分钟前、15分钟前的平均数


cat /proc/cpuinfo查看cpu相关参数


cat /proc/loadavg也可看负载情况


2.内存


1)free -m


注意:空闲内存=free+buffers+cached=total-used


cat /proc/meminfo查看内存相关配置参数


3.网络连接/IO


1)vmstat


vmstat 5 -S m:以5秒的数据刷新vmstat数据(单位为m)


参数含义


Procs


r:等待CPU资源的进程数,大于cpu核数时cpu资源已占满


b:处在非中断睡眠状态的进程数


w:被交换出去的可运行的进程数。此数由linux计算得出,但linux并不耗尽交换空间


Memory


swpd:虚拟内存使用情况,单位:KB


free:空闲的内存,单位KB


buff:被用来做为缓存的内存数,单位:KB


Swap


si:从磁盘交换到内存的交换页数量,单位:KB/秒


so:从内存交换到磁盘的交换页数量,单位:KB/秒


IO


bi:发送到块设备的块数,单位:块/秒


bo:从块设备接收到的块数,单位:块/秒


System


in:每秒的中断数,包括时钟中断


cs:每秒的环境(上下文)切换次数


CPU


按CPU的总使用百分比来显示


us: CPU使用时间


sy: CPU系统使用时间


id:闲置时间


2)netstat


netstat -nat|grep -i "80"|wc -l:查看80端口下所有连接数


netstat -an | grep ESTABLISHED | wc -l:查看正在通信的连接数


netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}':查看tcp连接状态数情况


返回结果示例:


LAST_ACK 5


SYN_RECV 30


ESTABLISHED 1597


FIN_WAIT1 51


FIN_WAIT2 504


TIME_WAIT 1057


其中的


SYN_RECV表示正在等待处理的请求数;


ESTABLISHED表示正常数据传输状态;


TIME_WAIT表示处理完毕,等待超时结束的请求数。


netstat -na:显示所有网络连接


netstat -nap:显示所有网络连接,并带上进程相关信息


netstat -nat:显示所有tcp类型的网络连接


netstat -ln:显示所有监听状态的网络连接


一般跟grep组合使用


4.进程


1)ps


ps -aux:显示所有用户进程详情,一般跟grep组合使用


ps -ef:显示所有用户进程详情另一种风格,一般跟grep组合使用


如果显示不全可以通过-w加宽,如ps aux -www


如:ps -ef |grep java或ps -aux |grep java


ps -ef -www|grep java或ps -aux -www|grep java


5.JVM


1)GC情况


jstat


jstat -gccapacity :JVM各区的剩余状态


jstat -gcutil :JVM各区的占用情况


jstat -gccause :jstat -gcutil基础加上gc的原因


jpid java为进程id,另外可以指定更新频率,如-h5 1s:每一秒更新一次,并每隔5条加上header显示


示例:jstat -gcutil 31479 500


即会每500毫秒一次显示进程号为31479的java进程的GC情况,


详细信息


jstat -gc31479500


即会每500毫秒一次显示进程号为31479的java进程的GC情况,


结果说明


显示内容说明如下(部分结果是通过其他其他参数显示的,暂不说明):


S0C:年轻代中第一个survivor(幸存区)的容量(字节)


S1C:年轻代中第二个survivor(幸存区)的容量(字节)


S0U:年轻代中第一个survivor(幸存区)目前已使用空间(字节)


S1U:年轻代中第二个survivor(幸存区)目前已使用空间(字节)


EC:年轻代中Eden(伊甸园)的容量(字节)


EU:年轻代中Eden(伊甸园)目前已使用空间(字节)


OC:Old代的容量(字节)


OU:Old代目前已使用空间(字节)


PC:Perm(持久代)的容量(字节)


PU:Perm(持久代)目前已使用空间(字节)


YGC:从应用程序启动到采样时年轻代中gc次数


YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)


FGC:从应用程序启动到采样时old代(全gc)gc次数


FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)


GCT:从应用程序启动到采样时gc用的总时间(s)


NGCMN:年轻代(young)中初始化(最小)的大小(字节)


NGCMX:年轻代(young)的最大容量(字节)


NGC:年轻代(young)中当前的容量(字节)


OGCMN:old代中初始化(最小)的大小(字节)


OGCMX:old代的最大容量(字节)


OGC:old代当前新生成的容量(字节)


PGCMN:perm代中初始化(最小)的大小(字节)


PGCMX:perm代的最大容量(字节)


PGC:perm代当前新生成的容量(字节)


S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比


S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比


E:年轻代中Eden(伊甸园)已使用的占当前容量百分比


O:old代已使用的占当前容量百分比


P:perm代已使用的占当前容量百分比


S0CMX:年轻代中第一个survivor(幸存区)的最大容量(字节)


S1CMX:年轻代中第二个survivor(幸存区)的最大容量(字节)


ECMX:年轻代中Eden(伊甸园)的最大容量(字节)


DSS:当前需要survivor(幸存区)的容量(字节)(Eden区已满)


TT: 持有次数限制


MTT: 最大持有次数限制


2)jvm内存


jmap


jmap -dump:format=b,file=jmap.log :生成heap dump文件


jmap -heap :显示jvm heap总体情况


jmap -histo:live :显示类实例占用内存情况


./jmap -heap 29760


分析工具:mat


3)jvm线程


jstack


jstack -l :显示线程阻塞/死锁情况


jstack -l > /tmp/jstack.log把jvm线程栈信息导到文件上


如jstack -l 2255 > /tmp/jstack.log


6.磁盘空间


1)df -h:硬盘存储总体情况


2)du --max-depth=1 -h <路径>:指定路径下所有文件夹的大小(递归一层)


如:du --max-depth=1 -h./


3)du -sh <路径>:指定目录的大小


如:du -sh./


7.其他


1)分析访问日志


如:


分析响应状态码去重


awk '{print $9}' access.log |sort|uniq -c


查看最近访问量最高的页面(.jsp)


#cat access.log |awk '{print $9}'|grep '.jsp'|sort|uniq -c|sort -nr |head -n 10


2)curl命令


指定ua和代理ip

————————————————

文/老猿,写代码写诗写职场的程序猿大叔,转载此文请联系老猿。



相关文章
|
4月前
|
缓存 数据处理 数据库
构建高效移动应用:基于云函数的动态背景同步技术
【4月更文挑战第8天】 在移动应用开发中,提升用户体验和后端服务效率始终是核心目标之一。随着云计算的兴起,云函数作为一种轻量级的计算服务模式,为移动应用提供了新的优化途径。本文将探讨一种利用云函数实现的动态背景同步技术,该技术能够在不占用移动设备额外资源的前提下,实现数据的实时更新和同步,从而为用户提供无缝衔接的体验。我们将详细介绍这一技术的工作原理、实现方法以及在实际移动应用中的应用场景。
|
12月前
|
监控 安全 物联网
什么是UWB定位技术?UWB定位的应用场景及功能介绍
uwb定位技术全称Ultra Wide Band,超宽带技术。uwb超宽带技术是一种全新的通信技术,与传统通信技术有极大差异。它不需要使用传统通信体制中的载波,而是通过发送和接收极窄脉冲来实现无线传输,由于脉冲时间宽度极窄,使用的带宽在500MHz以上。 后来,由于uwb定位技术穿透力强、功耗低、安全性高、定位精度高等优势,人们意识到了它在高精度定位领域的价值,uwb在工业定位领域的应用逐渐成为主流。
|
18天前
|
开发框架 Android开发 开发者
探索移动应用的无限可能:从开发到系统深度解析
【8月更文挑战第24天】在数字时代的浪潮中,移动应用与操作系统构成了我们日常生活的数字基石。本文将深入探讨移动应用的开发流程、跨平台框架的应用,以及移动操作系统的核心机制,旨在为读者揭示如何利用这些技术构建更智能、更高效的移动解决方案。通过实际代码示例,我们将一起见证技术如何转化为创新的力量。
|
运维 监控 安全
工业领域定位系统源码—uwb定位技术
UWB定位方案中,提供实时位置信息监控、智能巡检、静态/动态电子围栏、行为监测、寻呼报警等功能,来确保企业生产工作的安全和运维工作的效率。
工业领域定位系统源码—uwb定位技术
|
人工智能 监控 数据可视化
工业互联网UWB定位系统源码,支持自定义开发
工厂人员定位系统可实现物资/车辆实时定位,物资/车辆数量实时查询,全智能化的物资/车辆查找,提高工作效率,实现合理调度。 集人脸识别系统、智能考勤、工时统计、行为检测、历史轨迹回放、人员管理、电子围栏、应急救援等功能为一体,实现在岗人员及外来承包商的规范管理
工业互联网UWB定位系统源码,支持自定义开发
|
运维 监控 Java
助你秒级定位线上问题!
经常做后端服务开发的同学,或多或
助你秒级定位线上问题!
|
运维 监控 自动驾驶
自动感知和定位 直播云优化的最后一击
自动感知和定位 直播云优化的最后一击
自动感知和定位 直播云优化的最后一击
|
存储 机器学习/深度学习 移动开发
移动端堆栈关键行定位的新思路
崩溃堆栈是我们日常应用问题排查中的重要辅助手段,在移动开发上也不例外,为了支持用户在堆栈上的快速定位,我们面临一个看似比较简单问题:高亮崩溃中的关键行, 辅助用户快速定位问题。
8189 0
移动端堆栈关键行定位的新思路
|
传感器 算法 自动驾驶
导航定位向高精定位的演进与实践
本文较系统的介绍了手机、车机导航定位中使用的关键技术,以及高德地图在这些关键技术中的进展。最后,讨论了在传统导航向自动驾驶的演进过程中,定位技术的演进路径。
导航定位向高精定位的演进与实践
|
机器学习/深度学习 算法 物联网
高德网络定位算法的演进
在过去的几年中,高德网络定位算法经历了从无监督算法向有监督算法的演进,从定位精度、定位能力透出等方面都有了显著的提升。
高德网络定位算法的演进