zoukankan      html  css  js  c++  java
  • 后台服务变慢的诊断思路

    首先,服务是突然变慢还是长时间运行后观察到变慢?类似问题是否重复出现?

    “慢”的定义是什么,能够理解是系统对其他方面的请求的反应延时变长吗?

    问题可能来自于 Java 服务自身,也可能仅仅是受系统里其他服务的影响。初始判断可以 先确认是否出现了意外的程序错误,例如检查应用本身的错误日志。 对于分布式系统,很多都会实现更加系统的日志、性能等监控系统。一些 Java 诊断 工具也可以用于这个诊断,例如通过 JFR(Java Flight Recordera>),监控应用是否大 量出现了某种类型的异常。 如果有,那么异常可能就是个突破点。 如果没有,可以先检查系统级别的资源等情况,监控 CPU、内存等资源是否被其他进程 大量占用,并且这种占用是否不符合系统正常运行状况。

    对于JVM 层面的性能分析,利用各种工具,如利用 JMC、JConsole 等工具进行运行时监控,在运行时进行堆转储分析,或者获取各种角度的统计数据(如jstat - gcutil 分析 GC、内存分带等)。

     对于应用Profiling,简单来说就是利用一些侵入性的手段,收集程序运行时的细节,以定 位性能问题瓶颈。所谓的细节,就是例如内存的使用情况、最频繁调用的方法是什么,或者 上下文切换的情况等。但是不建议生产系统进行 Profiling,大多数是在性能测 试阶段进行。但是,当生产系统确实存在这种需求时,也不是没有选择。建议使用 JFR 配合JMC来做 Profiling,因为它是从 Hotspot JVM 内部收集底层信息,并经过了大量优化。

    系统性能分析中,CPU、内存和 IO 是主要关注项。 对于 CPU,如果是常见的 Linux,可以先用 top 命令查看负载状况

    除了 CPU,内存和 IO 是重要的注意事项,利用 free 之类查看内存使用。 或者,进一步判断 swap 使用情况,top 命令输出中 Virt 作为虚拟内存使用量,就是物 理内存(Res)和 swap 求和,所以可以反推 swap 使用。显然,JVM 是不希望发生大 量的 swap 使用的。

  • 相关阅读:
    枚举转中文,通过反射方法与描述的方式获取
    PropertyGrid 重难点总结
    Image与Bitmap的区别及相互转换
    A generic error occurred in GDI+的解决方案
    C# 鼠标穿透窗体与恢复
    struts2 validate验证
    Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写
    struts2中struts.xml和web.xml文件解析及工作原理
    Struts2中Struts.xml的作用
    <a>标签是什么意思 怎么使用?
  • 原文地址:https://www.cnblogs.com/moonyaoo/p/13040752.html
Copyright © 2011-2022 走看看