深度Java
这个作者很懒,什么都没留下…
展开
-
通过Native Memory Tracking查JVM的线程内存使用(线上JVM排障之九)
很多时候会面对线上内存使用很多,特别是本地内存怎么用的说不太清,就是每一块内存总和和总的Java线程占用内存不匹配。很多时候如果dump出来内存也没有太大的作用,因为本地内存是看不到。本地内存有很多是线程占用的空间。需要说明的是-Xss 参数为设置单个线程栈的大小, 一般默认为512K~1024K。原创 2022-11-23 21:26:16 · 1572 阅读 · 7 评论 -
利用阿里云ARMS排查Java大量文件处理场景堆外内存溢出(线上JVM排障之八)
线上一个项目线上3节点POD,内存一点点爬升最后100%打满,然后就会触发K8s的驱逐机制,重启。然后内存又是一点点的爬升周而复始,系统完全不可用。原创 2022-09-03 01:28:05 · 2416 阅读 · 1 评论 -
MaxTenuringThreshold调优明显减少系统FGC次数(线上JVM排查之七)
因为MaxTenuringThreshold设置不合理,导致年轻代的对象很快进入年老代,导致年老代FGC频率增加,进而影响系统性能。原创 2022-09-02 12:53:02 · 1570 阅读 · 0 评论 -
阿里云ARMS排查ACK容器环境Java事务阻塞触发系统连锁雪崩故障(线上JVM排查之六)
这是一个非常复杂的故障排查过程,也是非常有价值的经验分享。这是一个K8s环境,非常复杂的故障涌现过程,排障过程也很慌乱,整个过程现在整理起来看起来很轻松,不过当时却是另一番心情。......原创 2022-09-01 01:10:08 · 1034 阅读 · 1 评论 -
异常:org.apache.catalina.connector.ClientAbortException : java.io.IOException: 断开的管道发现与排查(JVM线上问题排查之五)
分享线上异常的查询,和异常的排查,做到滴水不漏,不能忽略任何一个错误。原创 2022-08-28 17:06:44 · 5253 阅读 · 0 评论 -
Java多层循环导致系统整体卡顿两例(线上JVM排查之四)
线上接口卡顿严重,下游接口都很快,系统资源负载看起来也不严重,但是肯定有问题,本文就是讲述这个问题的排查过程。原创 2022-08-26 23:43:27 · 1103 阅读 · 0 评论 -
Java内存异常触发FGC无效导致CPU持续100%原因(线上JVM排查之三)
提高Java性能需要避免FGC,本文就是以一则线上真实的案例来分析FGC导致CPU100%,以及这个中间年轻代,年老代的变化。原创 2022-08-24 21:19:36 · 1147 阅读 · 0 评论 -
阿里云K8s容器Pod中Java进程CPU占比100%排查(线上JVM排查之一)
本文讲述一个线上真实的案例,阿里云K8s容器Pod中Java进程CPU占比100%排查,也分享了不同的排查工具如何来排查这一问题。原创 2022-08-17 22:24:36 · 4308 阅读 · 1 评论 -
Java内存使用异常导致CPU100%原因(线上JVM排查之二)
写这篇博客的初衷是发现线上JVM问题以及排查,觉得有必要记录并分享出来,有感于很多市面上的教程讲述JVM的教程,甚至还有很多深入到Java字节码和JVM底层源码领域等深入知识,我不否认这些理论和源码也很重要,但是很多学生学习的云里雾里,等学完这些遇到线上问题还是不会排查,实际解决工作中的问题才可以真正做到技术的融会贯通,才可以深入去学习和理解Java字节码和JVM底层源码。原创 2022-08-23 10:29:33 · 1679 阅读 · 0 评论 -
大厂线上案例复盘--代码漏洞
这是一则发生在某大厂的真实案例,出于脱敏名字这且不说。这个系统因为第一次上线,流量非常的大。所以需要灰度上线,所谓灰度方案很短,比如按照地理位置,先选择某个访问量小的地区比如西部青海。然后逐步放量,几天以后增加几个省再看看,然后如果没问题扩大到全国。灰度是没有问题的,也是必要的。APP--->B系统--->新系统这个系统提供了一个接口给B调用由于B系统是全国开放,所以B的流量很大,B上面没有做地区限制,他的流量会都打到新系统上。所以一开始不是青海的用户..原创 2021-02-15 09:59:26 · 1032 阅读 · 2 评论 -
Redis客户端JetCache的单机版和集群版的配置
jetcache基础应用参考这个:阿里巴巴开源的缓存框架JetCache创建缓存1.JetCache的jedis配置https://github.com/alibaba/jetcache/wiki/Config_CNjedis配置:apollo版jetcache.remote.default.type = redisjetcache.remote.default.keyConvertor = fastjsonjetcache.remote.default.valueEncoder.原创 2020-09-17 10:44:46 · 3590 阅读 · 0 评论 -
阿里巴巴开源的缓存框架JetCache创建缓存
JetCache的优势自动刷新和加载保护是JetCache的大杀器,对于加载开销比较大的对象,为了防止缓存未命中时的高并发访问打爆数据库:public interface SummaryService{ @Cached(expire = 3600, cacheType = CacheType.REMOTE) @CacheRefresh(refresh = 1800, stopRefreshAfterLastAccess = 3600, timeUnit = TimeUnit.SEC原创 2020-06-18 20:12:24 · 1792 阅读 · 1 评论 -
深入浅出SpringBoot源码分析
Bean的初始化类DefaultListableBeanFactorythis.beanDefinitionNames.add(beanName);初始化这里写入所有的bean对每一个进行初始化@Override public void preInstantiateSingletons() throws BeansException { if (log...原创 2020-04-28 23:10:46 · 1209 阅读 · 0 评论 -
Netty和JDK源码来看Netty的NIO和JDK的NIO有什么不同
JDK底层提供了NIO实现,在Linux环境会调用内核epoll。但是Netty通过JNI的方式提供了Native Socket Transport,为什么Netty要自己搞一套NIO呢?这篇文章带你从jdk的源码和Netty的源码角度来分析为什么Netty要这么做。1.先看EpollEventLoop实现Native.epollCtlAdd(epollFd.intV...原创 2020-04-14 15:11:57 · 2420 阅读 · 0 评论 -
从源码和内核角度分析redis和nginx以及java NIO可以支持多大的并发
有人询问我网上一篇关于“redis为什么单线程这么快”的文章,我建议他不要看了,因为redis是单进程不是单线程,后面的意见不用看了,文章质量肯定不会很好,他也说了自己看了很久源码似乎还是有些云里雾里,所以我就给他分析了为什么redis这么快,这篇主要讲epoll的实现。从redis和nginx源码和llinux内核角度分析redis和nginx可以支持多大的并发.redis和nginx都...原创 2020-04-14 11:43:27 · 1938 阅读 · 0 评论 -
JVM XMX设置多大比较好,Docke容器里该怎么设置JVM呢
XMX是JVM的最大堆内存大小。XMS是JVM的初始堆内存大小。如果你想快速得到一个答案:XMX和XMS设置为一样大,设置为系统最大内存的70%左右即可。先看参考java官方文档:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.htmlhttps://docs.oracle.c...原创 2020-04-03 15:07:28 · 3475 阅读 · 0 评论