Posted by
夏泽民
May 28, 2019
https://github.com/xiazemin/php7-internal/blob/master/1/fpm.md
Posted by
夏泽民
May 28, 2019
https://github.com/CodisLabs/codis
Posted by
夏泽民
May 28, 2019
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
}
- 多个server 进程,共同对应一个unix socket file,前面走nginx代理
启动配置大致如下:
python webserver –app_sockfile=/var/3w/webserver.sock
python webserver –app_sockfile=/var/3w/webserver.sock
python webserver –app_sockfile=/var/3w/webserver.sock
python webserver –app_sockfile=/var/3w/webserver.sock
nginx配置大致如下:
upstream webserver {
server unix:/var/3w/webserver.sock
}
reuseaddr是用来去掉2MSL的,MSL请看tcp协议,简单来讲,当某个绑定了套接字127.0.0.1:8080的进程stop后,假如没有使用reuseaddr,该进程不能立刻重新运行,反之,则可以立刻running。 reuseport,也是setsockopt来设置套接字属性的
Posted by
夏泽民
May 28, 2019
Google REUSEPORT 新特性,支持多个进程或者线程绑定到相同的 IP 和端口,以提高 server 的性能。
- 设计思路
该特性实现了 IPv4/IPv6 下 TCP/UDP 协议的支持, 已经集成到 kernel 3.9 中。
Posted by
夏泽民
May 28, 2019
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打印出来。