gpt4 book ai didi

java - 如何使用 VisualVM 发现瓶颈/问题

转载 作者:搜寻专家 更新时间:2023-10-30 19:44:52 26 4
gpt4 key购买 nike

正如我在 Performance drop after 5 days running web application, how to spot the bottleneck? 中发布的那样,我遇到了一个应用程序运行一段时间后变慢的问题。

我让 VisualVM 运行并在不同时间之间制作快照。现在应用程序真的很慢,但我不知道如何发现瓶颈。它们彼此之间没有太大区别,唯一增长一点的是堆,一段时间后它成功地被垃圾回收。

谁能给我一些指点?

以下是快照(应用程序):

[1] http://www.2shared.com/file/W4XJ6HtE/application-1314108550032.html

[2] http://www.2shared.com/fadmin/22521338/f512f97e/application-1314097232727.apps.html

谢谢!

编辑:仔细观察,我注意到 CPU 甚至没有被使用太多......而且系统真的很慢!

最佳答案

作为第一步,我建议确定到底什么是慢的。它执行某些工作很慢吗?或者在处理来自不同客户的作业时表现出低吞吐量?

什么资源不够?

  • 如果您正在使用一些外部服务(如数据库或 RPC 服务器),总是记录它们的响应时间并在进行任何其他优化步骤之前检查它。
  • 可能是处理器能力不足。只需查看 CPU 使用率即可。
  • 可能是内存力不足。使用 gc 日志记录来检测此类问题。有一个 good topic关于它。
  • 可能是硬盘速度不够。使用 iostat 并了解您的 HDD 性能限制。
  • 可能是网络吞吐量不足。检查网络信道使用情况。
  • 您也可能会超出一些特定于操作系统的限制,例如打开的文件和/或网络套接字的数量。检查您是否正确地将所有操作系统级异常报告到日志文件中。

当您确定了哪个资源不足以及程序中受到影响的部分后,您可以尝试找到要优化的代码段。使用随机工具并通过它运行您的应用程序而不知道要寻找什么是没有意义的。

根据我的个人经验,只有一个缓慢的方法的情况非常罕见,这可以通过分析器找到。很可能是算法中某处的意外 IO 和/或同步或错误的数据库架构。

关于java - 如何使用 VisualVM 发现瓶颈/问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7162414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com