Intel® Ethernet 800 Series Application Device Queues (ADQ)
Software Developer's Guide
Default Design
By default, NGINX server has the following design:
- A multi-threaded process creates N threads.
- Each thread creates an epoll object.
- Each thread creates a listen socket that uses
SO_REUSEPORT . - Each thread calls an accept connection syscall and waits to be woken up to handle an incoming connection.
- The kernel assigns the accepted connection to a thread's epoll object via JHASH-based selection. This is calculated using
src IP + dest IP + src port + dest port . - Each thread processes an epoll object: