06

HTTP Server (C++)

Systems ProgrammingC++HTTP ServerSockets & EpollConcurrency / Thread PoolBenchmarking

This project builds an HTTP server from the ground up using POSIX sockets, without relying on a web framework to handle the networking layer. The goal was to explore how different concurrency models behave when the server has to manage many simultaneous connections.

One implementation uses a thread pool, where the main thread accepts connections and dispatches requests to worker threads. The second uses non-blocking sockets with Linux epoll and a single event-driven loop, allowing the server to monitor many connections without assigning a dedicated thread to each client.

The repository also includes a client, shared request-handling utilities, sample content, and wrk-based benchmarking. Under the recorded benchmark workload, the epoll implementation reached roughly 34,000 requests per second compared with roughly 4,600 requests per second for the thread-pool implementation, making the project a practical comparison of thread-based and event-driven server design.