package reuseport
import "github.com/valyala/fasthttp/reuseport"
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 .
Index ¶
Examples ¶
Functions ¶
func Listen ¶
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.
Only tcp4 and tcp6 networks are supported.
ErrNoReusePort error is returned if the system doesn't support SO_REUSEPORT.
Code:play
Example¶
package main
import (
"fmt"
"log"
"github.com/valyala/fasthttp"
"github.com/valyala/fasthttp/reuseport"
)
func main() {
ln, err := reuseport.Listen("tcp4", "localhost:12345")
if err != nil {
log.Fatalf("error in reuseport listener: %v", err)
}
if err = fasthttp.Serve(ln, requestHandler); err != nil {
log.Fatalf("error in fasthttp Server: %v", err)
}
}
func requestHandler(ctx *fasthttp.RequestCtx) {
fmt.Fprintf(ctx, "Hello, world!")
}
Types ¶
type ErrNoReusePort ¶
type ErrNoReusePort struct {
// contains filtered or unexported fields
}
ErrNoReusePort is returned if the OS doesn't support SO_REUSEPORT.
func (*ErrNoReusePort) Error ¶
func (e *ErrNoReusePort) Error() string
Error implements error interface.
Source Files ¶
reuseport.go reuseport_error.go
- Version
- v1.62.0 (latest)
- Published
- May 7, 2025
- Platform
- linux/amd64
- Imports
- 4 packages
- Last checked
- 3 weeks ago –
Tools for package owners.