当前位置:网站首页>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 .
边栏推荐
- Photoshop plug-in action related concepts actionlist actiondescriptor actionlist action execution load call delete PS plug-in development
- 在Pytorch中使用Tensorboard可视化训练过程
- Ecotone technology has passed ISO27001 and iso21434 safety management system certification
- webRTC SDP mslabel lable
- Can I pass the PMP Exam in 20 days?
- easyOCR 字符識別
- 当代人的水焦虑:好水究竟在哪里?
- MySQL----函数
- CODING DevSecOps 助力金融企业跑出数字加速度
- Leetcode: Shortest Word Distance II
猜你喜欢

MongDB学习笔记

Machine learning notes - gray wolf optimization

Behind the ultra clear image quality of NBA Live Broadcast: an in-depth interpretation of Alibaba cloud video cloud "narrowband HD 2.0" technology
![P6183 [USACO10MAR] The Rock Game S](/img/f4/d8c8763c27385d759d117b515fbf0f.png)
P6183 [USACO10MAR] The Rock Game S

Run faster with go: use golang to serve machine learning

MySQL之CRUD

DVWA range clearance tutorial

Select sort and bubble sort

当代人的水焦虑:好水究竟在哪里?

Ctfshow web entry explosion
随机推荐
[C question set] of Ⅷ
安装配置Jenkins
[12 classic written questions of array and advanced pointer] these questions meet all your illusions about array and pointer, come on!
Machine learning notes - gray wolf optimization
Brief introduction of machine learning framework
危机重重下的企业发展,数字化转型到底是不是企业未来救星
Coding devsecops helps financial enterprises run out of digital acceleration
Easyocr character recognition
[JVM] operation instruction
Photoshop plug-in action related concepts actionlist actiondescriptor actionlist action execution load call delete PS plug-in development
GPS原始坐标转百度地图坐标(纯C代码)
Microframe technology won the "cloud tripod Award" at the global Cloud Computing Conference!
当代人的水焦虑:好水究竟在哪里?
【华为机试真题详解】字符统计及重排
Crud of MySQL
【招聘岗位】软件工程师(全栈)- 公共安全方向
FR练习题目---简单题
机器学习框架简述
webRTC SDP mslabel lable
Ctfshow web entry command execution