线上运行的项目突然变得很卡如何排查?

​ 我们可能在项目部署后遇到一些问题,某一块模块功能或者全部的模块功能在某一时间段特别卡,我们应该如那些方面去排查呢?接下来我们一起去探究一下。

​ 1、如果所有的模块都卡:

​ 极有可能是网络出问题,cpu被拉满了。

​ 2、如果是单一个模块的变得卡,其他模块都正常:

​ 变卡的问题可能性点:文件句柄,IO流,SOCKET流,代码中sql不规范,数据库连接资源,数据库连接问题导致锁无法释放,代
码中sleep过长,线程池使用不规范等等。

​ 优先查看最近的代码提交是否符合规范。

​ 如果上述无法确认,线上触发调用从接口调用出开始排查日志,查看每一次关键日志的时间信息,看能否确定哪一个调用链路时

间耗费过长,查看当前文件句柄,IO流,SOCKET流是否资源关闭正常,去数据库执行当前的sql语句看是否为慢sql,是否因为少参数问

题导致全表查询。

​ 如果上述还无法确定,可以在触发线上调用之后看一下当前线程的dump信息

####使用top -H指令看每个线程的性能(如果有某个线程的cpu利用率一直是100,记录下pid)
root@hadoop top -H####将上步骤的pid转换成线程用的nid(16进制的)
printf "%x\n" 上一步的pid###获取当前项目的java的pid
root@hadoop  ps -aux | grep java
tomcat     1538 17.1 39.4 11175396 6620524 ?    Sl   Jul09 3629:14 /opt/taobao/install/ajdk-8.1.1_fp1-b52/bin/java -server -Xms5334m -Xmx5334m -Xss1m -XX:PermSize=128m -XX:MaxPermSize=256m -Xmn2000m -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSMaxAbortablePrecleanTime=5000 -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -verbose:gc -Xloggc:/alidata/www/logs/tomcat7/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:-HeapDumpOnOutOfMemoryError -XX:ErrorFile=/usr/share/tomcat7/logs/hs_err_pid%p.log -XX:HeapDumpPath=/usr/share/tomcat7/logs/java_pid.hprof -verbose:gc -Xloggc:/alidata/www/logs/tomcat7/gc.log-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Djdk.tls.rejectClientInitiatedRenegotiation=true -Dsun.net.inetaddr.ttl=0 -Dcatalina.logs=/usr/share/tomcat7/logs -Dlog4j.defaultInitOverride=true -Dlog4j.dir=/alidata/www/logs/tomcat7 -Dlog4j.level=WARN -Dproject.name=ecm-server -javaagent:/alidata/tianjimon-apm/tianjimon-apm.jar -classpath :/usr/share/tomcat7/bin/bootstrap.jar:/usr/share/tomcat7/bin/tomcat-juli.jar: -Dcatalina.base=/usr/share/tomcat7 -Dcatalina.home=/usr/share/tomcat7 -Djava.endorsed.dirs= -Djava.io.tmpdir=/tmp -Djava.util.logging.config.file=/usr/share/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start
root     124342  0.0  0.0  61260  1864 pts/6    S+   16:40   0:00 grep java####使用pid dump当前运行的线程信息
root@hadoop  jstack 1538 >> dump.log####统计所有的线程状态
root@hadoop  grep Thread.State dump.log| awk '{print $2 $3 $4 $5}' | sort | uniq -c40 RUNNABLE21 TIMED_WAITING(onobjectmonitor)5 TIMED_WAITING(parking)44     TIMED_WAITING(sleeping)200 WAITING(onobjectmonitor)3 WAITING(parking)
####如果有大量WAITING的线程,可以查看当前dump.log中WAITING的线程在干什么,如果WAITING的线程日志中有await,说明有大量线程空闲状态。如果有大量的WAITING,会造成过多的线程上下文切换次数【因为WAITING状态是等待状态,等待就绪,等待cpu调度,每一次WAITING到RUNNABLE都会进行一次上下文切换】###将第二步骤的线程nid拿过来去dump.log查询当前线程在干什么(示例)
locked <0x00000007d0015508>,再waiting on <0x00000007d0015508>"Finalizer" #3 daemon prio=8 os_prio=31 cpu=0.43ms elapsed=283151.83s tid=0x00007fd4b301f800 nid=0x3803 in Object.wait()  [0x0000700002aba000]java.lang.Thread.State: WAITING (on object monitor)at java.lang.Object.wait(java.base@11.0.10/Native Method)- waiting on <0x00000007d0015508> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(java.base@11.0.10/ReferenceQueue.java:155)- locked <0x00000007d0015508> (a java.lang.Object)at java.lang.ref.ReferenceQueue.remove(java.base@11.0.10/ReferenceQueue.java:176)at java.lang.ref.Finalizer$FinalizerThread.run(java.base@11.0.10/Finalizer.java:170)######日志中如果能体现线程使用不合理,需要去代码中去看下线程池的使用是否规范,是否有代码不合理的地方

线上运行的项目突然变得很卡如何排查?相关推荐

  1. flex布局演示(可线上运行项目)

    flex布局演示(可线上运行项目) 代码: <!DOCTYPE html> <html lang="en"><head><meta cha ...

  2. linux上运行项目,发布项目到 Linux 上运行 Core 项目

    目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下,我们windows上的项目如何发布项目到Linux上运行 ...

  3. vmware虚拟机上的centos安装Hadoop,以及在本地eclipse上运行mapReduce项目,并将文件输出到HDFS中...

    注意centos主机名不支持下划线,所以文章中若出现centos_02.com,请替换为 centos02.com vmware虚拟机上的centos安装Hadoop 安装vmware虚拟机 虚拟机上 ...

  4. 最大规模线上新基建项目拉开大幕!第127届广交会今天正式开展

    6月15日,筹备了两个多月的第127届广交会正式开幕,这意味着往届来自全球参展商和采购商,通过广交会网上平台就可以实现足不出户下订单.做生意. 16大类商品50个线上展区,3D.VR等多种形式展示商品 ...

  5. 「react-native」【记】在真机(ios和安卓)上运行example项目AwesomeProject时遇到的问题

    「react-native」[记]在真机(ios和安卓)上运行example项目AwesomeProject时遇到的问题 问题一:Error: Failed to install CocoaPods ...

  6. 【华硕笔记本天选2060开机突然变得很卡,所有程序运行都不好了】

    [华硕笔记本天选2060开机突然变得很卡,所有程序运行都不好了] 一.出现问题 开机之后电脑很卡,重启开机很慢,电源计划只有平衡没有高性能可选 二.解决办法 (无语子) 我把电源拔了,就好了,然后再接 ...

  7. Win10突然变得很卡的一个解决思路

    Win10突然变得很卡的一个解决思路 介绍 本人的笔记本,GTX 960M的显卡,i7-6700HQ的CPU,16G内存. 可是为什么!玩一个守望先锋都会卡!开个腾讯会议+录屏都会卡!风扇呜呜地转! ...

  8. 苹果删除照片不释放内存_新买的手机变得很卡?试试删除这3个文件夹,释放大量内存...

    手机内存是很多人在买手机时都会看重的一点,因为手机内存大就能够下载更多的应用,游戏.对一些喜欢玩游戏的人来说,肯定会追求内存大的手机,因为这样对系统的流畅度还有安装的游戏都有更多的空间. 一些新买的手 ...

  9. altium designer显示Analyzing GND,变得很卡

    altium designer在铺铜之后,变得很卡,下脚状态栏显示Analyzing GND,即使把铺铜删除之后,也没有改善. 解决:在PCB中按"N",选"Hide c ...

最新文章

  1. Visual Basic 2005 - 如何将色彩字符串转换成 Color 结构
  2. 2015.1.3 让CombBox自动弹出下拉框
  3. C博客作业01--分支、顺序结构
  4. JDK8中ConcurrentHashMap源码解析
  5. 5.9 程序示例--非线性分类-机器学习笔记-斯坦福吴恩达教授
  6. java rect 旋转_处理(Java可视化语言):使用rectMode(CENTER)而不是rectMode(CORNER)旋转矩形,留下奇数衰落轨迹效果...
  7. android menu分割线,给 NavigationView 的Menu的分割线 设置高度和颜色
  8. 一篇文章学懂Shell脚本,最简明的教程在这里
  9. Docker+Jenkins+Git+GitLab实现DevOps
  10. android 双卡流量统计,android流量统计
  11. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(八):MyBatis分页功能实现
  12. php声明变量开头,php声明一个变量需要注意些什么
  13. 【运量预测】基于matlab BP神经网络公路运量预测【含Matlab源码 413期】
  14. IE 7打开网页慢解决方法
  15. ThinkPHP 导入的几种方法
  16. 对建立奉贤区区级工程技术中心的企业给予30万元奖励
  17. ECharts 中的事件和行为
  18. 了解标量、向量和点积
  19. 开发到底要不要转行软件测试?一篇足以 最全方位分析
  20. pythonmacd指标编写_利用python编写macd、kdj、rsi、ma等指标 -

热门文章

  1. 使用qq邮箱进行服务器邮件代发
  2. 一笔画:五环,python-turtle。画圆圈
  3. 0202了,你会用手机操控电脑吗?
  4. uni-app实战之社区交友APP(10)登录、个人空间开发和动画优化
  5. vue和微信小程序的基本使用区别
  6. 【备忘】【不定时更新】那些有用有趣的网站君们~~
  7. java.io.IOException: FIS_AUTH_ERROR in Android Firebase
  8. SQL Server 阻止保存要求重新创建表的更改
  9. python 离群值_python:删除离群值操作(每一行为一类数据)
  10. Python的基本语法(十一)(持续更新)