问题1: swoole的C架构是什么样子,你使用的是HS/HA 还是 L/F 管理工作节点。
问题2: swoole每次接收到连接是否是创建新的work进程或work线程,然后关闭连接后销毁,还是有其他机制比如prework,如果是prework这个阀值是多少。
问题3: swoole是如何有效利用多核的,比如线程或者进程过多竞争情况下。
问题4: 看官方介绍swoole是异步非阻塞,可以理解异步是epoll提供的事件复用机制,非阻塞swoole是怎么体现的,比如一个事件就绪了,我对他操作就block了这个事件。
问题5: 是否是一个work线程或者一个work进程对应多个连接,如果是这样的,(异步模式下Proactor)事件安全是怎么做的,比如我读一个事件的缓冲区数据,我如何知道读到的数据属于哪个socket描述符。
问题6: swoole是如何处理粘包问题的,能否给出一段实例代码。
问题7: 长连接下多次发不同类型的业务包,work线程或者work进程是否会出现阻塞状态,这个怎么处理
你的提问非常专业。
1、swoole的C架构可以是全异步(异步Reactor线程+异步Worker进程),也可以是半异步半同步(异步Reactor线程+同步Worker进程)
2、swoole是采用固定静态worker进程的模式,不存在请求创建新的进程/线程问题
3、swoole会根据CPU核数创建N个Reactor线程,开启了CPU亲和设置后,每一个线程都会绑定到1个核。多进程Worker在多核机器中是完全可以利用到多核的。
4,5、这个不谈了,你需要再多了解一下
6、包处理这部分实际上是协议层的东西,swoole是底层框架。swoole本身也提供了2个包处理的方案,1是EOF检测,2包头长度检测
7、不太清楚你的问题
可以加swoole的QQ群或者发邮件给team@swoole.com
哦,自问自答?
支持下