jeudi 17 août 2017

Async API giving worse performance

Interesting, I would think have 255 concurrent users, an async API would have better performance. Here are 2 of my endpoints in my Spring server:

@RequestMapping("/async")
public CompletableFuture<String> g(){
    CompletableFuture<String> f = new CompletableFuture<>();
    f.runAsync(() -> {
        try {
            Thread.sleep(500);
            f.complete("Finished");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    });

    return f;
}

@RequestMapping("/sync")
public String h() throws InterruptedException {
    Thread.sleep(500);
    return "Finished";
}

In the /async it runs it on a different thread. I am using Siege for load testing as follows:

siege http://localhost:8080/sync --concurrent=255 --time=10S > /dev/null

For the async endpoint, I got a transaction number of 27 hits

For the sync endpoint, I got a transaction number of 1531 hits

So why is this? Why isnt the async endpoint able to handle more transactions?

Aucun commentaire:

Enregistrer un commentaire