栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Spring REST模板,创建过多的连接或速度慢

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Spring REST模板,创建过多的连接或速度慢

实际上,Spring
Boot不会泄漏连接。您在这里看到的是Linux内核(以及每个主要OS)的标准行为。从机器上关闭的所有插座都会在

TIME_WAIT
一段时间内进入状态。这是为了防止使用该临时端口的下一个套接字接收实际上打算用于该端口上一个套接字的数据包。您看到的两者之间的差异是每个人采用的连接池方法的结果。

更具体地说,默认情况下

RestTemplate

使用连接池。这意味着每个rest调用都会打开一个新的本地临时端口和一个到服务器的新连接。如果您的服务速度非常快,它将立即在可用的本地端口范围内爆炸。使用Apache
HttpClient
,您可以利用连接池。这将防止您的应用程序看到您描述的问题。但是,鉴于您的服务能够比Linux内核从中取出套接字更快地做出响应
TIME_WAIT
,因此无论您做什么,连接池都会使您的客户端变慢(如果它没有使任何事情变慢,那么您就用光了本地临时端口)。

尽管可以在Linux内核中启用TCP重用,但这样做可能会很危险(数据包可能会延迟,并且临时端口可能会收到他们不了解的随机数据包,这可能会导致各种问题)。这里的解决方案是使用连接池,就像在第二个示例中一样,使用足够大的数量来达到接近您想要的性能。

为了帮助您调整连接池,您需要调整

maxConnPerRoute
maxConnTotal
参数。
maxConnPerRoute
限制将对单个IP:Port对
maxTotal
建立的连接数,并限制将永远打开的总连接数。在您的情况下,由于似乎所有请求都发送到同一位置,因此可以将它们设置为相同(较高)值。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470085.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号