by kavu

Brings SO_REUSEPORT into your Go server

465 Stars 63 Forks Last release: Not found MIT License 63 Commits 6 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


Build Status codecov GoDoc

GO_REUSEPORT is a little expirement to create a

that supports SO_REUSEPORT socket option.

For now, Darwin and Linux (from 3.9) systems are supported. I'll be pleased if you'll test other systems and tell me the results. documentation on godoc.org.


package main

import ( "fmt" "html" "net/http" "os" "runtime" "github.com/kavu/go_reuseport" )

func main() { listener, err := reuseport.Listen("tcp", "localhost:8881") if err != nil { panic(err) } defer listener.Close()

server := &http.Server{} http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Println(os.Getgid()) fmt.Fprintf(w, "Hello, %q\n", html.EscapeString(r.URL.Path)) })

panic(server.Serve(listener)) }

Now you can run several instances of this tiny server without

Address already in use


Inspired by Artur Siekielski post about


We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.