docker-compose build
docker-compose up {dotnet|fastify}
Important to use
docker-compose
and notdocker compose
. In my casedocker compose
was ignoring cpu limits messing up the benchmarks Your mileage may vary
You can check in real time how much memory and cpu is consumed by the containers
docker stats $( docker ps --format '{{ .Names }}' )
autocannon -c 100 -d 30 -p 10 localhost:3000
┌─────────┬───────┬───────┬───────┬───────┬──────────┬──────────┬────────┐
│ Stat │ 2.5% │ 50% │ 97.5% │ 99% │ Avg │ Stdev │ Max │
├─────────┼───────┼───────┼───────┼───────┼──────────┼──────────┼────────┤
│ Latency │ 10 ms │ 21 ms │ 85 ms │ 91 ms │ 37.89 ms │ 26.77 ms │ 115 ms │
└─────────┴───────┴───────┴───────┴───────┴──────────┴──────────┴────────┘
┌───────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
│ Stat │ 1% │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │
├───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ Req/Sec │ 22927 │ 22927 │ 26191 │ 29023 │ 26065.6 │ 1534.87 │ 22927 │
├───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ Bytes/Sec │ 4.04 MB │ 4.04 MB │ 4.61 MB │ 5.11 MB │ 4.59 MB │ 270 kB │ 4.04 MB │
└───────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
783k requests in 30.06s, 138 MB read
By old I mean with controllers
┌─────────┬───────┬───────┬────────┬────────┬──────────┬──────────┬────────┐
│ Stat │ 2.5% │ 50% │ 97.5% │ 99% │ Avg │ Stdev │ Max │
├─────────┼───────┼───────┼────────┼────────┼──────────┼──────────┼────────┤
│ Latency │ 19 ms │ 81 ms │ 106 ms │ 110 ms │ 69.26 ms │ 27.59 ms │ 149 ms │
└─────────┴───────┴───────┴────────┴────────┴──────────┴──────────┴────────┘
┌───────────┬─────────┬─────────┬─────────┬─────────┬──────────┬────────┬─────────┐
│ Stat │ 1% │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │
├───────────┼─────────┼─────────┼─────────┼─────────┼──────────┼────────┼─────────┤
│ Req/Sec │ 12879 │ 12879 │ 14279 │ 16175 │ 14319.47 │ 789.44 │ 12874 │
├───────────┼─────────┼─────────┼─────────┼─────────┼──────────┼────────┼─────────┤
│ Bytes/Sec │ 2.27 MB │ 2.27 MB │ 2.51 MB │ 2.85 MB │ 2.52 MB │ 139 kB │ 2.27 MB │
└───────────┴─────────┴─────────┴─────────┴─────────┴──────────┴────────┴─────────┘
431k requests in 30.06s, 75.6 MB read
Running 30s test @ http://localhost:3002
┌─────────┬───────┬────────┬────────┬────────┬───────────┬──────────┬─────────┐
│ Stat │ 2.5% │ 50% │ 97.5% │ 99% │ Avg │ Stdev │ Max │
├─────────┼───────┼────────┼────────┼────────┼───────────┼──────────┼─────────┤
│ Latency │ 92 ms │ 112 ms │ 185 ms │ 210 ms │ 122.72 ms │ 37.97 ms │ 1831 ms │
└─────────┴───────┴────────┴────────┴────────┴───────────┴──────────┴─────────┘
┌───────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
│ Stat │ 1% │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │
├───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ Req/Sec │ 7155 │ 7155 │ 8151 │ 9127 │ 8099.8 │ 475.85 │ 7155 │
├───────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ Bytes/Sec │ 1.35 MB │ 1.35 MB │ 1.53 MB │ 1.72 MB │ 1.52 MB │ 89.5 kB │ 1.35 MB │
└───────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
244k requests in 30.04s, 45.7 MB read
┌─────────┬────────┬────────┬────────┬────────┬───────────┬──────────┬────────┐
│ Stat │ 2.5% │ 50% │ 97.5% │ 99% │ Avg │ Stdev │ Max │
├─────────┼────────┼────────┼────────┼────────┼───────────┼──────────┼────────┤
│ Latency │ 414 ms │ 516 ms │ 599 ms │ 630 ms │ 521.16 ms │ 57.49 ms │ 680 ms │
└─────────┴────────┴────────┴────────┴────────┴───────────┴──────────┴────────┘
┌───────────┬────────┬────────┬────────┬────────┬────────┬─────────┬────────┐
│ Stat │ 1% │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │
├───────────┼────────┼────────┼────────┼────────┼────────┼─────────┼────────┤
│ Req/Sec │ 1739 │ 1739 │ 1872 │ 2115 │ 1899.1 │ 98.69 │ 1739 │
├───────────┼────────┼────────┼────────┼────────┼────────┼─────────┼────────┤
│ Bytes/Sec │ 438 kB │ 438 kB │ 472 kB │ 533 kB │ 479 kB │ 24.9 kB │ 438 kB │
└───────────┴────────┴────────┴────────┴────────┴────────┴─────────┴────────┘
58k requests in 30.04s, 14.4 MB read
┌─────────┬──────┬───────┬────────┬────────┬───────────┬───────────┬─────────┐
│ Stat │ 2.5% │ 50% │ 97.5% │ 99% │ Avg │ Stdev │ Max │
├─────────┼──────┼───────┼────────┼────────┼───────────┼───────────┼─────────┤
│ Latency │ 1 ms │ 91 ms │ 804 ms │ 994 ms │ 179.36 ms │ 232.31 ms │ 2510 ms │
└─────────┴──────┴───────┴────────┴────────┴───────────┴───────────┴─────────┘
┌───────────┬────────┬────────┬────────┬────────┬─────────┬─────────┬────────┐
│ Stat │ 1% │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │
├───────────┼────────┼────────┼────────┼────────┼─────────┼─────────┼────────┤
│ Req/Sec │ 4999 │ 4999 │ 5415 │ 6247 │ 5496.67 │ 309.64 │ 4999 │
├───────────┼────────┼────────┼────────┼────────┼─────────┼─────────┼────────┤
│ Bytes/Sec │ 700 kB │ 700 kB │ 758 kB │ 874 kB │ 769 kB │ 43.4 kB │ 700 kB │
└───────────┴────────┴────────┴────────┴────────┴─────────┴─────────┴────────┘
166k requests in 30.06s, 23.1 MB read
┌─────────┬────────┬────────┬────────┬────────┬───────────┬──────────┬────────┐
│ Stat │ 2.5% │ 50% │ 97.5% │ 99% │ Avg │ Stdev │ Max │
├─────────┼────────┼────────┼────────┼────────┼───────────┼──────────┼────────┤
│ Latency │ 102 ms │ 128 ms │ 199 ms │ 205 ms │ 140.54 ms │ 29.88 ms │ 260 ms │
└─────────┴────────┴────────┴────────┴────────┴───────────┴──────────┴────────┘
┌───────────┬────────┬────────┬─────────┬─────────┬─────────┬────────┬─────────┐
│ Stat │ 1% │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │
├───────────┼────────┼────────┼─────────┼─────────┼─────────┼────────┼─────────┤
│ Req/Sec │ 6155 │ 6155 │ 7059 │ 7975 │ 7079.87 │ 414.15 │ 6152 │
├───────────┼────────┼────────┼─────────┼─────────┼─────────┼────────┼─────────┤
│ Bytes/Sec │ 1.5 MB │ 1.5 MB │ 1.72 MB │ 1.94 MB │ 1.72 MB │ 101 kB │ 1.49 MB │
└───────────┴────────┴────────┴─────────┴─────────┴─────────┴────────┴─────────┘
213k requests in 30.03s, 51.6 MB read
┌─────────┬──────┬───────┬────────┬────────┬───────────┬───────────┬─────────┐
│ Stat │ 2.5% │ 50% │ 97.5% │ 99% │ Avg │ Stdev │ Max │
├─────────┼──────┼───────┼────────┼────────┼───────────┼───────────┼─────────┤
│ Latency │ 1 ms │ 89 ms │ 610 ms │ 797 ms │ 152.06 ms │ 182.89 ms │ 1917 ms │
└─────────┴──────┴───────┴────────┴────────┴───────────┴───────────┴─────────┘
┌───────────┬────────┬────────┬────────┬────────┬────────┬─────────┬────────┐
│ Stat │ 1% │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │
├───────────┼────────┼────────┼────────┼────────┼────────┼─────────┼────────┤
│ Req/Sec │ 5927 │ 5927 │ 6463 │ 7415 │ 6511.2 │ 350.15 │ 5926 │
├───────────┼────────┼────────┼────────┼────────┼────────┼─────────┼────────┤
│ Bytes/Sec │ 794 kB │ 794 kB │ 866 kB │ 993 kB │ 872 kB │ 46.9 kB │ 794 kB │
└───────────┴────────┴────────┴────────┴────────┴────────┴─────────┴────────┘
196k requests in 30.04s, 26.2 MB read
┌─────────┬──────┬───────┬───────┬───────┬──────────┬──────────┬────────┐
│ Stat │ 2.5% │ 50% │ 97.5% │ 99% │ Avg │ Stdev │ Max │
├─────────┼──────┼───────┼───────┼───────┼──────────┼──────────┼────────┤
│ Latency │ 5 ms │ 13 ms │ 73 ms │ 79 ms │ 24.85 ms │ 21.97 ms │ 130 ms │
└─────────┴──────┴───────┴───────┴───────┴──────────┴──────────┴────────┘
┌───────────┬─────────┬─────────┬─────────┬───────┬──────────┬─────────┬─────────┐
│ Stat │ 1% │ 2.5% │ 50% │ 97.5% │ Avg │ Stdev │ Min │
├───────────┼─────────┼─────────┼─────────┼───────┼──────────┼─────────┼─────────┤
│ Req/Sec │ 34047 │ 34047 │ 39903 │ 44831 │ 39413.34 │ 2456.15 │ 34022 │
├───────────┼─────────┼─────────┼─────────┼───────┼──────────┼─────────┼─────────┤
│ Bytes/Sec │ 4.56 MB │ 4.56 MB │ 5.35 MB │ 6 MB │ 5.28 MB │ 329 kB │ 4.56 MB │
└───────────┴─────────┴─────────┴─────────┴───────┴──────────┴─────────┴─────────┘
1183k requests in 30.05s, 158 MB read