前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >swoole简介

swoole简介

原创
作者头像
sams
修改2021-09-22 21:07:20
2.2K0
修改2021-09-22 21:07:20
举报
文章被收录于专栏:前端之心前端之心

swoole是面向生产环境的 PHP 异步网络通信引擎,使用 c/c++ 编写,提供了 PHP 语言的异步多线程服务器,异步 TCP/UDP 网络客户端,异步 MySQL,异步 Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询等功能。swoole还内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。

相比传统运行的PHP,swoole主要有以下特点:

1、常驻内存

传统php-fpm运行方式每处理一个请求都需要加载一遍代码至内存,请求处理完毕后销毁内存,这个处理过程在请求量大的情况下成为一大性能瓶颈。swoole没有这个问题,swoole服务在启动后,每个文件只需要加载一次,加载至内存后可多次使用,直到服务重启。

2、多进程模式

php-fpm是Master 主进程 / Worker 多进程模式,每个 Worker 进程只对应一个连接,执行完整的PHP代码,请求执行完毕,占用的内存被销毁,下一个请求会重新执行初始化等上述一系列操作。

swoole同样也是Master 主进程 / Worker 多进程模式,不过swoole底层还支持两种运行方式,一种是传统异步非阻塞的单线程Master / Worker多进程模式,这种模式代码简单,不容易出错,worker直接监听端口处理请求,由于是异步非阻塞的,单个worker可以同时处理大量的请求,跟nginx类似,这种模式没有IPC开销,性能很好;另一种模式是多线程Master/单线程Worker的多进程模式,该模式用了大量的进程间通信、进程管理机制,其中Master进程的master线程主要负责accept请求以及处理信号,reactor线程则主要负责收发数据并将数据转发给合适的worker进程处理

3、支持协程

swoole2.0就提供了协程特性,可使用协程的编程方式代替异步回调,应用层可以使用完全同步的编程方式,底层自动实现异步IO,这极大的方便了开发者进行异步编程,避免了传统异步回调带来的多层回调以及代码逻辑离散等问题。

swoole4.0+更是实现了stackful协程,使用了php+c的双栈模式,使swoole协程支持了php所有语法,不仅如此,swoole4.1.0+在底层增加了一个新特性,可以在运行时动态将基于php_stream实现的扩展、PHP网络客户端代码一键协程化,底层替换了ZendVM Stream的函数指针,所有使用php_stream进行socket操作均变成协程调度的异步IO。

php7+swoole4与nginx性能对比

swoole采用单线程swoole_base模式,启动4个worker进程,nginx同样启动4个worker进程,输出hello word,测试环境为4C+8G云服务器,压测工具为apache bench,ab -c 100 -n 10000 http://xxxx,压测结果如下:

php-7+swoole4

nginx

从上面压测结果可以看出,swoole和nginx的QPS相差不大,swoole甚至有微小的胜出,足见swoole性能的强劲

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 相比传统运行的PHP,swoole主要有以下特点:
  • 1、常驻内存
  • 2、多进程模式
  • 3、支持协程
  • php7+swoole4与nginx性能对比
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档