深入学习swoole之运行模式

1.传统web开发模式: LAMP/LNMP都是同步开发模式;

MyAnswer博客

2.php-fpm

1.Fastcgi进程管理器,实现fastcgi协议;
2.同步阻塞IO进程模型;
3.请求结束后释放所有的资源和内存;
4.并发受限于进程数量
5.PHP框架初始化占用大量的计算资源;

3.php-fpm工作模式的问题

1.nginx基于epoll事件模型,一个work同时可以处理多个请求;
2.fpm-worker在同一时刻可以处理一个请求;
3.master进程只负责处理worker进程的监控,日志等;
4.fpm-worker每次处理请求前需要重新初始化mvc框架,然后再释放资源;
5.高并发请求时,fpm-worker不够用,nginx直接响应502;
6.fpm-worker进程间切换消耗大,

MyAnswer博客

4.swoole运行模式

1.swoole进程模型最大的特点在于其多线程Reactor模式处理网络请求,使得其能轻松应对大量连接;
2.优点:全异步非阻塞,占用资源开销小,程序执行效率高(协程),程序运行只解析加载一次PHP文件,避免每次请求的重发加载;
3.缺点:需要对多进程的运行模式有更清晰的认识,更容易内存泄漏,在处理全局变量,静态变量的时候一定要小心,这种不会被GC清理
的变量会存在整个生命周期,如果没有正确处理,很容易消耗完所有的内存(swoole配置每个进程接收到一定的请求就重启); 在php-fpm下,PHP代码执行完内存就会被完全释放
不用担心内存问题;

4.IO复用

IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程,目前支持I/O多路复用select,poll,epoll
IO多路复用就是通过一种机制,一个进程可以监视对个描述符,一旦某个描述符就绪(一般是读就绪或者是写就绪),能够通知程序进行
相应的读写操作;

4.僵尸进程

  父进程结束或者异常终止,而子进程继续运行;

MyAnswer博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论