因公司有业务服务器在阿里云上面,阿里云后台报警说,“有恶意程序在挖矿”,引起了高度重视,于是我登陆服务器进行排查. 登陆云服务器:系统centos7.5 第一步使用top查看资源情况. top 可以清楚的看到第一行:USER:test  cpu飙至384%,进程名字:.dhpcd 首先我跟开发的进行核实,是否有创建test用户,结果反馈没有,我问是否安装有.dhpcd服务,开发也说没有,作为一个运维人员我肯定知道装了哪些服务. 这个服务明显不是我公司安装的,test用户也是不自己创建的. ps…
OOM这个缩写就是Java程序开发过程中让人最头痛的问题:Out of Memory.在很多开发人员的开发过程中,或多或少的都会遇到这类问题,这类问题定位比较困难,往往需要根据经验来判断可能出现问题的代码.原因主要是两个:对象没有被释放(多种情况引起,往往是比较隐蔽的引用导致被Hold而无法被回收).另一种就是真的Memory不够用了,需要增加JVM的Heap来满足应用程序的需求.最近有同事发的关于解决OOM的问题,让我了解了原来OOM除了在JVM Heap不够时会发生,在Native Heap…
上周公司有一个应用,一到晚上高峰期的时候RT(响应时间)就很长.后来上服务器看了下JVM的配置,发现运维在启动参数那里把-Xss给设成了10M.导致每个线程占用的内存过大,导致内存消耗过快,其它线程排队等待的情况.后来把-Xss改成1M之后,系统性能有明显的提高. 总结: 1.-Xss参数不可以设的过大,特别在一些高并发场景的系统下.(低并发的话,没关系) 2.JVM的参数不要任由运维去配.运维使用的参数可能不符合当前系统的业务场景.还需要开发人员去优化…
怎么排查CPU飙升 线上有些系统,本来跑的好好的,突然有一天就会出现报警,CPU使用率飙升,然后重启之后就好了.例如,多线程操作一个线程不安全的list往往就会出现这种现象.那么怎么定位到具体的代码范围呢?今天笔者就教大家一个小技巧 代码准备 这次,笔者准备了一个demo代码,大致线程模型是这样的: 代码下所示: public class CpuHighExample {    public static void cpuHigh() {        final List<String> l…
最近了解了下有关正则表达式回溯的内容,想想就写下来,方便自己. 正则表达式匹配算法是建立在正则表达式引擎的基础上的,目前有两种引擎:DFA(确定型有穷自动机)和NFA(不确定型有穷自动机).这两种引擎的区别主要在于被匹配对象不同. DFA是用文本去匹配表达式.而NFA是用表达式去匹配文本.这个了解一下就信了.目前我们用的是NFA自动机. 为什么有时候正则表达式的使用会导致CPU飙升呢?这个与正则表达式的回溯有关.什么就正则表达式的回溯以及为什么会发生回溯呢?请看下面的例子. regex="b{1…
文章首发于公众号「陈树义」及个人博客 shuyi.tech,欢迎关注访问. 对于 Java 开发的同学来说,JVM 性能优化可以说是比较难掌握的知识点.这不仅因为 JVM 性能优化需要掌握晦涩难懂的 JVM 知识,还因为 JVM 性能优化很难有使用场景.这导致了许多人对 JVM 性能优化不熟悉,感觉就像是空中楼阁的天物一样不可触及.这几天工作中做了一次 JVM 性能优化,我想这对于 JVM 调优的初学者会有较大帮助. 背景 我们都知道 JVM 分为了新生代和老年代,并且我们在启动应用的时候都会配…
线上跑的几台server突然出现大量fgc,因为在fgc过程的stop the world太久.引起其他应用訪问该server上的接口大量超时.(发生超时的时间点和fgc时间点一致) 先进行初步的优化. 方案:改动CMSInitiatingOccupancyFraction=85这个调低到60,加快cms gc处理防止concurrent mode failure触发FGC,            降低CMSMaxAbortablePrecleanTime到500以缩短PreClean时间.  …
今天测试团队反馈说,服务A的响应很慢,我在想,测试环境也会慢?于是我自己用postman请求了一下接口,真的很慢,竟然要2s左右,正常就50ms左右的. 于是去测试服务器看了一下,发现服务器负载很高,并且该服务A占了很高的cpu.先用top命令,看了load average,发现都到了1.5左右(双核cpu)了,并且有一个java进程(20798)占用cpu一直很高,如下图: 于是,用命令jps -l看了一下java的20798,刚好就是服务A. 究竟服务A在跑什么,毕竟是测试环境.于是使用to…
性能分析小案例系列,可以通过下面链接查看哦 ps:这些分析小案例不能保证百分比正确,是博主学习过程中的总结,仅做参考 前提 本机有一个很占用 CPU 的项目,放在了 Tomcat 下启动着 如何定位 Jmeter 聚合报告 可以看到平均响应时间不断的上升,但是吞吐量(TPS)很低 平均响应时间一般超过 1s,就要排除网络有没有瓶颈 排查网络是否有瓶颈 在 cmd ping 自己的服务器 ip 地址,看是否有很大的延时或丢包 可以看到,没有丢包,而且延时也很低,证明网络没有问题 在服务器中,通过…
一.引子 对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时),按照本文的步骤排查,基本1分钟即可搞定!特此整理排查方法一篇,供大家参考讨论提高. 二.问题复现 线上系统突然运行缓慢,CPU飙升,甚至到100%,以及Full GC次数过多,接着就是各种报警:例如接口超时报警等.此时急需快速线上排查问题. 三.问题排查 不管什么问题,既然是CPU飙升,肯定是查一下耗CPU的线程,然后看看GC. 3.1 核心排查步骤 1.执行“top”命令:查看所有进程占系统CPU的排序.…