【问题标题】:Grails application profiling and performance tuningGrails 应用程序分析和性能调优
【发布时间】:2013-03-15 12:08:26
【问题描述】:

我目前在 Tomcat 上运行的 Grails 应用程序存在一些性能问题。在单页加载期间,我发现 java 进程的 CPU 使用率相当高(大约 20%),我担心这不会很好地扩展。

我查看了 Java Melody 和 Grails Profiler 插件。然而,这些工具似乎只告诉我我已经知道的东西——哪些页面的加载速度比其他页面慢。

我还检查了与 MySQL 的连接数,虽然有很多查询,但它们似乎几乎是立即执行的。此外,MySQL 进程从未在使用任何有意义的 CPU 时间的情况下显示在顶部,因此我认为这不是导致速度下降的原因。

我需要知道我的代码中的哪些方法或函数运行时间最长,以便我可以评估它们以查看它们是否可以重写。到目前为止,我已经尝试手动禁用页面的某些部分来测试加载时间。但是,如果有一个工具可以帮助我指出有问题的代码,那就容易多了。有这样的工具吗?

【问题讨论】:

  • 除了其他建议之外,PSI Probe 可能值得一试:code.google.com/p/psi-probe
  • 另外请注意,您将面临 dev 和 prod 之间的差异,因为在开发模式下,重新加载机制会有所不同。

标签: performance tomcat grails profiling


【解决方案1】:

我会推荐带有 tc 服务器的 SpringSource InSight

http://www.springsource.org/insight

【讨论】:

    【解决方案2】:

    你不应该在开发模式下进行性能测试(如果你想测试生产模式的性能)。

    建议在您将用于生产的 appserver 容器(例如 Tomcat)中进行性能测试。

    如果你真的想做快速的性能测试,你可以使用“grails prod run-war”命令来做。在这种情况下,您必须将 Grails JVM 参数添加到 BuildConfig.groovy 文件中

    grails.tomcat.jvmArgs = ["-server", "-noverify", "-Xms512m", "-Xmx1024m", "-XX:PermSize=96m", "-XX:MaxPermSize=256m", "-Djava.net.preferIPv4Stack=true"]
    

    使用此命令在生产模式下启动 Grails

    grails prod run-war
    

    【讨论】:

      【解决方案3】:

      我在 tomcat 上的 grails 应用程序也遇到了类似的问题。 所以我回到了码头——它似乎和码头一起工作得更好。

      根据新的 gails 发布信息,他们修复了一些 tomcat 问题,因此项目升级也可以解决您的问题。

      【讨论】:

        最近更新 更多