restlet / restlet-framework-java

The first REST API framework for Java
https://restlet.talend.com
Other
654 stars 284 forks source link

Performance drops with restlet sync vs async client handler (report from Apache Camel) #996

Open davsclaus opened 9 years ago

davsclaus commented 9 years ago

Sorry for creating a ticket here at github, but this is very fast and easy to get in touch.

We got reports at Apache Camel that upgrading from restlet 2.1.x to 2.2.x has caused performance drawbacks from users.

We haven't had time to look into this. But just wanted the heads up here.

http://camel.465427.n5.nabble.com/Delayed-request-processing-with-Camel-Restlet-2-14-0-td5759915.html

I suspect the issue is that when we upgraded to Restlet 2.2.x we also enabled the async routing support from restlet by default. Where as that is disabled (not in use) in the older Camel version that are using restlet 2.1.x

The new version with async (that has performance drops) https://github.com/apache/camel/blob/master/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java#L87

The old version with sync (that performs well) https://github.com/apache/camel/blob/camel-2.13.x/components/camel-restlet/src/main/java/org/apache/camel/component/restlet/RestletProducer.java#L89

Wonder if the restlet community is using the async variation? Or maybe there is some configuration settings that we have not set correct in Apache Camel or by the end users?

glaforge commented 9 years ago

Hi Claus! Out of curiosity, did you further investigate this on your side? Have you ended up switching back to sync instead of async?

davsclaus commented 9 years ago

@glaforge I haven't heard any word from the restlet guys.

What we did at Apache Camel was adding a note on our docs, and making it easy to turn on sync mode by default on the component level. http://camel.apache.org/restlet

We have in the past before encountered a severe issue with the restlet async api - where it would not issue a callback under special use-case. But that has been fixed https://github.com/restlet/restlet-framework-java/issues/871

jlouvel commented 7 years ago

For version 3.0 of Restlet Framework, we are relying on Netty 4.1 which will bring much better async performance. Stay tuned...