Feign底层的客户端实现有三种模式
1)URLConnection:默认实现,不支持连接池;(Feign发送http请求时,默认使用的客户端)
2)Apache HttpClient :支持连接池;
3)OKHttp : 支持连接池;
连接池可以减少连接创建和销毁的性能损耗;连接每次创建都需要三次握手,断开时需要做四次挥手,其实是比较浪费性能资源的。所以减少这类操作很重要.
因此优化Feign的性能主要包括
1)使用连接池代替默认的URLConnection
2)日志级别虽然可以用full,但是最好使用basic或none
(开日志是需要消耗性能的,不开日志的情况下日志会提升很多)
Feign的性能优化-连接池配置:
用Apache HttpClient为例,替换Feign底层默认的客户端 URLConnection;
1、Feign添加HttpClient的支持:引入依赖
<!--httpClient的依赖-->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
<version>根据系统版本号即可</version>
</dependency>
2、配置连接池
# 这里default就是全局配置,如果是写服务名称,则是针对某个微服务的配置
#feign.client.config.default=服务名
# 日志级别
feign.client.config.default.loggerLevel=FUll
# 开启Feign对httpClient的支持
feign.httpclient.enabled=true
# 最大连接数
feign.httpclient.max-connections=200
# 每个路径的最大连接数
feign.httpclient.max-connections-per-route=50
或者 yaml格式:
feign:
client:
config:
default: #这里default就是全局配置,如果是写服务名称,则是针对某个微服务的配置
loggerLevel: FULL #日志级别
httpclient:
enabled: true #开启Feign对httpClient的支持
max-connections: 200 #最大连接数
max-connections-per-route: 50 #每个路径的最大连接数