如何提高React.Net/SuperchargedReact服务器端对并发请求的渲染性能



我正在尝试使用React.NET和SuperchargedReact实现从ASP.NET网站中对React组件进行服务器端渲染。

我的初始负载测试结果表明,单个请求可以相当快速地处理(约100ms),但在并发请求(>4秒)下,性能会迅速下降。详细信息如下。

可能是我没有充分利用这些工具的潜力,测试也很粗略,但我需要一些关于从哪里开始提高性能的建议。

问题

  1. 我大概应该期望什么级别的并发?例如,并发性是否限制为我可以在内存中保存的javascript引擎实例的数量。还是取决于IIS工作进程的数量。或者其他什么。

  2. 我应该从哪里开始寻求提高性能的技巧?技巧?资源?

  3. 当SuperchargedReact据称实现了许多性能改进时,它表现不佳的原因是什么。

测试详细信息

我通过browserify/babelify/gulp-minify从ES6源代码构建了一个js包。然后通过全局变量暴露反应组件。react路由器不包括在内,对SuperchargedReact进行了一些小的修改,使其在没有路由器的情况下工作。

我从另一台服务器上的JMeter请求了一个大约5kb的服务器端渲染页面,该页面具有不同的线程数和每分钟请求限制。

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

增压反应的结果

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

我在这一点上停止了测试SuperchagedReact,因为它看起来比React.Net 差得多

这帮助了我们:

ReactSiteConfiguration.Configuration.AllowMsieEngine = false;
ReactSiteConfiguration.Configuration.ReuseJavaScriptEngines = false;
  • 强制使用V8而不是IE的Javascript引擎。有时,如果没有安装VC++2013运行时,V8可能会自动加载失败
  • 禁用JS引擎池,我们发现它有缺陷
  • 我们有遗留的Razor视图,所以我们只在需要呈现React组件的页面上调用.ReactWithInit。这使我们可以避免在每个页面上调用.ReactInitJavascript,这大大减少了JS引擎的工作量

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新