Spring Boot Rest Controller非常慢的响应

用户2267367:

你好堆栈溢出社区。我正在使用Spring boot,它对我来说工作正常,但是当涉及到“大型”数据集时,它变得非常慢,让我向您展示一个示例代码:

@GetMapping("/get/some/example/data/{lines}")
public ResponseEntity<String> getTestData(@PathVariable("lines") long lines) {
    StringBuilder stringBuilder = new StringBuilder();

    for(int i=0; i<lines; i++){
      stringBuilder.append("...very long string here...");
    }
    return ResponseEntity.ok(stringBuilder.toString());
  }

好的,您看到的只是一个非常简单的rest控制器,用于生成动态大小的响应。想象一下stringBuilder.append()中的字符串是500个字符或更多。

现在,让浏览器调用此端点,并使用chrome的DevTools(F12)观察结果:

响应标题:

内容编码:gzip

内容类型:text / html; charset = UTF-8

传输编码:分块

变化:接受编码


线路= 100的呼叫端点:

  • 419 KB资源
  • 完成377毫秒(+-50毫秒...)

行的呼叫端点= 1000:

  • 3.0 MB资源
  • 完成2108000ms(+-3000ms)

让我们比较那些结果。好的,由于gzip压缩,资源大小不精确十倍。但是我的问题是响应时间。10倍的数据需要377ms和210800ms。这意味着要花费10倍的数据,则需要花费559倍的时间。

您可以看到没有数据库连接,也没有复杂的代码。具有1000次迭代的for循环花费不到5毫秒,因此问题出在幕后或在HTTP中。您能否帮助我理解为什么大量数据确实会对性能产生如此大的影响。您能否帮忙找到解决方案以缩短响应时间。

另外,您可以在标题中看到MIME类型“ Content-Type:text / html”,将其更改为application / json时,速度更快,但仍然不快。

另请参阅此处的请求标头:接受:text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp,image / apng,/ ; q = 0.8,application / signed-exchange; v = b3 ; q = 0.9

接受编码:gzip,deflate,br

接受语言:de-DE,de; q = 0.9,es-VE; q = 0.8,es; q = 0.7,en-US; q = 0.6,en; q = 0.5

缓存控制:无缓存

连接:保持活动状态

主机:localhost:8080

语法:无缓存

安全提取模式:导航

安全提取站点:无

安全提取用户:?1

不安全升级请求:1

用户代理:Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,如Gecko)

Chrome / 79.0.3945.130 Safari / 537.36


依赖项:

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>

<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.0.RELEASE</version>

...

我非常感谢您的任何提示和建议。

用户2267367:

我只是发现根本没有性能问题。我刚刚安装了Postman,以检查是否相同。不,不是这样,Postman和Firefox DevTools都告诉我,这非常快。出于某种原因,我最喜欢的浏览器chrome正在降低大数据的速度。信不信由你,Firefox和chrome对14.41 MB的响应相同的请求在firefox和chrome上大约需要223毫秒,而在chrome上则大约需要23000毫秒...但这仅适用于开放式构建工具,因此当您观看

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章