现象:
近期做压力测试,服务是基于spring cloud F版的,分为server和client,调用方式为FeignClient。
测试工具为jmeter。
结果发现,并发线程数较多(>40)时,持续一段时间后,请求总数差不多达到100万时,开始出现请求失败。这个错误比例在10%~30%之间。
看日志,发现错误有两种:
一种是ribbon报找不到目标服务,错误信息如下:
Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: halo-framework-example-server
at com.netflix.loadbalancer.LoadBalancerContext.getServerFromLoadBalancer(LoadBalancerContext.java:483)
at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:184)
at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180)
at rx.Observable.unsafeSubscribe(Observable.java:10327)
at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94)
at rx.internal.operators.OnSubscribeConcatMap.