Netpoll is a high-performance non-blocking I/O networking framework designed for RPC scenarios in Go.
The problem Netpoll addresses is that Go's standard library net package uses blocking I/O APIs, forcing RPC frameworks to adopt a One Conn One Goroutine design pattern. This approach creates excessive context-switching overhead under high concurrency and makes it difficult to build efficient connection pools since the net.Conn API lacks a way to check if a connection is alive. Netpoll solves this by providing a non-blocking I/O framework that reduces goroutine overhead and includes an IsActive method for connection health checking. The tool draws design inspiration from evio and netty, offering features like LinkBuffer for zero-copy streaming reads and writes, a high-performance goroutine pool, and efficient memory reuse through mcache.
Netpoll is most suitable for teams building RPC frameworks and microservices in Go where connection pooling and high concurrency are critical. It should replace the standard net library in RPC-focused scenarios. The README distinguishes it from similar projects like evio and gnet by noting that those libraries target different use cases such as Redis or HAProxy, whereas Netpoll is purpose-built for RPC architectures. The tool supports TCP and Unix Domain Sockets on Linux and macOS but does not support Windows. The project has been used as the foundation for ByteDance's Kitex RPC framework and Hertz HTTP framework.
Development activity shows consistent engagement with the codebase through regular updates and maintenance. The project maintains active documentation including guides, design references, and explanations of implementation choices. Benchmark tracking is conducted through a dedicated netpoll-benchmark project to monitor performance across different conditions, with additional benchmarks available through related Kitex and Hertz projects.