线上Java调优-Arthas入门】的更多相关文章

今天第二篇采坑了... ... 现场因为处理太急促没有保留,而且是一旁协助,没有收集到所有信息实在是有些遗憾...只能靠记忆回想一些细节 情况是一台服务器一启动就开始full gc,短短1分钟可以有几十次的full gc. 主要几个配置参数为-Xmx2g -XX:NewRatio=3(CMS相关和其他的和这次无关不列了) 很简单的参数. 下意识dump了heap,结果并没什么特别明显的问题. 在想是不是内存不够,加到3g还是一样的问题. 那似乎只能看是不是业务代码有内存泄漏了. 用jmap -h…
过去也有对JAVA性能调优的分析,有过以下case: 1. JVM outOfMemory, 主要是使用jmap dump 出来 hprof,使用MAT进行分析 2. JVM outOfMemory, 使用jmap dump 出来hprof, 使用jhat 找出异常内存对象 3. JVM调优,程序运行1个月后崩溃 4. JVM调优,根据JFR 采样,分析性能消耗在哪里,如何优化高频的性能消耗. 等等其他(如 多线程竞争锁导致的性能下降等). 这次的case 比较有意思,所以记录下来. 先描述本次…
       近期公司运营同学经常表示线上我们一个后台管理系统运行特别慢,而且经常出现504超时的情况.对于这种情况我们本能的认为可能是代码有性能问题,可能有死循环或者是数据库调用次数过多导致接口运行过慢.应领导要求,我们将主站中进行性能测试的框架代码(见我前面一篇博文记录一次通过性能日志处理线上性能问题的过程)添加到了该后台管理系统中.上线运行一段时间后,查看相关日志可以看到如下分析日志:        通过该日志可以发现,dao方法一直获取不到数据库链接池,但是根据实际情况考虑应该不大可能,…
文章说明 这篇文章主要是记录自己最近在真实工作中遇到的慢查询的案例,然后进行调优分析的过程,欢迎大家一起讨论调优经验.(以下出现的表名,列名都是化名,实际数据也进行过一点微调.) PS:最近做了一个面试题精选精答的开源项目,如果想要了解更多MySQL相关的技术总结,可以看一看,如果对大家有帮助,希望大家帮忙给一个star,谢谢大家了! <面试指北>项目地址:https://github.com/NotFound9/interviewGuide 一.复杂的深分页问题优化 背景 有一个articl…
现状: k8s 的一个pod 有32G内存,每秒产生新对象的峰值在900Mb ---- 1900Mb(根据jstat计算Eden区获得) . 修改之前的参数 就一个命令行参数是-Xmx31g; 我修改为: -Xms:30g -Xmx:30g -Xmn:15g -XX:SurvivorRatio=6 以上目的是为了减少年轻代GC频率(由6秒1次 增加到10+秒一次),让Queue队列中的大对象在to区停留的更长.同时,由于队列的大对象紧到不死,通常存活的对象空间就>to区(s0.s1)空间,被移到…
Java调优经验谈 对于调优这个事情来说,一般就是三个过程: 性能监控:问题没有发生,你并不知道你需要调优什么?此时需要一些系统.应用的监控工具来发现问题. 性能分析:问题已经发生,但是你并不知道问题到底出在哪里.此时就需要使用工具.经验对系统.应用进行瓶颈分析,以求定位到问题原因. 性能调优:经过上一步的分析定位到了问题所在,需要对问题进行解决,使用代码.配置等手段进行优化. Java调优也不外乎这三步. 此外,本文所讲的性能分析.调优等是抛开以下因素的: 系统底层环境:硬件.操作系统等 数据…
线上问题排查神器 Arthas 之前介绍过 BTrace,线上问题排查神器 BTrace 的使用,也说它是线上问题排查神器.都是神器,但今天这个也很厉害,是不是更厉害不好说,但是使用起来非常简单.如果你用 BTrace 的话,需要事先写好探测脚本,然后上传到需要排查问题的服务器,然后执行命令.比方说获取某个方法的参数.返回值.异常等.而 Athas 方便在不用写脚本,直接用命令行方式就可以,使用它就好像在用安装在服务器上的各种工具一样,比如 top.jps.jmap 等. 他们背后的逻辑都是字节…
前言 当你兴冲冲地开始运行自己的Java项目时,你是否遇到过如下问题: 程序在稳定运行了,可是实现的功能点了没反应. 为了修复Bug而上线的新版本,上线后发现Bug依然在,却想不通哪里有问题? 想到可能出现问题的地方,却发现那里没打日志,没法在运行中看到问题,只能加了日志输出重新打包--部署--上线 程序功能正常了,可是为啥响应时间这么慢,在哪里出现了问题? 程序不但稳定运行,而且功能完美,但跑了几天或者几周过后,发现响应速度变慢了,是不是内存泄漏了? 以前,你碰到这些问题,解决的办法大多是,修…
概述 背景 是不是在实际开发工作当中经常碰到自己写的代码在开发.测试环境行云流水稳得一笔,可一到线上就经常不是缺这个就是少那个反正就是一顿报错抽风似的,线上调试代码又很麻烦,让人头疼得抓狂:而且debug不一定是最高效的方法,遇到线上问题不能debug了怎么办.原先我们Java中我们常用分析问题一般是使用JDK自带或第三方的分析工具如jstat.jmap.jstack. jconsole.visualvm.Java Mission Control.MAT等.但此刻的你没有看错,还有一款神器Art…
本文来源于铁木箱子的博客http://www.mzone.cc 这几天因为自己开发的一个网站在768M内存的机器上撑不起100多个用户的运行,因为每个用户启用功能后,系统将为每个用户分配8个左右的独立线程,我的这篇文章http://www.mzone.cc/article/311.html也有介绍的.在内存小的机器上经常出现的问题就是Cann’t allocate memory和OutOfMemoryError错误,这个要从jvm的内存结构来进行分析了.在jvm内存调整过程中,我们经常使用的参数…