Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

nginx通过配置同cpu核数一致的worker进程(单线程),来并行接纳客户端连接,那为什么分配(争抢方式也可以理解近似地理解为分配)的方式是争抢?争抢不就意味着随机吗,那不是有可能存在一个进程管理很多连接,一个进程管理很少?由master来轮训分配不香吗?(知道master只是管理worker的日常,而不对连接进行任何业务处理)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
559 views
Welcome To Ask or Share your Answers For Others

1 Answer

随机就随机呗,有什么问题吗?


你想用 master 来分配,只是单纯轮询?那本来是哪个 worker 一空闲就尝试获取锁、获取成功了就 accept();结果变成了 master 指哪个 worker 哪个 worker 就得收,也不管这个 worker 是不是空闲的。

好,你说 master 跟 worker 之间同步状态,要带上 worker 忙不忙的状态,这样 master 就能根据谁不忙给谁分配了。可这一来是多进程通讯,不还是得有把锁来保证安全?二来如果就赶上了,所有 worker 某一时刻都忙,不能立即执行 accept(),你是要 master 搁这儿等着(变阻塞了)、还是 worker 再开一个线程等着(本来 worker 是单线程的,结果变多线程了,不还得有锁么)?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...