HttpArena
Frameworks

ktor-ghost

Flagship · Kotlin · engine: netty · tuned configuration

JetBrains Ktor 3.x on Netty with Kotlin coroutines, Ghost Serializer, 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.126 of 97491
HTTP/216 of 2960
WebSocket23 of 3238

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline512830,262616us1.34ms6404.1%10.7GiB
ConnectionBaseline4,096838,0394.90ms9.60ms6201.7%4.9GiB
ConnectionPipelined512590,00613.89ms51.20ms4645.7%9.1GiB
ConnectionPipelined4,096654,29799.47ms146.90ms4849.5%9.5GiB
ConnectionShort-lived512646,754783us4.89ms6255.2%4.7GiB
ConnectionShort-lived4,096655,8946.20ms54.10ms6025.3%4.9GiB
WorkloadJSON4,096657,7665.91ms29.70ms6362.7%4.8GiB
WorkloadJSON Comp512203,7332.49ms9.63ms6273.9%4.0GiB
WorkloadJSON Comp4,096217,40518.85ms42.30ms6244.1%4.5GiB
WorkloadJSON Comp16,384218,19974.08ms145.20ms6022.6%11.4GiB
WorkloadJSON TLS4,096607,9438.03ms266.87ms6059.8%6.0GiB
WorkloadUpload321,63719.48ms95.00ms3133.0%1.4GiB
WorkloadUpload2561,861133.49ms580.30ms4606.5%1.5GiB
WorkloadStatic1,024271,3894.95ms144.40ms6159.7%3.6GiB
WorkloadStatic4,096277,64214.98ms126.75ms6080.7%4.6GiB
WorkloadStatic6,800275,80325.03ms195.41ms6078.2%5.1GiB
WorkloadStatic TLS1,024191,7998.84ms183.27ms6430.3%3.3GiB
WorkloadStatic TLS4,096238,99518.50ms303.36ms6151.4%5.3GiB
WorkloadStatic TLS6,800229,30031.07ms382.26ms5873.5%5.8GiB
DatabaseAsync DB1,024113,5908.61ms11.20ms5318.7%12.2GiB
DatabaseCRUD4,096187,90521.80ms38.50ms5354.4%5.7GiB
DatabaseFortunes1,02449,99119.90ms43.10ms5612.1%11.9GiB
Multi-endpointAPI-425625,2719.43ms27.60ms411.2%613MiB
Multi-endpointAPI-161,02487,73410.38ms52.40ms1764.4%1.3GiB
HTTP/2Baseline256515,66446.06ms282.20ms5757.4%31.1GiB
HTTP/2Baseline1,024495,732193.95ms768.20ms5862.3%30.1GiB
HTTP/2Static256196,78040.90ms299.14ms5881.4%23.3GiB
HTTP/2Static1,024184,792170.18ms530.61ms5720.6%24.2GiB
HTTP/2Baseline (h2c)256391,10354.35ms359.42ms5639.1%30.4GiB
HTTP/2Baseline (h2c)1,024362,388291.47ms1.95s5652.8%30.9GiB
HTTP/2Baseline (h2c)4,096392,445868.48ms2.26s5584.7%31.4GiB
HTTP/2JSON (h2c)1,024424,46171.66ms319.32ms5873.4%29.4GiB
HTTP/2JSON (h2c)4,096389,919304.94ms1.05s5765.4%29.5GiB
WebSocketEcho5121,021,563500us1.33ms3426.9%2.5GiB
WebSocketEcho4,096973,0724.16ms9.46ms3435.1%3.4GiB
WebSocketEcho16,384676,21623.65ms42.90ms3283.8%15.7GiB
WebSocketEcho Pipelined51211,253,401727us1.93ms3375.7%9.8GiB
WebSocketEcho Pipelined4,09611,090,8715.89ms14.40ms3425.7%13.7GiB
WebSocketEcho Pipelined16,3848,286,83630.72ms69.70ms3335.9%20.9GiB

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