Package reuseport provides TCP net.Listener with SO_REUSEPORT support.
SO_REUSEPORT allows linear scaling server performance on multi-CPU servers. See https://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1/ for more details :)
The package is based on https://github.com/kavu/go_reuseport .
Listen returns TCP listener with SO_REUSEPORT option set.
The returned listener tries enabling the following TCP options, which usually have positive impact on performance:
- TCP_DEFER_ACCEPT. This option expects that the server reads from accepted
connections before writing to them.
- TCP_FASTOPEN. See https://lwn.net/Articles/508865/ for details.
Use https://github.com/valyala/tcplisten if you want customizing these options.
Only tcp4 and tcp6 networks are supported.
ErrNoReusePort error is returned if the system doesn't support SO_REUSEPORT.