cloudwego/netpoll

A high-performance non-blocking I/O networking framework focusing on RPC scenarios.

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 40 minutes ago
Added to GitGenius on September 15th, 2026
Created on February 25th, 2021
Open Issues & Pull Requests: 8 (+0)
GitHub issues: Enabled
Number of forks: 505
Total Stargazers: 4,604 (+0)
Total Subscribers: 67 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 17.4 hours
Mean response time: 68.1 days
90th percentile: 54.8 days
Tracked items: 28

Most active contributors

Sign in to see contributor activity.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 3
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 70 days
Stale 30+ days: 2
Stale 90+ days: 1

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • TODO (1)
  • bug (1)
  • code analysis (1)
  • doing (1)
  • feature (1)
  • good first issue (1)
  • question (1)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

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.