4 ms·
I am interested in the nonblocking and parallelism of modern server architectures. I am curious what server architecture leads to the best performance. There w
by samsquire 4y ago
I am interested in the nonblocking and parallelism of modern server architectures.
I am curious what server architecture leads to the best performance. There was an interesting post the last few days about epoll being broken due to thundering herd.
My understanding is Apache is a forking web server whereas Nginx is an epoll event looped.
I wrote an epoll echo server that multiplexes multiple connections to threads and uses a multiconsumer multiproducer RingBuffer to send sockets to different threads.
https://GitHub.com/samsquire/epoll-server https://GitHub.com/samsquire/epoll-server
My plan is to also parallelise send() and recv() on different threads for sending and receiving in parallel with different threads.
I am yet to use NIO in Java but I've heard Netty is high performance.
I would like to use io_uring for maximum performance.
One of my hobbies is trying to build a multithreaded architecture that can support full parallelism and scale with hardware.
Nodejs and python rely on process based parallelism but C, Rust, Java and C# can provide real parallelism. I work on various multithreaded problems on my GitHub.
I am yet to add network support to the algorithms in this repository.
https://GitHub.com/samsquire/multiversion-concurrency-control https://GitHub.com/samsquire/multiversion-concurrency-contro...