代码之家  ›  专栏  ›  技术社区  ›  pramodc84

项目绩效评估和发现薄弱环节

  •  0
  • pramodc84  · 技术社区  · 16 年前

    我在J2EE Web项目中工作,它有大量的Java、SQL脚本、JS、Ajax素材。这个项目已经5年了,仍然运行良好。

    我已经分配了项目的性能评估工作,因为可能存在一些内存使用问题、DB获取逻辑延迟和其他类似的性能薄弱领域。从哪里开始?

    有什么使项目更好的最佳实践吗?

    2 回复  |  直到 16 年前
        1
  •  1
  •   khmarbaise    16 年前

    最好的办法是测量你的瓶颈在哪里?这类工作需要jprofiler等工具。

        2
  •  0
  •   bobah    16 年前

    通常,当某人为系统性能改进付费时,他几乎完全知道他/她不满意什么。所以首先要列出问题所在。系统“慢”并不是问题,因为“慢”总是与“快”相关(例如系统无法跟上传入的流量)。 一旦你有了一个列表,大致确定组件是“慢”的。 然后使用日志记录(确保每个消息的前缀都是毫秒粒度时间戳,如果需要,请重新配置记录器)。 检查“慢速”操作记录的内容,以及系统在每个组件中花费的时间。 一旦粗略地识别出慢组件,就增加这个特定组件的日志记录冗长性,并尝试找出它有什么问题(慢数据库、差代码等)。

    如果您只需要使系统更快,您可以通过在最大负载下运行的进程上重复运行“jstack”(有些人称此方法为“Monte Carlo分析”),找到要优化的第一个地方。通过比较随后的堆栈转储,您可以发现应用程序在统计上花费的大部分时间在哪里,并改进相应的块。

    将jconsole连接到正在运行的项目并跟踪内存消耗,同时在日志文件中查找谁分配的内存最多,这也很有用。

    推荐文章