Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance discussion about default openfeign client config #955

Closed
raizoor opened this issue Dec 14, 2023 · 2 comments
Closed

Performance discussion about default openfeign client config #955

raizoor opened this issue Dec 14, 2023 · 2 comments
Assignees

Comments

@raizoor
Copy link

raizoor commented Dec 14, 2023

Resume
Discussion about default client performance of spring-cloud-openfeign

Versions
Java 17
Springboot 2.7.18
spring-cloud-dependencies 2021.0.8

Scenario

During a performance tests in a microservice that contain a 3 feign clients, it was possible to saw a high GC usage (i.e. high cpu utilization as well) in two methods, as we can see at profiler image bellow

profiler-onlySpringCloudFeign

We have a high tps scenario here - 110tps. The situation was absolutely unstable and we has too much resources to handle with that.

After studying the issue I decided to use lib {io.github.openfeign:feign-httpclient:11.8} and do a new evaluation. To my surprise, we had a significant improvement in resource usage, as feign started using other classes and no longer generated as many objects, as shown bellow

springCloudFeign-httpClient

So, my question: Is this the expected behavior of the default implementation or is there something I did incorrectly, because we've a big difference here.

Code

I don't have a high customization clients, only a custom decoder and base64 auth, as bellow

@FeignClient(value = "...", url = "...",
        configuration = ClientConfig.class)
public interface .. {

    @PostMapping("..")
    SpecificObject post(
            @RequestHeader("..") Boolean ..,
            @RequestBody SpecificObject ..
    );
}

image

basicAuthInterceptor

@OlgaMaciaszek
Copy link
Collaborator

Hello @raizoor, the implementation that seems to be causing the issue is (Client.Default) is part of the OpenFeign/feign project and not Spring Cloud OpenFeign. Please create an issue there to start a discussion.

@raizoor
Copy link
Author

raizoor commented Dec 14, 2023

Thks @OlgaMaciaszek .
--> OpenFeign/feign#2267

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants