HttpArena
Frameworks

ktor

Flagship · Kotlin · engine: netty · standard configuration

JetBrains Ktor 3.x on Netty with Kotlin coroutines, kotlinx.serialization, JDK 21.

Composite rank

Each profile of a family is worth 100 to the entry that leads it, and the composite is the sum over the family. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.

FamilyRankComposite
HTTP/1.117 of 71434
HTTP/29 of 1654
WebSocket14 of 2038

Every result

Alpha Round, 39 runs. Requests per second is the best of three; latency, CPU and memory come from that run.

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline512817,316625us1.39ms6273.8%5.0GiB
ConnectionBaseline4,096822,0624.97ms9.82ms6154.9%9.5GiB
ConnectionPipelined512619,92613.23ms59.70ms4584.1%10.6GiB
ConnectionPipelined4,096584,867110.57ms138.90ms4725.5%17.9GiB
ConnectionShort-lived512656,997771us4.71ms6284.7%4.7GiB
ConnectionShort-lived4,096665,6916.12ms49.70ms6284.1%4.4GiB
WorkloadJSON4,096395,25010.11ms34.60ms4723.0%9.9GiB
WorkloadJSON Comp512182,8882.78ms16.50ms6268.6%4.9GiB
WorkloadJSON Comp4,096193,02021.17ms82.30ms6158.4%5.2GiB
WorkloadJSON Comp16,384189,51184.68ms260.80ms6028.2%11.2GiB
WorkloadJSON TLS4,096391,97811.92ms11.92ms4946.9%9.3GiB
WorkloadUpload321,52920.84ms110.60ms3240.4%1.4GiB
WorkloadUpload2561,833134.47ms714.00ms4740.0%1.5GiB
WorkloadStatic1,024284,5954.06ms4.06ms6115.3%4.3GiB
WorkloadStatic4,096282,15414.74ms14.74ms5987.3%4.4GiB
WorkloadStatic6,800273,80024.78ms24.78ms6022.8%5.1GiB
WorkloadStatic TLS1,024204,7098.18ms245.95ms6407.0%3.8GiB
WorkloadStatic TLS4,096238,34018.57ms341.06ms6060.9%5.0GiB
WorkloadStatic TLS6,800226,85631.52ms367.08ms5788.5%6.0GiB
DatabaseAsync DB1,024103,9519.45ms13.60ms4993.8%9.6GiB
DatabaseCRUD4,096172,55123.71ms41.50ms5013.2%5.6GiB
DatabaseFortunes1,02451,03019.15ms41.20ms5349.4%7.5GiB
Multi-endpointAPI-425628,3228.09ms30.50ms415.1%771MiB
Multi-endpointAPI-161,02471,52512.96ms47.10ms1771.6%2.0GiB
HTTP/2Baseline256558,48544.86ms44.86ms5918.6%29.8GiB
HTTP/2Baseline1,024541,980184.02ms184.02ms5904.2%30.0GiB
HTTP/2Static256189,73741.76ms41.76ms6023.8%16.0GiB
HTTP/2Static1,024180,206173.56ms173.56ms5728.0%24.7GiB
HTTP/2Baseline (h2c)256412,24567.92ms67.92ms5465.5%30.7GiB
HTTP/2Baseline (h2c)1,024402,964210.39ms210.39ms5790.3%31.1GiB
HTTP/2Baseline (h2c)4,096279,9911.37s1.37s5175.2%31.2GiB
HTTP/2JSON (h2c)1,024314,284101.21ms101.21ms4441.9%28.2GiB
HTTP/2JSON (h2c)4,096282,755426.56ms426.56ms4531.9%29.9GiB
WebSocketEcho5121,021,279500us1.13ms3426.5%2.5GiB
WebSocketEcho4,096980,0194.15ms8.98ms3411.2%6.6GiB
WebSocketEcho16,384645,40024.58ms42.30ms3396.7%14.8GiB
WebSocketEcho Pipelined51211,215,557729us2.13ms3370.7%10.8GiB
WebSocketEcho Pipelined4,09610,647,6346.12ms15.10ms3385.1%13.0GiB
WebSocketEcho Pipelined16,3848,879,79028.61ms61.10ms3418.8%20.7GiB

How the benchmark is run · The machine · Add or fix an entry