web服务运行时,如果发生各种卡顿和假死,该如何去排查
检查服务器磁盘情况
使用df或者free命令查询磁盘情况

服务器磁盘空间不足时,会导致某些要写入磁盘的方法阻塞,可能会导致服务不可用。
解决方法:清理磁盘不需要的文件,或者扩容。
查询服务器内存和cpu使用情况
使用top命令查看运行内存和cpu消耗

- 如果有非java程序占用了较高的cpu和内存,则排查该程序是否正常。是否是其他外部因素占用了服务器大量资源。
- 系统内存MEM内存不足,排查各个服务占用内存情况。
- 在没有其他服务干扰情况下,使用jstat命令或者jmap命令查看java内存使用情况,是否内存不足。
- 如果JAVA程序的CPU占用过高,则进行接下来排查java服务原因

java占用cpu过高时,使用PID和jstack命令查询实际方法栈情况。
使用PID查看线程占用情况
top -pPID-H
查出有问题的线程

jstackPID| grep -A 100线程的16进制号
如jstack 8073 | grep -A10 1f8a(8074的16进制)

排查出有问题线程的代码定位。
定位之后查看程序代码如何引发的。
查看数据库情况
数据库超时或者阻塞,也会造成web服务的无法响应。
使用数据库命令查询
SELECT * FROM information_schema.INNODB_TRX
查询出数据库阻塞情况,是否有很多事务在等待,导致服务卡死。
找出阻塞语句,排查程序卡死原因。

当web服务出现卡顿和假死时,可通过检查服务器磁盘、内存和CPU使用情况来定位问题。使用df和free命令查看磁盘,top命令查看内存和CPU。若发现非Java程序占用资源过高,需进一步排查。对于Java服务,可以使用jstat和jmap检查内存,通过jstack和PID找出高CPU占用线程。数据库也是关键,查询INNODB_TRX以了解事务阻塞情况。通过这些步骤,能有效定位并解决服务卡死问题。
2万+

被折叠的 条评论
为什么被折叠?



