質問

私はJVMスタックに基づいたWeb開発の初心者ですが、将来のプロジェクトには特にJVMベースのWebエンジンが必要です。それで、私は物事を迅速に作るために地面を探し始め、Grailsを試してみました。本からは良さそうに見えましたが、本当に長いスタートアップの時間(Grails Run-App)に感銘を受けました。ここにあります:

  • テストアプリ:ここでは、地面からそれを作るための指示はほとんどありません(すでに聖杯と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 Req/Sec

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

(CPU飽和の100%を持つ32 REQ/SECのみ。これは、そのようなハードウェアに対する私の期待を下回る方法です)

...次に - たとえば、同様のダミーJSFアプリケーションと比較しようとしました(_http://www.ibm.com/developerworks/library/j-jsf2/を撮影しました。 "、 jsf-example2 target jsf-example2-1.0.war内)があります。

  • テストケース:ab.exe -n 500 -c 10 _http:// localhost:8080/jsf/backend/listing.jsp

結果は..

JSF:400 req/sec

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 req/sec:

<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:Running GrailsアプリをVisualVMでプロファイリングしようとしましたが、次のようなメッセージの無限のループを取得しました。

Profiler Agent: Redefining 100 classes at idx 0, out of total 413
...
Profiler Agent: Redefining 100 classes at idx 0, out of total 769
...

そして最後に、アプリは数分後に作業を停止しました。したがって、グレイルのプロファイリングは、良い診断の選択ではないようです。

アップデート - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

まず第一に、私は管理する必要があります、はい、私はrtfmする必要があります-IE 'Grails run -app'は、パフォーマンス測定のためにGrailsを実行する正しい方法ではありません。戦争を編集してTomcatのパフォーマンスに展開した後、それほどひどく低くはありません - それはただ低くなります。以下のメトリックは、1ユーザーの並行性に関するものです(1つのスレッドのフレームワークの最大パフォーマンスと大きな負荷のないものを確認したかっただけです)。質問/819684/jsf-and-spring-performance-vs-por-jsp-performance "とそこに言及したApacheのウィケットを確認することを決定しました - そのパフォーマンスも含まれています。

ユースケースは次のとおりです。 -ab.exe -n 500 -c 1 _http:// localhost:8080/...-サーバーはvfabric tcserver dev editionのtomcat7です。

----------------------   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

だから...とにかく聖杯に何か問題があります。 Tcserver(Karthickに感謝)を使用してプロファイリングを作成しました - 「スプリングベース」アクションとグレイル用の内部スタックトレースを追跡できるように見えます(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:聖杯のパフォーマンスが悪いための根本原因は、「スプリング」Libsの根底にあることが起こる可能性があります。これをより詳細に確認します。

役に立ちましたか?

解決

run-appで実行していますか?

http://grails.org/deployment 州:

「Grails Run-Appコマンドを使用してGrailsを展開してはなりません。これにより、Grailは「開発」モードになり、オーバーヘッドが追加されています。」

他のヒント

サンプルアプリをTomcatに展開してみてください。 grails run-app 開発専用です。

どの環境でアプリを開始しましたか?製品?開発者?

足場を使用していますか?

私は自分のマシンで試しました(Core i7-2600k)。 4つの入力フィールド、動的レイアウトなどのログインページ。遅い開発環境では、1秒あたり525のリクエストがあります。

ええ、これは聖杯や彼の環境について多くを知らない人によるベンチマークです。最初に、彼はWindowsでリソース管理が悪いことを知っています。そのため、ほとんどのWebサービス/アプリがLinux環境で実行されています。

第二に、彼が「AB」を使用してベンチマークを使用している場合、彼はプロキシキャッシュのセットアップを持っていません。なぜなら、最初のヒットの後、ヒットの残りがキャッシュされ、彼は彼のセットアップの理解からキャッシュをベンチマークしているからです。

したがって、これはすべて、悪いセットアップのベンチマークと聖杯の理解が不十分なように見えます。意図した違反はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top