如何配置一个非常大的Java webapp?
我有一个非常大的Java应用程序。它运行在Tomcat上,是典型的Spring/Hibernate Web应用程序。它也是一个非常大的Java程序。对我来说,测试数据库查询的性能很容易,因为我可以单独运行这些查询,但我不知道如何在这样的堆栈上查找Java瓶颈。我尝试了Eclipse的TPTP profiler,但它似乎真的不喜欢我的程序,我怀疑这是因为我的程序太大了。有人对分析大型Web应用程序有什么建议吗?试试jProfiler。如果您可以让Tomcat和您的应用程序运行,那么与集成就很容易了 然后您可以使用内置的Netbeans来测试性能、内存使用情况等如何配置一个非常大的Java webapp?,java,web-applications,profiling,Java,Web Applications,Profiling,我有一个非常大的Java应用程序。它运行在Tomcat上,是典型的Spring/Hibernate Web应用程序。它也是一个非常大的Java程序。对我来说,测试数据库查询的性能很容易,因为我可以单独运行这些查询,但我不知道如何在这样的堆栈上查找Java瓶颈。我尝试了Eclipse的TPTP profiler,但它似乎真的不喜欢我的程序,我怀疑这是因为我的程序太大了。有人对分析大型Web应用程序有什么建议吗?试试jProfiler。如果您可以让Tomcat和您的应用程序运行,那么与集成就很容易了
在Netbeans中的tomcat上。我从来没有找到一个简单的方法来实现这一点,因为通常会发生很多事情,很难获得一个清晰的整体画面。对于Hibernate这样的应用程序,更是如此,因为正确的行为可能是为缓存的数据获取一大块内存,即使你的应用程序并没有真正“做任何事情”,因此你运行的另一个内存效率低下的进程可能会被分析淹没 您是针对内存、速度进行评测,还是仅仅针对性能不佳进行评测?试着孤立地测试您怀疑不好的流程,这当然容易得多 JProbe,JProfiler,都是好的,免费的演示。在IDE内部测试会使内存问题复杂化,我发现不用麻烦更容易。现在随JDK提供的探查器可以连接到正在运行的进程,并且至少可以提供性能的初步概述。它基于Netbeans探查器。试试看。它有试用许可证,功能非常齐全。要使用它,您必须:
- 将JProfiler代理作为参数添加到java命令中
- 在服务器上启动程序
- 启动JProfiler并选择“连接到远程运行的应用程序”
- 给它端口号和它运行的主机
请特别注意伊甸园/幸存者对象升级部分。在web应用程序中,您会得到许多短期对象,因此,以牺牲终身代为代价增加年轻一代通常是有意义的。我使用YourKit分析了8GB堆的应用程序,效果非常好。检查。它不是剖析器,但它是我可以推荐的最好的剖析工具。它很容易与spring集成。我们在测试和现场环境中使用它。好吧,我们的应用程序在可接受的性能参数范围内工作,但我想看看“幕后”是否有任何明显的瓶颈。我听说它从来都不是你期望的那样。请注意,Visual VM在Sun JVM中工作得最好。如果最初的asker使用了另一个JVM,那么最有可能需要的就是让visualvm看到并连接到正在运行的进程。