Performance 如何提高并发请求的React.Net/SuperboardReact服务器端呈现性能?

Performance 如何提高并发请求的React.Net/SuperboardReact服务器端呈现性能?,performance,clearscript,Performance,Clearscript,我正在使用React.NET和SuperboardReact实现在ASP.NET网站中对React组件进行服务器端呈现试验 我的初始负载测试结果表明,单个请求可以合理地快速处理(大约100毫秒),但在并发请求(>4秒)下,性能会迅速下降。详情如下 可能我没有充分利用这些工具的潜力,测试也很粗略,但我需要一些关于从何处开始改进性能的建议 问题 我应该期望大致达到什么级别的并发性?例如,并发性仅限于我可以在内存中保存的javascript引擎实例的数量。或者它取决于IIS工作进程的数量。或者别的什么

我正在使用React.NET和SuperboardReact实现在ASP.NET网站中对React组件进行服务器端呈现试验

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

可能我没有充分利用这些工具的潜力,测试也很粗略,但我需要一些关于从何处开始改进性能的建议

问题
  • 我应该期望大致达到什么级别的并发性?例如,并发性仅限于我可以在内存中保存的javascript引擎实例的数量。或者它取决于IIS工作进程的数量。或者别的什么

  • 我应该从哪里着手提高性能-提示?把戏?资源

  • 当SuperboardReact.Net被认为实现了许多性能改进时,如何解释SuperboardReact表现不佳呢

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

    我从另一台服务器上的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
    
    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
    
    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 |    138 |     90 |  1,161
    
        500 |    256 |      4 |  2,049
    
       1000 |    566 |     31 |  4,969
    
    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
    
    我在这一点上停止了测试SuperhageDreact,因为它看起来比React.Net差得多。这有助于我们:

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