高效原因
I/O多路复用 epoll
- I/O多路复用
- I/O流需要进行文件处理的时候,会获取文件的文件描述符
- 如果文件描述符没有就绪,如果就绪,会通知 os 进行操作
- 上面的操作用一个线程就可以实现,复用的是同一个线程
- I/O多路复用实现
- select
- 监视的文件描述符数量存在限制 1024
- 线性扫描效率低下
- epoll
- 文件描述符就绪时,采用系统的回调函数将文件描述符放入,效率高
- 最大连接无限制
- select
- I/O多路复用
cpu 亲和
- worker process 和 cpu 核心绑定
- 减少 cpu 的 cache miss
sendfile
信号量
kill -l
- 可以查看 | 名称 | 指令 | | —- | —- | | SIGCHID | -17 | | SIGQUIT(ctrl+z) | -3 | | SIGINT(ctrl+c,仅仅处理前台程序) | -2 | | SIGTERM(kill 指令默认发送该信号,可能会被忽略) | -15 | | SIGKILL | -9 | | SIGHUP | -1 | | SIGUSR1 | -10 | | SIGUSR2 | -12 | | SIGWINCH | -28 |
master process
- 监控 worker 进程
- worker 进程挂掉,会发送 SIGCHLD
- 管理 worker 进程
- 接收信号
- SIGTERM,SIGINT
- SIGQUIT
- SIGHUP
- SIGUSER1
- SIGUSER2
- SIGWINCH
worker process
- 不推荐手动向其发送信号进行管理
- 接收信号
- SIGTERM, SIGINT
- SIGQUIT
- SIGUSER1
- SIGWINCH
命令行
- reload
- SIGHUP
- reopen
- SIGUSER1
- stop
- SIGTERM
- quit
- SIGSTOP