2

React.Net と SuperchargedReact の両方の実装を使用して、ASP.NET Web サイト内から React コンポーネントのサーバー側レンダリングを試しています。

私の初期負荷テストの結果は、単一のリクエストはかなり迅速に (約 100 ミリ秒) 処理できることを示していますが、同時リクエストではパフォーマンスが急速に低下します (> 4 秒)。詳細は以下。

おそらく、私はこれらのツールを最大限に活用しておらず、テストは大雑把でしたが、パフォーマンスの改善をどこから始めればよいかアドバイスが必要です.

質問

  1. 大まかにどのレベルの同時実行を期待する必要がありますか? たとえば、同時実行は、メモリに保持できる JavaScript エンジン インスタンスの数に制限されています。または、IIS ワーカー プロセスの数に依存します。または、他の何か。

  2. パフォーマンスを向上させるには、どこから始めるべきですか - ヒント? トリック?資力?

  3. SuperchargedReact が多くのパフォーマンス改善を実装していると思われる場合に、React.Net のパフォーマンスが低下する理由を説明できます。

テストの詳細

browserify/babelify/gulp-minify を介して ES6 ソースから js バンドルを作成しました。次に、反応コンポーネントがグローバル変数を介して公開されました。反応ルーターは含まれておらず、ルーターなしで動作するように SuperchargedReact にいくつかの小さな変更が加えられました。

スレッド数と 1 分あたりのリクエスト数の制限が異なる別のサーバー上の JMeter から、約 5kb のサーバー側レンダリング ページを 1 つリクエストしました。

React.Net の結果

10スレッド

req/min | avg ms | min ms | max ms

    100 |    138 |     90 |  1,161

    500 |    256 |      4 |  2,049

   1000 |    566 |     31 |  4,969

20 スレッド

req/min | avg ms | min ms | max ms

    100 |    284 |     88 |  1,964

    500 |    432 |     52 |  3,649

   1000 |  1,557 |     75 |  4,405

50スレッド

req/min | avg ms | min ms | max ms

    100 |  1,393 |     91 |  4,693

    500 |  1,723 |     19 | 10,523

   1000 |  4,418 |     97 | 32,769

SuperchargedReact の結果

10スレッド

req/min | avg ms | min ms | max ms

    100 |    763 |      7 |  2,194

    500 |  2,149 |    263 |  5,160

   1000 |  2,270 |    149 |  4,865

React.Net よりもかなり悪いように見えたので、この時点で SuperchagedReact のテストを中止しました。

4

1 に答える 1

1

これは私たちを助けました:

ReactSiteConfiguration.Configuration.AllowMsieEngine = false;
ReactSiteConfiguration.Configuration.ReuseJavaScriptEngines = false;
  • IE の Javascript エンジンの代わりに V8 が使用されていることを強制します。VC++ 2013 ランタイムがインストールされていない場合、V8 が警告なしにロードに失敗することがあります。
  • バグがあることが判明した JS エンジンのプーリングを無効にします。
  • 従来の Razor ビューがあるため、React コンポーネントのレンダリングが必要なページでのみ .ReactWithInit を呼び出します。これにより、すべてのページで .ReactInitJavascript を呼び出す必要がなくなり、JS エンジンの負荷が大幅に軽減されました。

それが役立つことを願っています。

于 2016-01-21T19:58:36.833 に答える