com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient

尋視線上環境日誌時,發現瞭如下錯誤,查了一下,得知可能是eureka服務註冊中心不可用導致的,

不過檢查了一下服務註冊中心項目,發現是正常運行的,且這個錯誤日誌只是偶爾出現,所以就有些困惑了。

排查過程:

1,然後我找到報錯的這個項目的線上環境關於eureka的配置,然後對其可能註冊到的所有eureka註冊中心都一一進行訪問,發現前兩個都是正常可以訪問的,正納悶時,第3個註冊中心的ip與端口發現訪問不了了,這時就略有所悟,應該是無法通過這個註冊中心的地址進行註冊了

2,然後打開eureka註冊中心項目,查看其對外訪問ip與端口,果然只有錯誤日誌項目配置中的前2個ip,第3個ip是沒有的,再次驗證了問題所在。

解決方案:

方案1,可以將客戶端項目中配置的註冊中心ip添加到eureka註冊中心項目對外訪問ip列表中(因爲我的項目該ip機器下線,所以不適合我)

方案2,將客戶端項目中配置的該ip移除(本人採取的這種方案)

當然爲了更高可用,也可以在eureka註冊中心項目中添加新的ip,將客戶端項目中配置更新舊的ip爲新的可用的ip

經驗總結:

客戶端服務配置的eureka註冊中心列表,只要有有個不可用,其它哪怕都可用,也會報如下錯誤,所以儘量及時清楚不可用的註冊中心機器配置

2019-12-06 11:28:02.454 ERROR [DiscoveryClient-HeartbeatExecutor-0] com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient 
- Request execution errorcom.sun.jersey.api.client.ClientHandlerException: 
java.net.ConnectException: Connection refused (Connection refused)                  
at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:187)                 
at com.sun.jersey.api.client.filter.GZIPContentEncodingFilter.handle(GZIPContentEncodingFilter.java:123)   
at com.netflix.discovery.EurekaIdentityHeaderFilter.handle(EurekaIdentityHeaderFilter.java:27)                   
at com.sun.jersey.api.client.Client.handle(Client.java:652)                 
at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682)      
at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)                 
at com.sun.jersey.api.client.WebResource$Builder.put(WebResource.java:529)                  
at com.netflix.discovery.shared.transport.jersey.AbstractJerseyEurekaHttpClient.sendHeartBeat(AbstractJerseyEurekaHttpClient.java:102)                      
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)                  
at com.netflix.discovery.shared.transport.decorator.MetricsCollectingEurekaHttpClient.execute(MetricsCollectingEurekaHttpClient.java:73)                    
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)                      
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)                  
at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.executeOnNewServer(RedirectingEurekaHttpClient.java:118
at com.netflix.discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute(RedirectingEurekaHttpClient.java:79)        
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)      
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)          
at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:119)           
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)      
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92)          
at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77)            
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89)      
at com.netflix.discovery.DiscoveryClient.renew(DiscoveryClient.java:824)                 
at com.netflix.discovery.DiscoveryClient$HeartbeatThread.run(DiscoveryClient.java:1393)                     
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)                  
at java.util.concurrent.FutureTask.run(FutureTask.java:266)                     
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)                  
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)                  
at java.lang.Thread.run(Thread.java:748)                Caused by: java.net.ConnectException: Connection refused (Connection refused)                       
at java.net.PlainSocketImpl.socketConnect(Native Method)           
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)                  
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)                      
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)                       
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)                   
at java.net.Socket.connect(Socket.java:589)                 
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)                        
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)                       
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144)            
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:134)                  
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)                   
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)                      
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)                    
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:118)                    
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)            
at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:173)
                      ... 27 common frames omitted

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章