SO_REUSEPORT 多个server进程同时监听一个unix socket文件
nginx配置大致如下: upstream webserver { server unix:/var/3w/9101.sock server unix:/var/3w/9102.sock server unix:/var/3w/9103.sock server unix:/var/3w/9104.sock }
多个进程绑定相同端口的实现分析[Google Patch]
Google REUSEPORT 新特性,支持多个进程或者线程绑定到相同的 IP 和端口,以提高 server 的性能。
PrintStack
runtime/debug 库可以把调用堆栈打出来 package main import ( “fmt” “runtime/debug” ) func test3() { fmt.Printf(“%s”, debug.Stack()) debug.PrintStack() } Stack trace是指堆栈回溯信息,在当前时间,以当前方法的执行点开始,回溯调用它的方法的方法的执行点,然后继续回溯,这样就可以跟踪整个方法的调用,大家比较熟悉的是JDK所带的jstack工具,可以把Java的所有线程的stack trace都打印出来。 异常退出情况下输出stacktrace 通过panic 如果应用中有没recover的panic,或者应用在运行的时候出现运行时的异常,那么程序自动会将当前的goroutine的stack trace打印出来。