swoole中的线程:1.MainReactor(主线程)主线程会负责监听serversocket。如果有新的连接accept,主线程会评估每个Reactor线程的连接数。将此连接分配给连接数最少的反应器线程以进行负载平衡。2.Reactor线程组Reactor线程负责维护客户端机器的TCP连接,处理网络IO,以完全异步和非阻塞的方式发送和接收数据。swoole主线程接受新连接后,会将连接分配给固定的Reactor线程,在socket可读时读取数据,进行协议解析,将请求投递给Worker进程。当套接字可写时向TCP客户端发送数据。3、心跳包检测线程(HeartbeatCheck)Swoole配置心跳检测后,心跳包线程会在固定时间内向所有之前在线的连接发送检测包。4、UDP包接收线程(UdpRecv)接收并处理客户端udp数据如果包swoole想要达到最好的性能,必须创建多个worker进程来帮助处理任务,但是Worker进程必须是fork的,但是fork操作是不安全。如果没有管理,就会出现很多僵尸进程,影响服务器的性能。同时,由于程序原因,worker进程被误杀或异常退出。为了保证服务的稳定性,需要重新创建worker进程。
