gpt4 book ai didi

performance - Grails 2.0 的性能真的那么低吗?

转载 作者:行者123 更新时间:2023-12-03 20:18:55 25 4
gpt4 key购买 nike

我是基于 JVM 堆栈的 WEB 开发的新手,但 future 的项目将特别需要一些基于 JVM 的 WEB 引擎。所以我开始寻找一些地方来快速制作东西并转向尝试 Grails。书中的内容看起来不错,但是对非常长的启动时间(grails run-app)印象深刻,我决定测试它在负载下的工作方式。这里是:

  • 测试应用程序:按照这里的一些说明从地面开始制作(假设您已经安装了 Grails 和 Tomcat,需要 2 分钟):

    _http://grails.org/Quick+Start
  • 测试用例(带有 Apache 基准测试 - 带有 Apache httpd - _http://httpd.apache.org):

    ab.exe -n 500 -c _http://localhost:8080/my-project/book/create
    (注意:这只是在样式容器中显示 2 个输入字段)
  • 硬件:Intel i5 650 (4Core*3.2GHz) 8GB Ram & Win Server 2003 x64

  • 结果是..

    Grails:32 请求/秒
    Total transferred:      1380500 bytes
    HTML transferred: 1297500 bytes
    Requests per second: 32.45 [#/sec] (mean)
    Time per request: 308.129 [ms] (mean)
    Time per request: 30.813 [ms] (mean, across all concurrent requests)
    Transfer rate: 87.51 [Kbytes/sec] received

    (只有 32 个请求/秒,CPU 饱和度为 100%,这太低于我对此类硬件的期望了)

    ...接下来 - 我试图将它与类似的虚拟 JSF 应用程序进行比较(我在这里拿了一个:_http://www.ibm.com/developerworks/library/j-jsf2/- 寻找“带有 JAR 文件的源代码” ",里面有\jsf-example2\target\jsf-example2-1.0.war),
  • 测试用例:ab.exe -n 500 -c 10 _http://localhost:8080/jsf/backend/listing.jsp

  • 结果是..

    JSF:400 请求/秒
    Total transferred:      5178234 bytes
    HTML transferred: 5065734 bytes
    Requests per second: 405.06 [#/sec] (mean)
    Time per request: 24.688 [ms] (mean)
    Time per request: 2.469 [ms] (mean, across all concurrent requests)
    Transfer rate: 4096.65 [Kbytes/sec] received

    ...最后是原始的虚拟 JSP(仅供引用)

    Jsp:8000 请求/秒:
    <html>
    <body>
    <% for( int i = 0; i < 100; i ++ ) { %>
    Dummy Jsp <%= i %> </br>
    <% } %>
    </body>
    </html>

    结果:
    Total transferred:      12365000 bytes
    HTML transferred: 11120000 bytes
    Requests per second: 7999.90 [#/sec] (mean)
    Time per request: 1.250 [ms] (mean)
    Time per request: 0.125 [ms] (mean, across all concurrent requests)
    Transfer rate: 19320.07 [Kbytes/sec] received

    ...

    我错过了什么吗? ... Grails 应用程序可以运行得更好吗?

    PS:我尝试使用 VisualVM 分析我正在运行的 Grails 应用程序,但收到了无限循环的消息,例如......
    Profiler Agent: Redefining 100 classes at idx 0, out of total 413
    ...
    Profiler Agent: Redefining 100 classes at idx 0, out of total 769
    ...

    最后应用程序在几分钟后停止工作 - 所以,看起来分析 Grails 不是好的诊断的选择。

    更新 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    首先,我必须管理,是的,我需要 RTFM - 即“grails run-app”不是运行 Grails 进行性能测量的正确方法。在编译 WAR 并将其部署到 Tomcat 之后,性能并没有那么低——它只是很低。下面的指标是针对 1 个用户的并发性的(我只是想检查一下框架在一个线程中的最大性能是什么并且没有重负载),在阅读其他相关帖子时,我来到了“http://stackoverflow.com/问题/819684/jsf-and-spring-performance-vs-poor-jsp-performance”并决定检查那里提到的Apache Wicket——它的性能也包括在内。

    用例是:
    - ab.exe -n 500 -c 1 _http://localhost:8080/...
    - 服务器是 vFabric tcServer Dev 版本中的 Tomcat7,在后台运行“insight”
    ----------------------   tcServer       Plain Tomcat 7    -c 10
    /Grails/book/create 77 req/sec 130 req/sec 410 req/sec
    /jsf/backend/listing.jsp 133 req/sec 194 req/sec 395 req/sec
    /wicket/library/ 870 req/sec 1400 req/sec 5300 req/sec

    所以……无论如何,Grails 有问题。我已经使用 tcServer 进行了一些分析(感谢 Karthick) - 看起来它只能跟踪“基于 Spring”的操作,Grails 的内部堆栈跟踪如下(对于 2 个请求 - 注意:指标不稳定 - 我打赌准确性tcServer 远非完美,但可以仅用于信息)
    Total (81ms)
    Filter: urlMapping (32ms)
    -> SimpleGrailsController#handleRequest (26ms)
    -> Render view "/book/create" (4ms)
    Render view "/layouts/main.gsp" (47ms)

    Total (79ms)
    Filter: urlMapping (56ms) ->
    -> SimpleGrailsController#handleRequest (4ms)
    -> Render view "/book/create" (38ms)
    Render view "/layouts/main.gsp" (22ms)

    PS:Grails 性能不佳的根本原因可能是底层的“Spring”库,将更详细地检查这一点。

    最佳答案

    你是用 run-app 运行的吗?

    http://grails.org/Deployment状态:

    “永远不应该使用 grails run-app 命令部署 Grails,因为这会将 Grails 设置为具有额外开销的“开发”模式。”

    关于performance - Grails 2.0 的性能真的那么低吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8840183/

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