跑的好好的 Java 进程,怎么突然就瘫痪了

  • 时间:
  • 浏览:0

内存泄漏产生的原因 以及防止措施网上有全都资料,这里就不写了。内存泄漏造成系统瘫痪的频率很高,有些系统定时从数据库拉取配置信息缓存到集合中,有些 set 不小心写成了 list ,最终在新增元素的后来内存溢出了。养成良好的编程习惯,多关注些细节,就能防止全都未知的问题报告 。

让让让我们 盯系统监控的后来通常会关注 99 分位的数据,但将会设置了合理的限流,系统依然被流量打挂,就要从那百分之一的长尾数据入手了。有些长尾数据对系统的影响会非常大。想象将会有1个多 put 请求传过来几十兆的数据,对 Java 是极为不友好的,很有将会产生 FGC ,让请求好快,原因 一系列问题报告 。

作者信息:通木, Github 账号 zhdd99 ,阿里巴巴基础设施事业部高级开发工程师,目前主要负责阿里巴巴IDC监控系统。

每台服务器占据 的环境是不一样的

在有1个多高并发的系统中,多数 FGC 是请求防止好快原因 的。假设单机承受 tps 是1w,正常情况汇报下防止有1个多请求的时间是 1ms ,那同一时刻并行的请求数量仅为 10 。将会性能占据 抖动,每个请求防止的时间增加到 400ms ,那同一时刻并行的请求数量就会增加到 400 个。每个多多线程 在防止请求的后来也有 new 有些对象出来,长时间存活的多多线程 会造成你是什么内存泄漏的效果,将系统的内存耗尽。一起去 FGC 也会加剧系统性能的开销,使系统变得好快,产生雪崩。

每台服务器完正也有并行防止请求的上限,不管请求防止的多快,超过上限后来就会被撑死,对高并发的请求做好并发数限制是保持系统稳定的必要条件。都才能注意的是,有有些系统在拒绝很多的请求时,也会做有些降级逻辑,降级逻辑也是有性能开销的,同样都才能做并发限制,将会降级的请求超过并发限制,将不进行降级逻辑直接抛出异常。

有些服务器和离线计算的 vm 混部在一起去,有些部署在实体机,有些部署在新老型号的机器上,每台服务器能承受的 qps 不须完正一样。统一配置分布式系统中每台服务器限流阀值,要么发挥没了每台服务器应有的作用,要么在高 qps 的情况汇报下有些这麼的服务器宕机,全都用服务器作为限流粒度是最为宜的。

总之,磨刀不误砍柴工,让让让我们 歌词 的系统将会 FGC 一次又一次重启的后来,不如花时间了解下系统产生性能问题报告 的原因 ,将产生问题报告 的那根针拔掉,晚上睡个安稳觉,白天更加充满活力的挖新坑。希望每个多多多线程 员手里完正也有有1个多稳定的系统。

当单机承受的 QPS 6~20 倍于限流的流量时,拒绝一次请求的开销就无法忽略不记了。譬如春晚活动有些系统设置了正确的限流也被 6~20 倍于限流的流量冲垮。你三种死法称为被摸死。应对你三种情况汇报,让让让我们 都才能 做的是在受到 6~20 倍的大流量时,动态减少限流的阀值。比如系统最后来现在开始了了接受 4000qps ,40000 的拒绝流量过来会把系统摸死,你三种后来让让让我们 调整系统的阀值,限流设置到 400 ,被摸死的阀值就都才能 高有些,原先就算有 40000 个请求进来,让让让我们 系统也都才能 保证活下来。

阿里有结合算法动态调整单机限流阀的产品,将会对外公布了,感兴趣的同学都才能 搜一下淘系技术公众号中的 诺亚自适应限流 的相关内容。

用 Java 无法做出你是什么 Redis 原先的产品。Java 的内存回收机制使让让让我们 在编写代码时这麼关注对象的回收,一起去加大了内存回收的消耗,标记克隆好友都才能做内存拷贝,标记清除算法则都才能 stop the world 。全都让让让我们 在使用缓存的后来,量稍微大有些就都才能借助你是什么 Redis 原先的上方件帮让让让我们 防止了。作为 Javaer ,让让让我们 享受了自动内存回收的安逸,一起去也都才能多了解下内存优化的措施。

让让让我们 都才能自适应限流有有1个多原因 :

如上文所讲, FGC 有将会占据 在你的每一行代码。将会 FGC 后来依然这麼足够的空间,就会不停的 FGC ,直到申请到足够的空间。一起去 JVM 会限制在抛出 OutOfMemory 错误后来在 GC 中花费的 VM 时间的比例。系统频繁 F 大致有三种情况汇报:

设置了正确的限流阀值,也将会被摸死

为了了解让让让我们 的系统为那先 会不停 FGC ,让让让我们 都才能先了解一下系统那先 情况汇报下会 GC 。在 Jvm 层面,让让让我们 歌词 new 有1个多对象的后来, Jvm 会先在堆区分配对象都才能的内存,你三种后来将会内存缺陷得话,就都才能 GC 了, GC 的返回结果要是我对象的空间地址。Jvm 会先进行 ygc ,也要是我让让让我们 通常说的标记克隆好友,将会 ygc 后来依然申请这麼空间,就会进行 FGC 了。同理,将会 FGC 后来依然这麼足够的空间,就会循环的进行 FGC ,直到申请到足够的空间。