java性能安全:OOM问题排查、Arthas分析高CPU问题、防止Dos攻击

这篇具有很好参考价值的文章主要介绍了java性能安全:OOM问题排查、Arthas分析高CPU问题、防止Dos攻击。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、OOM问题

分析流程:
第一步:进程分析,分析老年代回收次数和消耗时间
第二步:日志分析,找出OOM发生时间的日志来锁定执行方法,对应的机器ip
第三步:找到对应的ip机器查看,进一步分析
第四步:下载的dump,使用mat分析堆内存,找到堆占用率前3,查看堆指向

问题产生:
例如查看新生代最高600M,如果大数据量调用,jvm会把产生的大对象分配在新生代,新生代full gc后放到老年代,老年代gc后触发OOM,就会像类似死循环一样,一直full gc了

解决方案:
1、临时方法:

        ① 先进行扩容

        ② 先将任务先降下来

2、后续解决问题方案:
 ① 计算密集型服务与 IO/ 存储密集型服务分割开来,这样做的一个主要原因是提高资源利用率,方便分配资源的时候做到定向调拨,通过全链路压测环节精准定位各项性能指标
 ② 新生代放设置,设置老年代是新生代的 2 倍大;换句话说,新生代是堆大小的 1/3。
 ③ 大数据量存储进行报警,比如,我们去分配一个超大对象,类似一个超大数组超过堆的最大值,JVM 可以判断出垃圾收集并不能解决这个问题,所以直接抛出 OutOfMemoryError。

二、Arthas分析高CPU问题:
优点:
1、快速定位和修复问题的一站式服务

使用方法:
1、dashboard + thread 命令,基本可以在几秒钟内一键定位问题,找出消耗 CPU 最多的线程和方法栈;
        ① dashboard 命令用于整体展示进程所有线程、内存、GC 等情况,分析占用CPU 较多的线程
        ② 使用thread -n查看最放慢的线程在执行的线程栈,找到执行的方法
2、直接 jad 反编译相关代码,来确认根因
3、如果调用入参不明确的话,可以使用 watch 观察方法入参,并根据方法执行时间来过滤慢请求的入参。
4、由于 monitor、trace、watch 等命令是通过字节码增强技术来实现的,会在指定类的方法中插入一些切面来实现数据统计和观测,因此诊断结束要执行 shutdown 来还原类或方法字节码,然后退出 Arthas。

三、拒绝服务(DoS)攻击

注意点:
1、利用哈希碰撞攻击,可以轻易消耗系统有限的 CPU 和线程资源。
2、类似加密、解密、图形处理等计算密集型任务,都要防范被恶意滥用,以免攻击者通过直接调用或者间接触发方式,消耗系统资源。
3、Java 构建类似上传文件或者其他接受输入的服务,需要对消耗系统内存或存储的上限有所控制,因为我们不能将系统安全依赖于用户的合理使用。
4、Java 程序中需要明确释放的资源有很多种,比如文件描述符、数据库连接,甚至是再入锁,任何情况下都应该保证资源释放成功,否则即使平时能够正常运行,也可能被攻击者利用而耗尽某类资源,这也算是可能的 DoS 攻击来源。文章来源地址https://www.toymoban.com/news/detail-778785.html

到了这里,关于java性能安全:OOM问题排查、Arthas分析高CPU问题、防止Dos攻击的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java线上CPU内存冲高问题排查步骤

    作为一名从事Java开发快一年的程序员,在线上经常碰到 某个模块的Pod发出CPU与内存告警的问题 ,而这些问题会导致系统响应缓慢甚至是服务不可用。一般情况下可以通过 重启 或者 调高Pod的资源量或者增加Pod数量 暂时解决问题,但这是治标不治本的,只有找到问题发生的原

    2024年02月07日
    浏览(38)
  • Java线上故障排查(CPU、磁盘、内存、网络、GC)+JVM性能调优监控工具+JVM常用参数和命令

    根据服务部署和项目架构,从如下几个方面排查: (1)运用服务器:排查内存,cpu,请求数等; (2)文件图片服务器:排查内存,cpu,请求数等; (3)计时器服务器:排查内存,cpu,请求数等; (4)redis服务器:排查内存,cpu,连接数等; (5)db服务器:排查内存,cpu,连接数

    2024年02月07日
    浏览(46)
  • 排查Docker容器Java程序CPU过高问题以及处理方法

    因为Docker里java程序运行环境是用的jre,没有top和jstack命令,所以要在容器里安装top和jattach,来查看和导出线程信息。 系统:Debian10 镜像:openjdk:8u275-jre-slim-buster 容器ID:99abe55a98dc 一.安装top:     1.进入容器:       2.因为官方镜像地址太慢,所以 修改源地址:https://develop

    2024年02月11日
    浏览(55)
  • k8s排查Java应用CPU负载过高问题

    因为k8s发布的pod还未加入资源的监控,在查看pod负载时发现其中pod占用1核CPU 2.1通过debug排查 下一步可以到对应的node节点查看对应进程的信息,也可以通过debug在当前节点进行排查(当节点太多懒得登录过去时) top命令找到所在节点进程信息,找到问题进程 查看详细线程 通

    2024年02月05日
    浏览(38)
  • JVM:性能监控工具分析和线上问题排查实践

    在日常开发过程中,多少都会碰到一些jvm相关的问题,比如: 内存溢出、内存泄漏、cpu利用率飙升到100%、线程死锁、应用异常宕机 等。 在这个日益内卷的环境,如何运用好工具分析jvm问题,成为每个java攻城狮必备的技能。所以白梦特意整理了 jdk自带分析工具的使用 ,以及

    2024年01月19日
    浏览(33)
  • k8s故障排查个案:当Pod内存持续增长,OOM问题如何解决?

    pod 运行一段时间后,内存持续增长,甚至 oom 的情况. 容器化过程中,我们经常会发现 kubernetes 集群内 pod 的内存使用率会不停持续增长,加多少内存吃多少内存,如果对 cgroup 内存的构成不是很清楚的情况下,单纯看监控看不出什么问题。 经过一番查阅,目前总结出大致有

    2024年02月22日
    浏览(41)
  • 使用阿里巴巴开源神器Arthas进行性能分析

    目录 前言: Arthas介绍 启动 分析命令 Profiler工具 前言: Arthas是一款由阿里巴巴开源的Java诊断工具,它可以在生产环境中帮助开发人员快速地定位问题,并进行高效的性能分析。通过在命令行中输入简单的

    2024年02月11日
    浏览(65)
  • 利用Arthas+APM监控进行Java性能深度定位

    大家可能都用过APM监控,包括开源的Skywalking、商用的卓豪(ZOHO)ManageEngine APM应用性能监控、以及云监控产品如听云(Server监控),这些APM监控产品大大方便了我们实时监控应用性能,并实现性能深度透视监控。 但是这些监控手段离真正能够定位性能问题还是有一段距离,有

    2024年02月14日
    浏览(28)
  • 使用MAT分析OOM问题

    OOM和内存泄漏在我们的工作中,算是相对比较容易出现的问题,一旦出现了这个问题,我们就需要对堆进行分析。 一般情况下,我们生产应用都会设置这样的JVM参数,以便在出现OOM时,可以dump出堆内存文件,也就是保留案发现场,方便我们后续的研究。 至于分析堆内存的工

    2024年02月12日
    浏览(27)
  • Kubernetes 集群的异常处理手段,包括集群自愈、集群监控、日志收集、集群规模扩容、节点问题处理、Pod问题定位、网络故障诊断、应用性能瓶颈分析、应用访问失效问题排查等方面知识

    作者:禅与计算机程序设计艺术 随着容器技术的普及和应用,容器集群已经成为云计算领域中一个重要的基础设施,用来提供快速、可扩展、高可用和弹性的服务。Kubernetes(简称K8s)是最具代表性的开源容器编排引擎之一,通过自动化部署、管理和调度容器ized application,极

    2024年02月07日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包