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 使用的。

  • 相关阅读:
    SQL Server 2008 安装过程中遇到“性能计数器注册表配置单元一致性”检查失败 问题的解决方法
    备份还原工具—ghost
    太多的if,太多的痛苦
    C#中使用GUID
    WinForm开发中,将Excel文件导入到DataGridView中时,获取Excel中所有表格的名称。
    使用ASP调用C#写的COM+组件
    COM+ and the .NET Framework 虽是英文但比较全面
    在C#中使用COM+实现事务控制
    COM+ and the .NET Framework
    管理员ID过期,无人能够管理Domino服务器
  • 原文地址:https://www.cnblogs.com/moonyaoo/p/13040752.html
Copyright © 2011-2022 走看看