在文章之前先看两张图片,试着去理解一下Swoole Server运行流程和进程/线程结构.
运行流程图
进程/线程结构图
为了能更好的理解Swoole Server 的运行流程,下面我们创一个简单的实例server-process.php配合上面的图片进行讲解。
然后执行 ps 命令查看:
排除掉 grep 那条,一共有5条。
相比Master-Worker模式,swoole 的进程模型可以用Master-Manager-Worker来形容。即在Master-Worker的基础上又增加了一层Manager进程。
- 1个 Master 进程
- 1个 Manager 进程
- 2个 Worker 进程
- 1个 Task 进程
Swoole 是一个多进程模式的框架(可以类比Nginx的进程模型),当启动一个Swoole应用时,一共会创建2 + n + m个进程,其中n为 Worker 进程数,m为TaskWorker进程数,2为一个 Master 进程和一个 Manager 进程,它们之间的关系如下图所示。
其中,Master进程为主进程,该进程会创建Manager进程、Reactor线程等工作进/线程。
- Reactor线程实际运行epoll实例,用于accept客户端连接以及接收客户端数据;
- Manager进程为管理进程,该进程的作用是创建、管理所有的Worker进程和TaskWorker进程。