php-fpm

Posted by 夏泽民

https://github.com/xiazemin/php7-internal/blob/master/1/fpm.md



codis

Posted by 夏泽民

https://github.com/CodisLabs/codis



SO_REUSEPORT 多个server进程同时监听一个unix socket文件

Posted by 夏泽民

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来设置套接字属性的


多个进程绑定相同端口的实现分析[Google Patch]

Posted by 夏泽民

Google REUSEPORT 新特性,支持多个进程或者线程绑定到相同的 IP 和端口,以提高 server 的性能。

  1. 设计思路 该特性实现了 IPv4/IPv6 下 TCP/UDP 协议的支持, 已经集成到 kernel 3.9 中。


PrintStack

Posted by 夏泽民

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打印出来。



Search

Popular posts

Anything in here will be replaced on browsers that support the canvas element

Recent posts

This blog is maintained by 夏泽民

Get in touch with me at 465474307@qq.com

Subscribe to our mailing list

* indicates required