今日线上机器发生服务卡顿现象,根据运维人员给的报警记录知道是那台机器出现的故障解决思路是否内存溢出是否线程跑满无法接收新请求根据这2个思路进行进一步的排查内存溢出排查内存溢出的排查步骤第一步:进程是否存活 通过命令看到,tomcat的进程存在,则说明进程是存活的,如果是内存溢出导致的宕机的话,可以在cat /var/log/messages可以看到机器是在什么时候溢出的,这样的话,我们只能从dum
jps查看java进程,可以看一下我们的java进程有没有启动;jconsolejava监视内存,线程等信息,可以查看GC的收集情况。jstat查看java某一进程内存情况jstack查看进程的线程信息jmap查看进程的堆栈信息jmap -heap堆信息visual VM...
原创 2021-09-04 10:22:43
361阅读
本文主要是以常见的线上问题进行模拟,然后介绍定位问题的方法。1.环境准备:基础环境 jdk1.8,采用 SpringBoot 框架来写几个接口来触发模拟场景,首先是模拟 CPU 占满情况2.问题列举2.1 cpu占用率较高模拟cpu占用率较高,实现方法较简单,用一个死循环占用cpu计算即可。代码模拟:/** * 模拟CPU占满 */ @GetMapping("/cpu/
服务器上部署了Java服务,出现了OutOfMemoryError,问题应该如何定位?解决思路Java服务OOM,最常见的原因为:有可能是内存分配确实过小,而正常业务使用了大量内存某一个对象被频繁申请,却没有释放,内存不断泄漏,导致内存耗尽某一个资源被频繁申请,系统资源耗尽,例如:不断创建线程,不断发起网络连接更具体的,可以使用以下的一些工具逐一排查。一、查发生了OOM的进程工具:top方法:执行
转载 2021-06-02 16:08:58
747阅读
OOM产生的原因 太多实例化的对象无法被垃圾回收器回收,导致堆内存溢出,问题本身并难,难点是找出那个对象被实例化且无法被垃圾回收器回收,这个时候如果能查看到OOM前堆内存实例情况,就能看出那个对象占满了堆,这个时候就用到一个命令,能保留OOM的案发现场并写入到日志,命令如下: -XX:+HeapDu ...
转载 2021-08-02 22:18:00
314阅读
2评论
1、利用source-detector插件可以寻找程序中存在的js.map文件插件的安装使用教程2、在网站JS文件中用关键词寻找js.map文件3、处理Burp的HTTP历史请求时,不对js文件进行过滤,之后再全局搜索js.map利用如果使用的是source detector插件,则该插件可直接对js.map进行还原并保存。如果不使用该插件,则需要手动进行逆向还原操作,使用的工具为reverse-
一、前言:我们在⽣产环境中,程序代码、硬件、⽹络、协作软件等任⼀因素,都会引发意想不到的问题,所以排查产线问题⽐较困难,所以问题定位体现了⼀名⼯程师的基础能⼒,问题的解决则体现了⼯程师的技能素养。二、线上常见问题 如出现 (CPU占⽤率过⾼、磁盘使⽤率100%、系统可⽤内存低、服务间调⽤时间过⻓、多线程并发异常、死锁等)三、定位问题方案 :业务⽇志分析排查通常情况下,⼤部分错误信息都会在⽇志上有
转载 2024-03-11 22:55:11
90阅读
 有时候,有很多问题只有在线上或者预发环境才能发现,而线上又不能调试代码,所以线上问题定位就只能看日志、系统状态和dump线程。1)在Linux命令行下使用TOP命令查看每个进程的情况,显示如下。top - 22:27:25 up 463 days, 12:46, 1 user, load average: 11.80, 12.19, 11.79 Tasks: 113 total, 5 runni
转载 2023-08-04 09:58:22
60阅读
概述Java语言是当前互联网应用最为广泛的语言,作为一名Java程序员,当业务相对比较稳定之后平常工作除了coding之外,大部分时间(70%-80%)是会用来排查突发或者周期性的线上问题。 排查线上问题是具有一定技巧或者说是经验规律的,排查者如果对业务系统了解的越深入,那么相对来说定位也会容易一些。 不管怎么说,掌握Java服务线上问题排查思路并能够熟练排查问题常用工具/命令/平台是每一个Jav
转载 2023-07-18 22:44:34
20阅读
我经历过凌晨3点被报警叫醒的慌乱,也体会过定位难题的煎熬。90%的线上问题都源于"三个不知道":不知道哪慢
笑死,面试还会这样问?
原创 2022-12-31 10:31:32
10000+阅读
一个线上问题是如何从定位到解决的?设计埋点埋点就是你要监控啥,你必须在程序开启时设置一些参数来辅助监控,例如把日志输出到哪里,便于另外的监控系统监控。例如 -XX:+PrintGCDetails -Xloggc:/home/xx.log 形成的LOG文件启动参数nohup java ${DEBUG_OPTS} ${JAVA_OPTS} -jar ${WORK_DIR}/abc-1.0-relea
利用java反射排查一次线上问题(确定问题问题定位) 背景hive 用的 1.1.0版本(其实这个版本bug挺多,包括执行计划串列的等等问题吧,建议大家如果选1.x版本用1.2.2吧),一下提到的代码部分如无特殊说明都是hive-1.1.0版本。前段时间写一个hive sql 预估资源的服务(根据sql返回其读取的行数及所读文件(表)的大小,在运行时给其指定合理资源的大小,
转载 2023-08-24 15:47:09
47阅读
Arthas(阿尔萨斯) 能为你做什么?Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?线上遇到某个
1、环境的差异,传统模式下的部署方式大都基于vm,出现环境的差异是不可避免的,如今的技术先进了很多,docker容器化足以支持环境的差异问题,不过这个也是一个比较优先的方案。
转载 2023-07-25 09:32:29
48阅读
java线上服务问题排查1、业务日志相关如果应用系统出现异常,一般都会在业务日志中体现统计当天业务日志中ERROR出现数量:egrep ERROR --color logname | wc -l ,如果错误数量过大,一般都是有问题的查看日志中ERROR后10行具体报错:egrep -A 10 ERROR logname | less ,或 -C 10 查看ERROR前后10行日志Java中,所有异
先top,再按H,获取每个进程的内存情况,可以看到占用CPU最高的PID top -p PID,显示你的java进程的CPU情况,PID是你的进程号,比如19663 按H,可以获取到每个线程占用CPU的使用情况 找到占用CPU使用率最高的线程tid,比如196 将196转为十六进制,得到0x ...
转载 2021-08-03 14:12:00
153阅读
服务器CPU突然告警,如何定位是哪个服务进程导致CPU过载,哪个线程导致CPU过载,哪段代码导致CPU过载? 步骤一、找到最耗CPU的进程工具:top方法:执行top -d 1 -c,每秒刷新一次,显示进程运行信息列表键入P (大写p),进程按照CPU使用率排序图示:如上图,最耗CPU的进程PID为1802步骤二:找到最耗CPU的线程工具:top方法:top -d 1 -Hp 1802,显示一个进
转载 2021-06-02 16:09:35
168阅读
pidstat 命令详解 pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获 ...
转载 2021-10-15 09:47:00
237阅读
2评论
原因:Java中存在内存泄露,就是因为对象无用却可达。 举个例子: 在这个例子中,我们循环申请Obje
原创 2023-05-11 11:12:25
238阅读
  • 1
  • 2
  • 3
  • 4
  • 5