0

我在 J2EE web 项目中工作,它有很多 Java、SQL 脚本、JS、AJAX 的东西。项目已经运行了 5 年,仍然运行良好。

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

任何使项目更好的最佳实践?

4

2 回答 2

1

最好的办法是衡量你的瓶颈在哪里?此类工作需要诸如 jprofiler 之类的东西。

于 2010-05-04T13:14:05.967 回答
0

通常,当有人为系统性能改进付费时,他几乎完全知道他/她对什么不满意。因此,首先编写问题列表。系统“慢”的事实不是问题,因为“慢”总是相对于“快”的东西(例如系统无法跟上传入的流量)。一旦你有了一个列表,粗略地识别出“慢”的组件。然后使用日志记录(确保每条消息都以毫秒粒度时间戳为前缀,如果需要,重新配置记录器)。检查“慢”操作记录了什么,系统在每个组件上花费了多少时间。一旦您粗略地识别出慢速组件,增加该特定组件的日志记录详细程度并尝试找出它的问题(慢速数据库、糟糕的代码等)

如果只是为了让系统更快,可以通过在最大负载下运行的进程上反复运行“jstack”来找出优化的第一处(有人称这种方法为“monte carlo profiling”)。通过比较后续的堆栈转储,您可以统计出应用程序花费最多时间的位置并改进相应的块。

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

于 2010-05-10T19:36:08.837 回答