Grails 2.0のパフォーマンスは本当にひどく低いですか?
-
27-10-2019 - |
質問
私は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」を使用してベンチマークを使用している場合、彼はプロキシキャッシュのセットアップを持っていません。なぜなら、最初のヒットの後、ヒットの残りがキャッシュされ、彼は彼のセットアップの理解からキャッシュをベンチマークしているからです。
したがって、これはすべて、悪いセットアップのベンチマークと聖杯の理解が不十分なように見えます。意図した違反はありません。