学习Swoole需要掌握哪些基础知识、考点

学习Swoole需要掌握哪些基础知识?
多进程/多线程、socket、IO复用、TCP/IP网络协议、多协议多端口使用、Hprose使用、调试工具、基本框架、HttpServer

1、多进程/多线程
了解Linux操作系统进程和线程的概念
了解Linux进程/线程切换调度的基本知识
了解进程间通信的基本知识,如管道、UnixSocket、消息队列、共享内存

2、SOCKET
了解SOCKET的基本操作如accept/connect、send/recv、close、listen、bind
了解SOCKET的接收缓存区、发送缓存区、阻塞/非阻塞、超时等概念

3、IO复用
了解select/poll/epoll
了解基于select/epoll实现的事件循环,Reactor模型
了解可读事件、可写事件

4、TCP/IP网络协议
了解TCP/IP协议
了解TCP、UDP传输协议

5、调试工具
使用 gdb 调试Linux程序
使用 strace 跟踪进程的系统调用
使用 tcpdump 跟踪网络通信过程
其他Linux系统工具,如ps、lsof、top、vmstat、netstat、sar、ss等

考点:
1.为什么你要用swoole,能解决你项目中的哪些痛点?

swoole是一个网络通讯和异步IO的引擎,一个基础库;

swoole相比于apache/fpm,主要节省了PHP框架和全局对象每次创建销毁带来的性能开销,是进程常驻内存型。

2.你是如何通过swoole提升性能的,怎么做的?

(1).进程常驻内存:

swoole本身是进程常驻内存,在进程启动的时候就将PHP框架等代码读取并编译完成,不需要每次启动的时候都执行编译步骤,大大降低了脚本的运行时间;

(2).连接池

php-fpm的模式php因为每次请求结束时都会销毁所有资源,因此无法使用连接池;而基于swoole的进程常驻内存模式,可以通过连接池的方式来加速程序,

使用连接池既可以降低程序的响应时间,又可以有效保护后端资源。

(3).可以使用协程处理异步IO

当开发中需要去请求多处的数据,而每一块的数据单独请求都要花较长时间,常规的php-fpm是阻塞式运行,无法对这类型的数据处理进行加速;而基于swoole的程序,可以将这类的业务并行化处理,并行去请求后端的数据源,能够大大优化了此类业务的运行时间。    

3.swoole里的协程是什么,怎么用?为什么协程可以提高并发?

协程是通过协作而不是抢占的方式来进行切换,它创建和切换对内存等资源比线程小的多(可以理解为更小的线程);

协程的使用是通过Swoole\Coroutine或者Co\命名空间短命名简化类名来创建;

协程可以异步处理任务,支持并发,并且资源消耗小。

4.用了swoole以后,会不会发生内存泄漏?如果发生了怎么解决?

swoole由于是常驻内存,一旦资源加载进入后,会一直存在于内存中。对于局部变量,swoole会在回调函数结束后自动释放;对于全局变量(lobal声明的变量,

static声明的对象属性或者函数内的静态变量和超全局变量),swoole不会自动释放;因此操作不好会发生内存泄漏。

解决:(1).在onClose回调内清理变量;

        (2).swoole提供了max_request和max_task_request机制:进程完成指定数量的任务后,会自动退出,达到释放资源和内存的目的;而后manager进程会重新拉起新worker/task进程来继续处理任务。

     使用限制:

     max_request只能用于同步阻塞、无状态的请求响应式服务器程序;

     纯异步的Server不应当设置max_request

     使用Base模式时max_request是无效的

5.为什么swoole能提高并发?内部做了什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值