How to get performance on POST InputStream using Quarkus #46677
Replies: 5 comments 18 replies
-
It’s definitely worth an investigation. Could you add more information to the README on how we can reproduce the issue easily from the command line? Also if you are interested in digging by yourself, the following guide is usually helpful: https://github.com/quarkusio/quarkus/blob/main/TROUBLESHOOTING.md |
Beta Was this translation helpful? Give feedback.
-
@geoand this is about Quarkus REST so I thought it might be of interest to you. |
Beta Was this translation helpful? Give feedback.
-
I am fairly confident that the difference is due to the different chunk size used. In Quarkus the chunk size is |
Beta Was this translation helpful? Give feedback.
-
I changed all 65536 to 2048 everywhere.
8192 with same context:
65536 with same context:
I don't know about this 2048 value (not seen in configuration but you know the code so...). |
Beta Was this translation helpful? Give feedback.
-
Mind trying #46739? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
In various project, we need to get or post an InputStream (not a file) which could be huge (more than 10 GB). Those files are streamed from/to another service (for instance a S3 service) on the server receiving this GET or POST request.
As most of our project are running in Pods (conatiners), it seems to us that of course Memory is not the option and using local disk as "buffer" is not a valid option.
Using Quarkus, we are able to do both ways (GET and POST), but POST is somehow too slow:
Those times are taken from an example here: https://github.com/fredericBregier/TestInputStreamQuarkus
If we use Netty for the POST, the times are quite better: (same Quarkus Server behind, just the client changes)
The example project shows the differences, but we can't find a way to configure Quarkus in order to use the default HTTP Quarkus client to reach or approach the Netty native performances. Of course, we understand that a high level client has its own footprint, even if it is using Netty under the surface (Quarkus Client => Vertx => Netty), but it is there a factor of 10.
Have you any idea?
Beta Was this translation helpful? Give feedback.
All reactions