spring-cloud-netflix-core/1.2.6.RELEASE/spring-cloud-netflix-core-1.2.6.RELEASE-sources.jar!/org/springframework/cloud/netflix/zuul/filters/route/SimpleHostRoutingFilter.java
httpcore-4.4.6-sources.jar!/org/apache/http/pool/PoolEntry.java
主要看
httpclient-4.5.3-sources.jar!/org/apache/http/impl/execchain/ConnectionHolder.java
這裏設置了validDuration,會傳給releaseConnection
httpclient-4.5.3-sources.jar!/org/apache/http/impl/conn/PoolingHttpClientConnectionManager.java
這裏去updateExpiry,相當於更新了timeToLive
這裏設置的是http連接池中connection的存活時間
httpclient-4.5.3-sources.jar!/org/apache/http/impl/client/HttpClientBuilder.java
httpclient-4.5.3-sources.jar!/org/apache/http/impl/conn/PoolingHttpClientConnectionManager.java
4.0的ThreadSafeClientConnManager,在4.2版本的時候被廢棄了,默認使用PoolingHttpClientConnectionManager。這個manager有兩個重要的參數,壹個是maxTotal,壹個是defaultMaxPerRoute。
httpclient-4.5.3-sources.jar!/org/apache/http/conn/routing/HttpRoute.java
HttpRoute對象是immutable的,包含的數據有目標主機、本地地址、代理鏈、是否tunnulled、是否layered、是否是安全路由。
httpclient-4.5.3-sources.jar!/org/apache/http/impl/client/IdleConnectionEvictor.java
builder默認會構造壹個IdleConnectionEvictor
httpclient-4.5.3-sources.jar!/org/apache/http/impl/client/HttpClientBuilder.java
如果沒有指定maxIdleTime的話,但是有設置evictExpiredConnections的話,默認是10秒
設置從連接池獲取壹個連接的請求超時時間( 連接池中連接不夠用的時候等待超時時間 ),單位毫秒,可以設置為500ms
httpclient-4.5.3-sources.jar!/org/apache/http/impl/execchain/MainClientExec.java
設置重試策略
httpclient-4.5.3-sources.jar!/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java
比如不重試,可以這樣設置
當getKeepAliveDuration為-1以及connTimeToLive為-1的時候,closeExpiredConnections方法其實是沒有用的,查看debug日誌會出現
當getKeepAliveDuration不為-1的話,假設是5s,則日誌可能是這樣的