最近现网的java服务启动一段时间之后,就不响应请求了,进程一直还在,但是telnet端口不通。...top 命令查看服务器情况top图片看到该服务进程(80112)占用了最大的CPU查看进程的所有线程的运行情况top -Hp 80112具体信息如下:图片可以看到其中线程81052占用了99.9% 的CPU
故障场景 Java进程出现问题,通常表现出如下现象: Web应用响应时间长/超时,甚至不响应 CPU使用率极高/低,频繁出现Full GC,甚至OutOfMemoryError 响应时间长、超时,甚至不响应...原因分析 针对响应时间长、超时,甚至不响应,这是一个综合性的问题导致的,可能并不单纯是应用程序本身的问题,如果后端还接了数据存储系统,除了排查应用程序本身的问题之外,还需要排查应用所依赖的第三方组件是否出现了性能瓶颈...通常,在直观的表象背后是对应的系统指标异常,应该根据具体的系统指标进行排查,如下举例: 1.CPU使用率极高,可能是应用代码出现了死循环,或者TCP连接数过高。...3.如果频繁出现Full GC,首先需要排查是否分配的堆内存空间太小,或者GC配置是否需要调优,此时需要进行内存dump分析。...常用工具及处理方式 应用程序日志是首先排查的入口点,可以直接排查日志文件,或者从日志中心进行检索,因此要求在系统开发的时候必须设计合理的日志输出规范。
为每台 MySQL 实例部署一个 keepalived 进程,由 keepalived 提供 VIP 高可用的故障切换。...先是经过一通的排查,然后并没有找到 keepalived 任何配置上的毛病。 然后在没有办法的情况下,重新测试了几次,问题又复现了。...连接池排查 在排查前面两个疑点之后,我们只能将目光转向了业务服务的DB客户端上。...带着这个思路,继续分析 Java 进程的线程栈。...四、小结 本次分享了一次关于 MySQL 连接挂死问题排查的心路历程,由于环境搭建的工作量巨大,而且该问题复现存在偶然性,整个分析过程还是有些坎坷的(其中也踩了坑)。
1、yum install -y htop iotop smem 2、smem -k -s uss //查看进程使用的内存量 smem -p -s uss //查看进程使用的内部百分比.../perf -k //查看单个进程使用的内存量 3、 ps aux|head -1;ps aux|sort -nr -k4|head -10 //获取内存使用最大的10个进程 ps aux|head...-1;ps aux|sort -nr -k3|head -10 //获取CPU使用最大的10个进程 4、查找僵尸进程:ps -e -o stat,ppid,pid,cmd|grep -e...'^[zZ]' 5、杀死僵死进程:ps -e -o stat,ppid,pid,cmd|grep -e '^[zZ]'|awk '{print $2}'|xargs kill -9
到机器上通过ps查看进程,发现凌晨01:07开始调起的python进程,经过了10多个小时依然没有退出的迹象,正常情况下这类任务执行不会超过10s,这已经严重超出了预期时间。...幸好卡死的进程还在,我们有现场可以对这个进程做进一步分析,定位此时python任务内部在做什么。...1、找到进程pid首先通过ps -ef找到对应的pid, 拿到对应的python进程pid: 49912、通过strace命令: strace -T -tt -e trace=all -p 4991...可以看到此时进程在接收数据。...将文件拷贝到本地使用浏览器打开,就可以看到python进程当前的调用栈。
defunct 即僵尸进程 当时的解决办法无奈 只能找到僵尸进程的父进程kill 当时认为可能是tail的问题 后来启动脚本中去掉tail 发现问题解决 But 当时一直没有来得及排查是如何引起僵尸进程的问题...这两天抽时间排查了一下 发现和tail没有一毛钱关系 艰难的排查过程1-尝试复现 测试代码Defunct.java import java.util.concurrent.TimeUnit; public...而此时java进程的父进程变为了1 sh分别有两个子进程 一个是java子进程 一个是tail子进程 start.sh启动的java进程的父进程是1 即init进程 start_tail.sh启动后...java进程的父进程是sh 当启动start_tail.sh后 因为tail是前台进程 所以ctrl+c可以结束 用这个例子做各种测试 都无法复现僵尸进程的问题 艰难的排查过程2-游戏服务器尝试复现 当初出现是在游戏服务器复现的...shutdown 总结2 正常启动脚本 没有tail java进程的父进程是1 即init进程 使用shutdown脚本关闭java进程后 自动被init进程回收 启动脚本加了tail 此时java
二.找不到进程 1.总使用率高,但进程使用率很低,6个进程,但nginx和php-fpm均是sleep,stress才是运行的进程。...2.查看stress进程,发现不存在,进程关闭后又启动了一个新的,说明一直在关闭启动 pidstat -p 24344 第一个原因,进程在不停地崩溃重启,比如因为段错误、配置错误等等,这时,进程在退出后可能又被监控系统自动重启了...第二个原因,这些进程都是短时进程,也就是exec 调用的外面命令。这些命令一般都只运行很短的时间就会结束,你很难用top 这种间隔时间比较长的工具发现。...3.查看相应进程,找到父进程 pstree | grep stress 可以看到是php-fpm的子进程 4.查看php源码 grep stress -r index.php 5.记录性能事件,等待大约
接下来继续排查。 Linux 熟悉的 64M 内存问题 使用 pmap -x 查看内存的分布,发现有大量的 64M 左右的内存区域,如下图所示。...这就是 linux 进程内存分布中典型的 64M 问题,那有多少个这样的区域呢?...加上这个环境变量启动 java 进程,确实 64M 的内存区域就不见了,但是集中到了一个大的接近 700M 的内存区域中,如下图所示。 到这里,内存占用高的问题并没有解决,接下来继续折腾。...java 处理 zip 使用的是 java.util.zip.Inflater 类,调用它的 end 方法会释放 native 的内存。...经过替换 ptmalloc2 为 jemalloc,进程的内存 RES 占用显著下降,至于性能、稳定性还需进一步观察。
前言 最近业务部门有个java服务进程会突然无缘无故的挂掉,然后这个服务会产生一堆类似hs_err_pid19287.log这样的日志。...本文就来回顾一下,我是如何帮业务部门进行问题排查 排查历程 首先hs_err_pidxxx的日志有提示如下内容 我就让业务部门那边配置下ulimit 。...我们可以使用 abrt-cli list 确认core状态对应的进程及触发时间。...但这个是不是导致java进程频繁挂掉的原因,于是我们做了这么一步,将无法创建ccpp文件的时间点和生成的hs_err_pidxxx时间点做个对比 时间点基本上是吻合的,而且/var/log/messages...综上基本上可以确定是因为无法创建ccpp文件导致,导致该业务的java进程频繁挂掉的原因之一 如何修复 方法一:将ProcessUnpackaged改为yes 这个参数的意思是表示ABRT将非rpm安装程序
Linux的进程排查总体思路和windows的不会偏差太多,具体到细则上存在差异,今天就和师傅们来探讨下Linux下的进程分析及排查。...所以相对来说Linux的进程排查思路可以收缩一些,不会像Windows那样及其需要发散思维。...> 指定进程 -n 循环显示的次数 运行截图: 一目了然,主要配合排查一些僵尸木马、挖矿病毒等会造成硬件资源占用异常的情况,一个静态一个动态,配合分析效率更高。...IP,或者有日志审计的话在日志审计能查到、中间件日志也会有,排查起来就费心思了,下篇再细说),然后断掉进程。...④对其他可疑进程进行排查 主要针对可能存在的横向行为、提权行为和权限维持行为等,首先排查history,是否存在黑客操作记录,如第一张图,可以排查反弹shell进程是否存在;其次是排查ssh连接记录,是否有已被当成跳板机的可能性
Windows的进程排查比较复杂,所以放在前面来先讲。...正经来说Windows进程在任务管理器这看↓(结尾附上windows白进程,也就是系统自带进程供大家参考,排查时可以优先去除掉非敏感非可利用部分,提高效率): 图片内容不重要,重要的是那么多进程,如何排查出可疑进程呢...windows敏感进程(cmd这种肯定不用说了,注意排查一些敏感路径下的调用,system32这种)列出windows敏感路径供大家参考: C:\Windows\system.ini C:\windows...端口是通信的一环,排查进程绕不开端口排查,直接netstat: netstat -ano | findstr EST 命令的意思是查询端口并匹配出正在使用中的端口,截图因为这是up的个人电脑,端口乱点很正常...,因为挖矿病毒显著的特征就是启用时会使机器高负载运行,极其占用资源,很容易就被态感或者其他安全设备捕获到流量,屡见不鲜,所以遇到占用高的不明进程优先排查挖矿。
定位established链接: netstat -ano | findstr “ESTABLISHED” 获取正在链接的IP地址和进程信息 ?...定位PID进程: tasklist | findstr “pid” ?...然后通过wmi定位进程路径: wmic process where “name=‘qq.exe’” get executablepath ?...最后对可疑的程序进程封禁 火绒-设置-IP协议控制-新建规则,对某个程序进程禁用网络 ? Eset是设置网络防护,高级设置,编辑规则,添加对某个应用禁用网络 ?
文章源自【字节脉搏社区】-字节脉搏实验室 作者-m9kj 定位established链接: netstat -ano | findstr “ESTABLISHED” 获取正在链接的IP地址和进程信息...定位PID进程: tasklist | findstr “pid” ?...然后通过wmi定位进程路径: wmic process where “name=‘qq.exe’” get executablepath ?...最后对可疑的程序进程封禁 火绒-设置-IP协议控制-新建规则,对某个程序进程禁用网络 ? Eset是设置网络防护,高级设置,编辑规则,添加对某个应用禁用网络 ?
此时称系统处于死锁状态或者系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 理解死锁的基础概念后,我这边提供一个编写一个死锁的示例程序作为演示和排查的解决方法供于思考。...package com.wpw.threadconcurrent; import lombok.extern.slf4j.Slf4j; import java.util.concurrent.TimeUnit...如何排查已经产生了死锁呢,我们通过cmd命令进入控制台,通过jps看下当前程序的pid。 ?...我们看到打印的信息发现已经存在一个死锁,那么如何解决这个问题呢,找到对应的代码进行逻辑的排查即可,避免资源的互相竞争。 这次要分享的内容到这里就结束了,喜欢文章的欢迎转发和分享。
1、top 查看占用资源信息以及pid top 2、查看pid下绑定线程 top -Hp pid1(进程id) 3、拿到需要查询的线程pid,转换成16进制 printf '%x' pid2(线程id)...==> 6a4 #6a4为输出结果 4、通过jstack讲java信息输出到文本 jstack pid1(进程id) > t.txt 如果jstack报错,请查看 jstack不存在 5、在
死锁原因 Java发生死锁的根本原因是:在申请锁时发生了交叉闭环申请。
在使用微软系的一些解决方案中,或者日常使用Windows Server过程,其实基本功非常重要,比如对于进程级的检查,当系统因为某些进程夯住导致系统异常无法动弹时,重启后系统进程现场丢失,那么要如何定位究竟是什么进程导致了系统异常呢...在Linux里,Atop无疑是最好的选择: 亦或是用dmp(panic产生的文件)来判断当时Linux运行状态: 那么在Windows Server里如何来实现进程级别的追溯?...SCOM系列文章来学习,关于监控进程的在此:http://vmcloud.info/?...,当CVM异常时可以及时回溯宕机前的进程占用情况。...本篇主要讲述如何通过多种方式获取系统异常时进程的状态,具体如何应用,还得靠各位看官的具体实践了,这里就不具体展开讲了。
今天来给大家分享下这两天遇到的一个问题,服务器被挖矿了,把我的排查记录分享下,希望能帮到有需要的同学。...cpu使用率基本跑满(用户态),没有发现可疑的进程,初步怀疑可能是进程在哪里隐藏了 执行命令ps -aux --sort=-pcpu|head -10 嗯哼,藏得够深的,可还是被揪出来啦 ? ?...这个eta可能是起的一个守护进程,用于唤起上面圈起来的python进程, 这个脚本的用途是,链接远程服务"http://g.upxmr.com:999/version.txt",并下载 写入到本地隐藏文件....d目录下都存在S01nfstruncate文件,可能是自启动文件 现在排查的很明朗了,接下来着手清理工作 1....这次分享希望对也中挖矿程序的同学, 提供一些排查思路
但是在一段时间后还会复现,我们通过监控系统也排查了这段时间的流量情况,但应该和CPU持续占用没有关联,这时我们意识到这可能是程序的问题。...排查工具 Arthas 我们这边使用了阿里的Arthas ,它是Alibaba开源的Java诊断工具。当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个 jar 包加载的?...-- /bin/bash 在容器中下载Arthas wget https://arthas.gitee.io/arthas-boot.jar 由于我们打包镜像中只有一个服务,所以一个Pod中也只有一个进程...执行进程看板 dashboard: [arthas@1]$ dashboard 这里上半区显示了线程内容,我们可以看到哪个线程ID的对应情况: ?...:624) at java.lang.Thread.run(Thread.java:813) 三、解决问题 经过了排查定位到了问题,最后经过社区伙伴的协助,发现了这个是Nacos 2.0.0.RELEASE
排查利器 btrace 首当其冲的要说的是btrace。真是生产环境&预发的排查问题大杀器。简介什么的就不说了。...对排查方法性能时很有帮助,比如我之前这篇就是使用了trace命令来的:http://www.atatech.org/articles/52947。...其他 gpref http://www.atatech.org/articles/33317 dmesg 如果发现自己的java进程悄无声息的消失了,几乎没有留下任何线索,那么dmesg一发,很有可能有你想要的..., anon-rss:7152432kB, file-rss:1232kB 以上表明,对应的java进程被系统的OOM Killer给干掉了,得分为854....当机器内存耗尽前,该机制会扫描所有的进程(按照一定规则计算,内存占用,时间等),挑选出得分最高的进程,然后杀死,从而保护机器。
领取专属 10元无门槛券
手把手带您无忧上云