Swoole 启动一个服务,开启了哪些进程和线程?

栏目: PHP · 发布时间: 4年前

内容简介:为了解决这个问题,咱们启动一个最简单的服务,一起看看究竟启动了哪些进程和线程?然后结合官网运行流程图,对每个进程和线程进行归类。服务启动后打印出当前 Swoole 版本 和 当前 CPU 核数。

概述

Swoole 启动一个服务,开启了哪些进程和线程?

为了解决这个问题,咱们启动一个最简单的服务,一起看看究竟启动了哪些进程和线程?

然后结合官网运行流程图,对每个进程和线程进行归类。

服务启动后打印出当前 Swoole 版本 和 当前 CPU 核数。

打印 Swoole 版本,是让大家可以下载这个版本 去运行代码。

打印 CPU 核数,是因为这个参数下面会用到。

废话不多说,直接看代码吧。

代码

serv.php

上面的代码简单说下,创建了一个 TCP 服务器,启动了 3 个 worker 进程, 3 个 task 进程,因为启用了 task 功能,所以必须注册 onTask、onFinish 2 个事件的回调函数。

咱们运行一下:

Swoole 启动一个服务,开启了哪些进程和线程?

使用 ps 查看下:

Swoole 启动一个服务,开启了哪些进程和线程?

16390 的父进程是 16389。

16393、16394、16395、16396、16397、16398 的父进程是 16390。

有没有发现,16391、16392 去哪啦?是不是很奇怪。

再用 pstree 查看下:

Swoole 启动一个服务,开启了哪些进程和线程?

出来了吧,16391、16392 是线程 与 16390 进程一个层级。

现在我们了解了,启动的这个服务使用了 8 个进程、2 个线程。

我们一起看下官方 Swoole Server 的文档:

https://wiki.swoole.com/wiki/page/p-server.html

看下这张图:

Swoole 启动一个服务,开启了哪些进程和线程?

通过上面的图,我们可以得到结论:

16389 是 Master 进程。

16390 是 Manager 进程。

16391、16392 是 Reactor 线程。

16393、16394、16395、16396、16397、16398 包括 3 个 Worker 进程,3 个 Task 进程。

小结

一、为什么是 3 个 Worker 进程、3 个 Task 进程?

因为,在创建服务的时候我们进行了设置 worker_num = 3, task_worker_num = 3。

workernum 如果不进行设置,默认为 SWOOLE_CPU_NUM,在上面咱们打印出来了,默认为 2,最大不超过,SWOOLE_CPU_NUM * 1000,具体详情,看官方文档。

worker_num 文档:

https://wiki.swoole.com/wiki/page/275.html

taskworkernum 文档:

https://wiki.swoole.com/wiki/page/276.html

二、为什么是 2 个 Reactor 线程?它是干什么的?

因为,Reactor 线程数,默认为 SWOOLE_CPU_NUM。

也可以通过 reactor_num 参数进行设置,reactor_num 文档:

https://wiki.swoole.com/wiki/page/281.html

它是真正处理 TCP 连接,收发数据的线程。

Reactor线程 文档:

https://wiki.swoole.com/wiki/page/347.html

三、Reactor、Worker、TaskWorker 的关系是什么样的?

一个通俗的比喻,假设Server就是一个工厂,那Reactor就是销售,接受客户订单。而Worker就是工人,当销售接到订单后,Worker去工作生产出客户要的东西。而TaskWorker可以理解为行政人员,可以帮助Worker干些杂事,让Worker专心工作。

官方已经解释的很详细了,看官方文档吧:

https://wiki.swoole.com/wiki/page/163.html

如果你想学习 Swoole 可以看下这篇文章:

本文欢迎转发,转发请注明作者和出处,谢谢!

Swoole 启动一个服务,开启了哪些进程和线程?


以上所述就是小编给大家介绍的《Swoole 启动一个服务,开启了哪些进程和线程?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

产品经理面试宝典

产品经理面试宝典

[美] Gayle Laakmann McDowell、[美]Jackie Bavaro / 吴海星、陈少芸 / 人民邮电出版社 / 2015-3 / 59.00元

本书针对IT 行业产品经理,以面试为主线,首先介绍产品经理职责以及谷歌、微软等知名企业中产品经理的作用和要求;然后采访了几位知名企业的产品经理,介绍成为产品经理的基本素质;之后从简历准备、各公司面试要点到具体面试问题进行详细分析,这部分是本书的重点内容。读者对象包括IT 行业产品经理以及对如何做好产品有兴趣的人士。一起来看看 《产品经理面试宝典》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具