workerman是单线程对吧?那么count进程,多个实例会互相抢吗?

zzccomet

服务器32核心,那么我同时开启2个workerman实例和2个gateway实例,但他们各自用的是不同的端口。
 
那么:
workerman1   开启count=32
workerman2   开启count=32
gatewaywork1   开启count=32
gatewaywork2   开启count=32
 
问题1:workerman有count介绍,说CPU密集型运算,进程32要与核心数量相等。那么我开启了多个实例同时运行在服务器上,那么这个核心数,我是每个实例都是32,是允许的吗?还是说,如果要实现CPU密集型运算,就要平均分配给每个实例8个进程?
问题2:同时开启其他实例,如果实例出现PHP错误,会影响其他实例吗?
问题3:多个实例之间,SESSION也是共享的吗?workerman的能读取gatewaywork的?
问题4:单线程、单进程(count=1)的情况下,1毫秒假如能处理50条数据。那么我开启了多个实例,会影响这个单线程、单进程(count=1)的执行效率吗?换句话说,workerman是整体一个速率,还是说开启了多个实例,每个实例都能在1毫秒处理50条数据,能够更加发挥服务器性能。

3548 1 0
1个回答

walkor

1、进程数设置手册上说的是参考值,并不是强制,没有允许不允许的说法。你可以每个实例都是32,也可以是其他值。如果几个实例全部是cpu密集型,并且每个实例消耗cpu成都一样,那么就可以一共32个进程,多个进程平分这32个进程。比如2个实例,每个实例16个进程。
 
2、某个进程发生业务错误,并不影响其它进程,也不影响其它实例
 
3、实例间SESSION不共享,除非是分布式部署的gatewayWorker,gatewayWorker之间共享SESSION
 
4、不是整体一个速率,每个进程单独的速率,每个实例也是单独的。具体能开多少个取决于系统配置。

  • 暂无评论
年代过于久远,无法发表回答
🔝