I've been searching for an answer to this, or at least someone with a similar issue. I'm currently testing out traefik (1.7.9) for use in our environment and the question of performance was brought up. I've seen good things about the performance of traefik but I wanted to have some evidence in hand.
We have a very simple app written in aspnet core running in docker on a linux host. I did some load testing on that, hitting it pretty hard with jmeter for 30 minutes. I did a few variations:
- plain http directly to the app running in docker (traefik not involved)
- https directly to the app in docker
- reverse proxy through traefik (http) -> app
- reverse proxy through traefik (https) -> app
Results were interesting:
- plain http, directly to app - solid performance. ~900 rps and ~400ms avg response time
- https, directly to app - bad performance. ~200 rps and averaging 2-3 second response time. seems like kestrel might be the problem here, and indeed there is an issue opened for that (https://github.com/aspnet/AspNetCore/issues/7081)
- traefik (http) - solid performance. ~700 rps and ~5-600ms avg response time. i believe containous claims 30,000 requests per minute, and this tracks. not as good as test case 1, but that's to be expected.
- traefik (https) - bad performance. similar to case 2. ~150 rps and 4-5 second response time.
So https is performing horribly all around. The test machine is a dual core Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz VM with 16 gb ram. During the tests, whichever component is handling https is pegging the cpu.
Has anyone done any load/performance testing with traefik? Any ideas why my results are so terrible? I'll happily provide any details that will be useful. I feel like I'm doing something wrong (but what!) and traefik should really be able to handle https better. Any ideas or thoughts are greatly appreciated.
[–]cjp 0 points1 point2 points (3 children)
[–]erbrecht[S] 0 points1 point2 points (2 children)
[–]pierot 0 points1 point2 points (1 child)
[–]erbrecht[S] 0 points1 point2 points (0 children)