![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
知识积累
文章平均质量分 88
各种调优与问题定位方法
weixin_42073629
这个作者很懒,什么都没留下…
展开
-
Spring Event 业务解耦神器
Spring Event转载 2022-10-13 00:36:46 · 291 阅读 · 0 评论 -
5种限流算法,7种限流方式,挡住突发流量
前言最近几年,随着微服务的流行,服务和服务之间的依赖越来越强,调用关系越来越复杂,服务和服务之间的稳定性越来越重要。在遇到突发的请求量激增,恶意的用户访问,亦或请求频率过高给下游服务带来较大压力时,我们常常需要通过缓存、限流、熔断降级、负载均衡等多种方式保证服务的稳定性。其中限流是不可或缺的一环,这篇文章介绍限流相关知识。1. 限流限流顾名思义,就是对请求或并发数进行限制;通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限,就需要对调用我们服务的上游请转载 2022-05-16 19:57:42 · 839 阅读 · 0 评论 -
最全工作流引擎 Activiti
一、工作流介绍1.1 概念工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。1.2 工作流系统一个软件系统中具有工作流的功能,我们把它称为工作流系统,一个系统中工作流的功能是什么?就是对系统的业务流程进行自动化管理,所以工作流是建立在业务流程的基础上,所以一个软件的系统核心根本上还是系统的业务流程,工作流只是协助进行业务流程管理。即使转载 2022-05-15 17:14:47 · 1072 阅读 · 0 评论 -
Minor GC、Major GC、Full GC以及Mixed GC之间的区别
堆内存划分为 Eden、Survivor 和 Tenured/Old 空间Minor GC从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC。这一定义既清晰又易于理解。但是,当发生Minor GC事件的时候,有一些有趣的地方需要注意到:当 JVM 无法为一个新的对象分配空间时会触发 Minor GC,比如当 Eden 区满了。所以分配率越高,越频繁执行 Minor GC。 内存池被填满的时候,其中的内容全部会被复制,指针会从0开始跟踪空闲内存。Ede原创 2021-06-07 00:42:13 · 403 阅读 · 0 评论 -
垃圾收集器之:G1收集器
G1垃圾收集器是一种工作在堆内不同分区上的并发收集器。分区既可以归属于老年代,也可以归属新生代,同一个代的分区不需要保持连续。为老年代设计分区的初衷是我们发现并发后台线程在回收老年代中没有引用的对象时,有的分区垃圾对象的数量很多,另一些分区垃圾对象相对较少。虽然分区的垃圾收集工作实际还是要暂停应用线程,不过由于G1收集器专注于垃圾最多的分区,最终的效果是花费较少的时间就能回收这些分区的垃圾。这种只专注于垃圾最多的分区的方式就是G1垃圾收集器的名称由来,即首先收集垃圾最多的分区。这一算法并不适用新生代原创 2021-06-07 00:41:56 · 180 阅读 · 0 评论 -
垃圾收集器之:CMS收集器
HotSpot JVM的并发标记清理收集器(CMS收集器)的主要目标就是:低应用停顿时间。该目标对于大多数交互式应用很重要,比如web应用。在我们看一下有关JVM的参数之前,让我们简要回顾CMS收集器的操作和使用它时可能出现的主要挑战。CMS收集器有3种基本的操作,分别是:CMS收集器会对新生代的对象进行回收(所有的应用线程都会被暂停); CMS收集器会启动一个并发的线程对老年代空间的垃圾进行回收; 默认情况下CMS不会对永久代进行垃圾回收,如果有必要,CMS会发起Full GC。就像吞吐量收原创 2021-06-07 00:29:38 · 411 阅读 · 0 评论 -
垃圾收集器之:throughput吞吐量收集器
在实践中我们发现对于大多数的应用领域,评估一个垃圾收集(GC)算法如何根据如下两个标准:吞吐量越高算法越好 暂停时间越短算法越好首先让我们来明确垃圾收集(GC)中的两个术语:吞吐量(throughput)和暂停时间(pause times)。 JVM在专门的线程(GC threads)中执行GC。 只要GC线程是活动的,它们将与应用程序线程(application threads)争用当前可用CPU的时钟周期。 简单点来说,吞吐量是指应用程序线程用时占程序总用时的比例。 例如,吞吐量99/100意味原创 2021-06-07 00:29:21 · 321 阅读 · 0 评论 -
JDK命令八、NMT 和 pmap本地内存分析神器
一、概述NMT是Native Memory Tracking的缩写,是Java7U40引入的HotSpot新特性。 pmap,众所周知,就是Linux上用来看进程地址空间的。二、NMTJava7U40之后JDK提供了Native Memory Tracking工具,跟踪JVM内部的内存使用,并可以通过jcmd命令来访问。不过要注意的是NMT是通过在JVM代码中添加跟踪点的方式实现内存跟踪的,因此NMT不能跟踪第三方Native库的内存使用。2.1、如何开启NMTNMT功能默认关闭,可以通原创 2021-06-05 15:35:51 · 1244 阅读 · 0 评论 -
Heap堆分析(堆转储、堆分析)
一、堆直方图 减少内存使用时一个重要目标,在堆分析上最简单的方法是利用堆直方图。通过堆直方图我们可以快速看到应用内的对象数目,同时不需要进行完整的堆转储(因为堆转储需要一段时间来分析,而且会消耗大量磁盘空间)。直方图擅长识别由分配了一两个特定类的过多实例所引发的问题。例如应用中的内存压力是由一些特定的对象类型引起的,利用堆直方图可以很快就能看出端倪。1.1、通过jcmd获得堆直方图可以通过jcmd命令获得:[ciadmin@2-103test_app ~]$ jcmd 26964 G原创 2021-06-05 14:22:11 · 863 阅读 · 0 评论 -
JDK命令七、jcmd介绍(堆转储、堆分析、获取系统信息、查看堆外内存)
一、jcmd命令使用先罗列下jcmd的常见用法:堆直方图查看:查看系统中类统计信息GC.class_histogram,示例见《Heap堆分析(堆转储、堆分析)》 堆转储:导出堆信息GC.heap_dump,示例见《Heap堆分析(堆转储、堆分析)》 获取系统Properties内容VM.system_properties 获取启动参数VM.flags 获取所有性能相关数据PerfCounter.print 查看原生内存信息:jcmd process_id VM.native_memory原创 2021-06-05 14:42:34 · 1050 阅读 · 1 评论 -
JDK命令六、jhat命令(Java Heap Analyse Tool 虚拟机堆转储快照分析工具)
Java Virtual Machine Heap Analysis Tool虚拟机堆转储快照分析工具,用于分析heapdump文件,它会建立一个HTTP/HTML服务器,让用户可以在浏览器上查看分析结果,可以查找诸如内存方面的问题。不过jhat和MAT比较起来,就没有MAT那么直观了,MAT是以图形界面的方式展现结果一、hat命令 -- Java Head Analyse Tool介绍用途:是用来分析Java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持.原创 2021-06-05 11:40:36 · 332 阅读 · 0 评论 -
JDK命令五、Java VisualVM
VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。在内存分析上,Java VisualVM的最大好处是可通过安装Visual GC插件来分析GC(Gabage Collection)趋势、内存消耗详细状况。一 Visual GC(监控垃圾回收器)Java Visu..原创 2021-06-02 20:17:11 · 727 阅读 · 0 评论 -
MAT(Memory Analyzer Tool)工具之eclipse安装
工欲善其事必先利其器,先开始更新下eclipse,顺便装下工具软件。那么简要的写写怎么从头安装Memory AnalyzerMemory Analyzer (Eclipse MAT)是一个跨平台的开源工具,不仅可以用它来分析内存问题,也可以用来监控整个 Java 应用程序的状态和行为。通过读取应用程序运行时由 Java 运行时环境生成的转储文件快照, 能够分析那些调试代码可能无法发现的复杂问题。安装 MAT和其他插件的安装非常类似,MAT 支持两种安装方式,一种是“单机版“的,也就是说用户不必安原创 2021-06-02 12:09:00 · 1107 阅读 · 0 评论 -
JDK命令四、jmap(java memory map)
1、介绍打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。可以输出所有内存中对象的工具,甚至可以将VM中的heap,以二进制输出成文本。使用方法jmap-histopid。如果连用SHELLjmap-histopid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap-dump:format=b,file=outfile3024可以将3024进程的内存heap输出出来到outf...原创 2021-06-02 11:32:44 · 221 阅读 · 0 评论 -
JDK命令三、jstat命令(Java Virtual Machine Statistics Monitoring Tool)
1、介绍Jstat用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控:- 类的加载及卸载情况- 查看新生代、老生代及持久代的容量及使用情况- 查看新生代、老生代及持久代的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间- 查看新生代中Eden区及Survior区中容量及分配情况等jstat工具特别强大,它有众多的可选项,通过提供多种不同的监控维度,使我们可以从不同的维度来了解到当前JVM堆的使用情况。详细查原创 2021-06-02 10:07:28 · 322 阅读 · 0 评论 -
JDK命令二、jstack(Java Stack Trace)
jstack是java虚拟机自带的一种堆栈跟踪工具。基本介绍jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。命令格式jstack [ option ] pid基本参数:-F 当’j原创 2021-05-31 00:18:36 · 361 阅读 · 0 评论 -
JDK命令一、javah命令(C Header and Stub File Generator)
javah是用于根据JAVA本地方法,生成对应的c语言头文件及相应的stub文件的命令,使用比较简单,使用示例可以查看如下:先介绍下JNI(Java Native Interface)是Java本地方法调用接口,从Java1.1开始,Java Native Interface(JNI)标准就成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。Java中很多地方都使原创 2021-05-31 00:18:21 · 1859 阅读 · 1 评论 -
JVM 内部运行线程介绍
最近抽时间把JVM运行过程中产生的一些线程进行了整理,主要是围绕着我们系统jstack生成的文件为参照依据。 前段时间因为系统代码问题,造成性能瓶颈,于是就dump了一份stack出来进行分析。 stack 里面线程非常多,排查起来需要一定的经验,所以,对它们有一定了解,可以提高排查问题的效率。 现在网上资料也不是特别全,所以,导致很多新人在拿到一个stack文件之后,也不知知道从何看起。 下面我把这次整理的一些个人认为比较常见的线程列出来。线程 所属 说明 Atta...原创 2021-05-15 12:50:04 · 389 阅读 · 0 评论 -
Java中9种常见的CMS GC问题分析与解决
1.1 引言自 Sun 发布 Java 语言以来,开始使用 GC 技术来进行内存自动管理,避免了手动管理带来的悬挂指针(Dangling Pointer)问题,很大程度上提升了开发效率,从此 GC 技术也一举成名。GC 有着非常悠久的历史,1960 年有着“Lisp 之父”和“人工智能之父”之称的 John McCarthy 就在论文中发布了 GC 算法,60 年以来, GC 技术的发展也突飞猛进,但不管是多么前沿的收集器也都是基于三种基本算法的组合或应用,也就是说 GC 要解决的根本问题这么多年...原创 2021-03-04 19:25:37 · 684 阅读 · 1 评论 -
Spring Boot内存泄露排查记
在项目迁移到Spring Boot之后,发生内存使用量过高的问题。本文介绍了整个排查过程以及使用到的工具,也非常适用于其他堆外内存排查。背景为了更好地实现对项目的管理,我们将组内一个项目迁移到MDP框架(基于Spring Boot),随后我们就发现系统会频繁报出Swap区域使用量过高的异常。笔者被叫去帮忙查看原因,发现配置了4G堆内内存,但是实际使用的物理内存竟然高达7G,确实不正常。JVM参数配置是:-XX:MetaspaceSize=256M-XX:MaxMetaspac...原创 2021-03-04 19:14:36 · 279 阅读 · 1 评论 -
java对象在内存中的结构(HotSpot虚拟机)
一、对象的内存布局 HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。从上面的这张图里面可以看出,对象在内存中的结构主要包含以下几个部分:Mark Word(标记字段):对象的Mark Word部分占4个字节,其内容是一系列的标记位,比如轻量级锁的标记位,偏向锁标记位等等。...原创 2020-02-25 02:51:54 · 175 阅读 · 0 评论 -
JVM 调优(学习篇)
概述公司的江南白衣写了一篇关键业务系统的JVM参数推荐(2016热冬版)的文章,大牛的文章总是需要细细品读。这篇文章介绍大量的JVM调优参数,内容也比较多,本文只是列出我自己能理解的一些参数,暂时理解不了的参数就只能等以后自己实力到家了,再慢慢补充上来。性能调优参数-XX:AutoBoxCacheMaxJAVA进程启动的时候,会加载rt.jar这个核心包,rt.jar包里的Integer自然也会被加载到JVM中,Integer里面有一个IntegerCache缓存,如下:priv.转载 2020-12-13 04:58:48 · 249 阅读 · 0 评论 -
JVM元空间替换持久代
概述metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所致,看到大家讨论来讨论去,看得出很多人对metaspace还是模棱两可,不是很了解它,因此我觉得有必要写篇文章来介绍一下它,解开它神秘的面纱,当我们再次碰到它的相关问题的时候不会再感到束手无策。为什么会有metaspacemetaspace的由来民间已有很多传说,不过我这里只谈我自己的理解,因为我不是orac原创 2020-12-06 06:29:26 · 316 阅读 · 0 评论 -
JVM新生代详解
一、为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,我们把新创建的对象放到某一地方,当GC的时候先把这块存“朝生夕死”对象的区域进行回收,这样就会腾出很大的空间出来。二.年轻代中的GC 新生代大小(PSYoungGen total 9216K)=e原创 2020-12-06 06:15:42 · 3160 阅读 · 1 评论 -
JVM垃圾回收详解
堆的内存划分:Java堆的内存划分如图所示,分别为年轻代、Old Memory(老年代)、Perm(永久代)。其中在Jdk1.8中,永久代被移除,使用MetaSpace代替。1、新生代:(1)使用复制清除算法(Copinng算法),原因是年轻代每次GC都要回收大部分对象。新生代里面分成一份较大的Eden空间和两份较小的Survivor空间。每次只使用Eden和其中一块Survivor空间,然后垃圾回收的时候,把存活对象放到未使用的Survivor(划分出from、to)空间中,清空Eden.原创 2020-12-06 06:12:07 · 201 阅读 · 0 评论 -
GC 日志打印实践
1.1 -XX:+PrintGC与-verbose:gc如果只设置-XX:+PrintGC那么打印的日志如下所示:[GC (Allocation Failure) 61805K->9849K(256000K), 0.0041139 secs]1、GC类型,GC:minor GC(young gc),Full GC:major GC2、Allocation Failure 表示是失败的类型3、68896K->5080K 表示年轻代从68896K降为5080K4、2560原创 2021-06-03 01:22:49 · 998 阅读 · 0 评论 -
线上JVM Young GC调优
本次是对线上商品服务的JVM优化。商品服务的访问量非常高,单机QPS在3000左右,线上总共部署了15个商品服务节点。JVM堆内存大小是8G,其中给新生代分配了2G,老年代垃圾回收器采用CMS,新生代垃圾回收器是ParNew。优化前的状况首先我们使用 jstat 查看了 GC 的情况。又通过查看GC log,分析了GC 的详细状况。使用 jstat -gcutil ${pid} 1000 每隔一秒打印一次 GC 统计信息。jstat -gcutil 6689 1000可以看到.原创 2021-06-02 20:34:46 · 326 阅读 · 1 评论 -
Linux防火墙firewalld/iptables使用教程
一、Firewalld(iptables)命令介绍1、Firewalld(iptables)语法规则# iptables [-t 表名] 选项 [链名] 条件匹配 -j 执行动作 #表名不写的话默认为filter表iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT #为filter表的INPUT链增加规则,当目标端口为80并且为tcp协议则放行2、Firewalld(iptables)常用选项-A |-D |-I [CHA.原创 2021-05-17 02:05:05 · 450 阅读 · 0 评论 -
基于 Nginx+lua+Memcache 实现灰度发布
一、灰度发布原理说明灰度发布在百度百科中解释:灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。这里的用于WEB系统新代码的测试发布,让一部分(IP)用户访问新版本,一部分用户仍然访问正常版本,其原理如图:执行过程: 当用户请求到达..原创 2021-05-17 01:48:43 · 165 阅读 · 0 评论 -
10 个的 JVM 面试题
1. 对象一定分配在堆中吗?有没有了解逃逸分析技术?「对象一定分配在堆中吗?」不一定的,JVM通过「逃逸分析」,那些逃不出方法的对象会在栈上分配。 「什么是逃逸分析?」 逃逸分析(Escape Analysis),是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。通过逃逸分析,Java Hotspot编译器能够分析出一个新的对象的引用的使用范围,从而决定是否要将这个对象分配到堆上。❝逃逸分析是指分析指针动态范围的方法,它同编译器优化原理的指针分析和外形原创 2021-05-03 22:25:51 · 211 阅读 · 0 评论 -
Java工作原理
说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成:Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示: Java代码编译和执行的过程,正如图所描述,开发人员编写Java代码(.java文件),由Java源码编译器编译成字节码(.class文件),字...原创 2019-01-20 02:47:28 · 3254 阅读 · 0 评论 -
常用JVM垃圾收集器GC调优
GC调优概述对JVM垃圾收集器进行调优之前,一定要先了解JVM内存结构、各个垃圾收集器的特点、常用的JVM参数、GC日志理解、GC日志可视化(GCeasy,GCViewer)等,因为这些东西不了解的话,是没法进行调优的。JVM调优是一个不断调整的过程,不能指望着一蹴而就。要不断调整相关参数,观察结果进行对比分析。还有就是,不同的垃圾收集器的JVM参数是不一样的,所以具体的GC调优要根据不同的收集器做调整。推荐看下Java关于收集器调优的官方文档:https://docs.oracle.com/ja原创 2021-04-24 02:43:37 · 394 阅读 · 0 评论 -
GC日志可视化分析工具GCeasy和GCViewer
GCeasy介绍官网地址:https://gceasy.io/,GCeasy是一款在线的GC日志分析器,可以通过GC日志分析进行内存泄露检测、GC暂停原因分析、JVM配置建议优化等功能,而且是可以免费使用的(有一些服务是收费的)。我们打开GCeasy的官网,上传我们的GC日志(我这里用的Parallel收集器),点击Analyze进行分析即可得到报告,得到的报告可以进行下载。由于报告内容比较多,我就捡几个主要的截个图简单说明一下,其他的可以自己看一下,而且可以自己试试不同的垃圾收集器的GC日志.原创 2021-04-24 02:34:45 · 941 阅读 · 0 评论 -
GC日志详细介绍
JVM的GC日志参数GC日志相关的JVM参数,我们这里就用了下面几个参数-XX:+PrintGCDetails在发生垃圾回收时打印内存回收详细的日志,并在进程退出时输出当前内存各区域分配情况。 -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式,如49.459,默认就是这个输出形式,可以不写) -XX:+PrintGCDateStamps 输出GC的时间戳(以以日期的形式,如2019-03-01T12:57:54.486+0800) -Xloggc:<...原创 2021-04-24 02:25:53 · 2476 阅读 · 0 评论 -
Java内存之本地内存分析神器: NMT 和 pmap
背景其他团队的一些同事经常问我一个问题:你的Java进程怎么占了那么多Virtual Size和RSS? 最近,我基本上可以回答清楚这个问题了。用NMT和pmap基本就就能搞清楚Java进程为什么占了那些Virtual Size和RSS。 NMT是Native Memory Tracking的缩写,是Java7U40引入的HotSpot新特性。 pmap,众所周知,就是Linux上用来看进程地址空间的。结论开门见山,我们先说分析结果,在pmap的输出中,如下两条就包含了Java的Heap空间原创 2021-03-30 18:48:35 · 1513 阅读 · 1 评论 -
Java 应用性能调优工具-----JVisualVM
JVisualVM 简介VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。在JDK_HOME/bin(默认是C:\Program Files\Java\jdk1.6.0_13\bin)目录下面,有一个jvisualvm.exe文件,双击打开,从UI上来看,这个软件是基于NetBeans开发的了。原创 2021-03-29 00:23:52 · 229 阅读 · 0 评论 -
CMS GC耗时很高优化过程全记录
1. 背景多个业务线的应用出现LongGC告警最近一段时间,经常收到CAT报出来的Long GC告警(配置为大于3秒的为Longgc)。2. 知识回顾2.1 JVM堆内存划分 新生代(Young Generation) 新生代内被划分为三个区:Eden,from survivor,to survivor。大多数对象在新生代被创建。Minor GC针对的是新生代的垃圾回收。 老年代(Old Generation) 在新生代中经历了几次Minor GC仍然存活的对象,就会原创 2021-03-28 22:48:41 · 1302 阅读 · 0 评论 -
深入剖析JVM堆外内存的监控与回收
引子记得那是一个风和日丽的周末,太阳红彤彤,花儿五颜六色,96 年的普哥微信找到我,描述了一个诡异的线上问题:线上程序使用了 NIO FileChannel 的 堆内内存作为缓冲区,读写文件,逻辑可以说相当简单,但根据监控却发现堆外内存飙升,导致了 OutOfMemeory 的异常。由这个线上问题,引出了这篇文章的主题,主要包括:FileChannel 源码分析,堆外内存监控,堆外内存回收。问题分析&源码分析根据异常日志的定位,发现的确使用的是 HeapByteBuffer 来...原创 2021-03-28 22:34:34 · 624 阅读 · 0 评论 -
线上问题定位------应用瓶颈
查看某个进程的PID如查看java的进程的pid,ps -ef | grep java:[root@localhost~]#ps-ef|grepjavaroot1241461984009:13pts/000:00:06java-jararthas-demo.jarroot12521098378010:07pts/100:00:00grep--color=autojava查看特定进程的数量如查看jav...原创 2021-03-28 12:22:32 · 174 阅读 · 0 评论 -
线上问题定位------网络瓶颈
定位丢包,错包情况watch more /proc/net/dev用于定位丢包,错包情况,以便看网络瓶颈,重点关注drop(包被丢弃)和网络包传送的总量,不要超过网络上限:[root@localhost~]#watch-n2more/proc/net/devEvery2.0s:more/proc/net/dev...原创 2021-03-28 12:19:57 · 752 阅读 · 0 评论