Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
1m Go Tcp Server | 1,237 | 2 years ago | 2 | April 15, 2021 | 3 | Go | ||||
benchmarks for implementation of servers which support 1 million connections | ||||||||||
Benchmarks | 1,092 | 2 days ago | 26 | other | C# | |||||
Benchmarks for ASP.NET Core | ||||||||||
Agoo | 832 | 11 | 1 | 2 months ago | 60 | June 21, 2022 | 3 | mit | C | |
A High Performance HTTP Server for Ruby | ||||||||||
Wsdemo | 409 | 10 years ago | 6 | other | Erlang | |||||
A Cowboy Websocket demo | ||||||||||
Simps | 395 | 2 | a year ago | 6 | October 15, 2020 | 2 | apache-2.0 | PHP | ||
🚀 A simple, lightweight and high-performance PHP coroutine framework. | ||||||||||
Websocket Shootout | 360 | 3 years ago | 9 | mit | JavaScript | |||||
A comparison of websocket servers in multiple languages and frameworks | ||||||||||
Warp | 351 | 11 days ago | 62 | December 02, 2022 | 5 | agpl-3.0 | Go | |||
S3 benchmarking tool | ||||||||||
Clojure Web Server Benchmarks | 343 | 7 years ago | 5 | Clojure | ||||||
Clojure web server benchmarks | ||||||||||
Gortcd | 324 | 3 years ago | 95 | November 01, 2020 | 10 | bsd-3-clause | Go | |||
Fast TURN and STUN server: cross-platform, hot reload, flexible config | ||||||||||
Perfops Cli | 282 | 2 months ago | 41 | November 18, 2022 | 4 | Go | ||||
A simple command line tool to interact with hundreds of servers around the world. |
inspired by handling 1M websockets connections in Go
goroutines per connection
epoll
epoll
multiple epoll
to manage connections in clientmultiple epoll
to manage connections in serverprefork
style of apache to implement serverReactor
pattern to implement multiple event loopsgoroutines per connection
server for test throughtputs and latencymultiple epoll
servergoroutines per connection
servermultiple epoll
servergoroutines per connection
serverE5-2630 V4
cpus, total 20 cores, 40 logicial cores.tune the linux:
sysctl -w fs.file-max=2000500
sysctl -w fs.nr_open=2000500
sysctl -w net.nf_conntrack_max=2000500
ulimit -n 2000500
sysctl -w net.ipv4.tcp_tw_recycle=1
sysctl -w net.ipv4.tcp_tw_reuse=1
client sends the next request only when it has received the response. it has not used the pipeline
style to test.
throughputs (tps) | latency | |
---|---|---|
goroutine-per-conn | 202830 | 4.9s |
single epoll(both server and client) | 42495 | 23s |
single epoll server | 42402 | 0.8s |
multiple epoll server | 197814 | 0.9s |
prefork | 444415 | 1.5s |
workerpool | 190022 | 0.3s |
中文介绍: