swoft-rewrite/swoft-framework

从分布式开始,重写swoft框架之 -- framework模块

dev-master 2019-06-17 08:07 UTC

This package is auto-updated.

Last update: 2024-09-17 20:17:49 UTC


README

同步阻塞 如果使用同步阻塞的写法,Worker进程必须等待所有IO完成才能发送response,然后再处理下一个请求。一个请求要处理1秒,那么4个Worker进程1秒只能处理4个请求。

因此同步模式应该增加进程数量,比如设置为200个,那么就可以提供200QPS的处理能力。在swoole_http_server中如果使用同步模式编写代码,那么相比php-fpm,它提升性能的地方主要有2点:

swoole_http_server解析http请求的效率更高,它是一次性读取所有SOCKET数据到内存,然后再去解析,比php-fpm的逐个read节省了大量系统调用,效率更高。swoole_http_server支持PHP对象和全局变量、资源持久化,所以不需要重复创建销毁某些对象/变量/资源,因此节省了很多CPU消耗。

服务器就可以直接处理下一个请求,同样下一个请求也是继续发送SQL然后设置回调。等MySQL服务器返回结果时,才重新把上一次的request拿出来,response内容拼好,然后发送response。

实际上一个request花的时间还是1秒,只不过异步模式下服务器可以同时并发处理多个请求。因此4个进程就能应对大量请求。