当前位置:网站首页>Common interview questions about swoole
Common interview questions about swoole
2022-07-05 15:04:00 【Back end regular developers】
List of articles
- One 、 Why do you use swoole, What pain points in your project can be solved ?
- Two 、 How did you get through swoole Performance enhancing , How to do it? ?
- 3、 ... and 、swoole What is the collaboration process in , How to use it? ? Why can synergy improve concurrency ?
- Four 、 It was used swoole in the future , Will there be a memory leak ? If something happens, how to solve it ?
- 5、 ... and 、swoole and php-fpm The difference between
One 、 Why do you use swoole, What pain points in your project can be solved ?
swoole Is a network communication and asynchronous IO The engine of , A basic library ;
swoole Compared with apache/fpm, Major savings PHP The performance overhead of each creation and destruction of framework and global objects , It is a process resident memory type .
Two 、 How did you get through swoole Performance enhancing , How to do it? ?
Process resident memory :
swoole Itself is a process resident memory , When the process starts PHP The framework and other codes are read and compiled , You don't need to perform the compilation step every time you start , Greatly reduce the running time of the script ;
Connection pool
php-fpm The pattern of php Because all resources are destroyed at the end of each request , Therefore, connection pooling cannot be used ; And based on swoole Process resident memory mode , You can speed up the program through connection pooling ,
Using connection pooling can reduce the response time of programs , It can also effectively protect back-end resources .
Asynchrony can be handled using a coroutine IO
When you need to request multiple data in development , It takes a long time for each piece of data to be requested separately , The conventional php-fpm It's blocking operation , This type of data processing cannot be accelerated ; And based on swoole The program , This kind of business can be parallelized , Request the data source of the back end in parallel , It can greatly optimize the running time of this kind of business .
3、 ... and 、swoole What is the collaboration process in , How to use it? ? Why can synergy improve concurrency ?
Cooperative processes are switched through cooperation rather than preemption , It creates and switches resources such as memory, which is much smaller than threads ( It can be understood as smaller threads );
The use of synergy is through Swoole\Coroutine perhaps Co\ Namespace short names simplify class names to create ;
A coroutine can process tasks asynchronously , Support concurrency , And the resource consumption is small .
Four 、 It was used swoole in the future , Will there be a memory leak ? If something happens, how to solve it ?
swoole Because it is resident memory , Once the resource is loaded, enter , Will always exist in memory . For local variables ,swoole It will be released automatically after the callback function ends ; For global variables (lobal Declared variables ,
static Declared object properties or static variables and super global variables in functions ),swoole It doesn't automatically release ; Therefore, bad operation will lead to memory leakage .
solve :
stay onClose Clean up variables in callback ;
swoole Provides max_request and max_task_request Mechanism : After the process completes the specified number of tasks , Will automatically exit , Achieve the purpose of releasing resources and memory ; Then manager The process will start again worker/task Process to continue processing tasks .
Usage restriction : max_request Can only be used for synchronous blocking 、 Stateless request response server program ; Pure asynchronous Server Should not be set max_request Use Base Mode time max_request It's invalid
5、 ... and 、swoole and php-fpm The difference between
PHP-FPM:
Early versions of PHP There's no built-in WEB The server , It provides SAPI(Server API) Connect with the third party . It's very popular now php-fpm It is through FastCGI Agreement to deal with PHP With a third party WEB Communication between servers . such as Nginx + php-fpm The combination of , It works this way fpm yes Master/Worker Pattern , Start a Master Process listening from Nginx Request , Again fork Multiple Worker The process processes the request . Every Worker The process can only handle one request , The life cycle of a single process is roughly as follows :
Initialization module .
Initialization request . The request here is a request PHP The meaning of executing code , Is not HTTP Request .
perform PHP Script .
End request .
Close the module .
The multi process model depends on the number of processes to solve the concurrency problem , A process can only handle one connection , When starting a large number of processes , Process scheduling consumption may account for CPU Tens of percent or even 100%, such as C10K problem , The multi process model is not enough .
Swoole:
Swoole The same is true of Master/Worker Pattern , The difference is Master There are multiple processes Reactor Threads ,Master It's just an event generator , Responsible for monitoring Socket Event change of handle .Worker Run as a multiprocess , Receive from Reactor Thread request , And execute the callback function (PHP Compiling ). start-up Master The process flow is roughly :
Initialization module .
Initialization request . because swoole Need to pass through cli How to run , So when initializing the request , Will not initialize PHP Global variable of , Such as $_SERVER, $_POST, $_GET etc. .
perform PHP Script . Including the lexical 、 Syntax analysis , Variable 、 function 、 Class initialization, etc ,Master Enter monitor state , It doesn't end the process .
Swoole The principle of acceleration
from Reactor(epoll Of IO Reuse mode ) Responsible for monitoring Socket Event change of handle , Solve the problem of high concurrency .
Save... By resident memory PHP Code initialization time , When using heavy frames , use swoole The acceleration effect is very obvious .
The contrast is different
PHP-FPM
Master The main process / Worker Multi process mode .
start-up Master, adopt FastCGI Protocol listening from Nginx Requests for transmission .
Every Worker The process corresponds to only one connection , Used to perform complete PHP Code .
PHP Code execution completed , The occupied memory will be destroyed , The next request requires re initialization and other cumbersome operations .
Used only for HTTP Server.
Swoole
Master The main process ( By multiple Reactor Thread composition )/ Worker Multi process ( Or multithreading ) Pattern
start-up Master, initialization PHP Code , from Reactor monitor Socket Event change of handle .
Reactor The main thread is responsible for the balance of sub threads ,Manager Process management Worker Multi process , Include TaskWorker The process of .
Every Worker from Reactor Request , You only need to execute the part of the callback function PHP Code .
Only in Master Execute once at startup PHP Initialization code ,Master Enter monitor state , It doesn't end the process .
Not only for HTTP Server, You can also create TCP Connect 、WebSocket Connect .
边栏推荐
- 30岁汇源,要换新主人了
- Leetcode: Shortest Word Distance II
- 两个BI开发,3000多张报表?如何做的到?
- Cartoon: programmers don't repair computers!
- Ten billion massage machine blue ocean, difficult to be a giant
- 【jvm】运算指令
- 如何将电脑复制的内容粘贴进MobaXterm?如何复制粘贴
- How to open an account of qiniu securities? Is it safe to open an account?
- Surpass palm! Peking University Master proposed diverse to comprehensively refresh the NLP reasoning ranking
- B站做短视频,学抖音死,学YouTube生?
猜你喜欢

基于TI DRV10970驱动直流无刷电机

Super wow fast row, you are worth learning!

如何将电脑复制的内容粘贴进MobaXterm?如何复制粘贴

Garbage collection mechanism of PHP (theoretical questions of PHP interview)

Mysql---- function

浅谈Dataset和Dataloader在加载数据时如何调用到__getitem__()函数

P1451 求细胞数量/1329:【例8.2】细胞

NBA赛事直播超清画质背后:阿里云视频云「窄带高清2.0」技术深度解读

Select sort and bubble sort

No one consults when doing research and does not communicate with students. UNC assistant professor has a two-year history of teaching struggle
随机推荐
sql server学习笔记
Handwriting promise and async await
CPU设计实战-第四章实践任务二用阻塞技术解决相关引发的冲突
Change multiple file names with one click
maxcompute有没有能查询 表当前存储容量的大小(kb) 的sql?
[JVM] operation instruction
【NVMe2.0b 14-9】NVMe SR-IOV
[C question set] of Ⅷ
How can I quickly check whether there is an error after FreeSurfer runs Recon all—— Core command tail redirection
Mysql---- function
Ctfshow web entry explosion
爱可可AI前沿推介(7.5)
Reconnaissance des caractères easycr
Install and configure Jenkins
CPU design practice - Chapter 4 practical task 2 using blocking technology to solve conflicts caused by related problems
在Pytorch中使用Tensorboard可视化训练过程
我这边同时采集多个oracle表,采集一会以后,会报oracle的oga内存超出,大家有没有遇到的?
【jvm】运算指令
手写promise与async await
What are the domestic formal futures company platforms in 2022? How about founder metaphase? Is it safe and reliable?