我有一个spring boot rest服务,在这里我使用restTemplate调用另一个spring boot rest服务。当restTemplate不使用连接池时,对于从服务A到服务B的每个请求,服务A在一段时间后开始显示更高的响应时间。 当我更改restTemplate实现以使用由spring管理的连接池时,在重负载下我看不到任何性能下降。
这是真的吗?当我没有连接池时,restTemplate使用的基础httpClient会根据请求打开和关闭服务B的连接,并且该线程由JVM处理?因此,对于繁重的工作,GC是否会通过暂停应用程序和降低系统性能而频繁地加入该程序?
还有一种印象是,使用由spring管理的连接池将使所有这些连接线程均由spring管理,并且不会影响GC?
还想知道当连接池被破坏时这些连接何时会线程化吗?在应用程序关闭期间?
请记住线程耗尽,尽管我认为即使更高的线程池端也不会导致线程耗尽,但是连接池可接受的最大池大小应该是多少?可以接受的更高的数字是多少?
请让我知道理论是否正确。