老师,worker抢占机制,涉及到多个worker的锁竞争,应该影响性能才对啊,为啥还能提高性能呢?

老师,worker抢占机制,涉及到多个worker的锁竞争,应该影响性能才对啊,为啥还能提高性能呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
慕侠5591593 2020-04-10 11:24:22

我觉得这个可以这么理解:

要了解worker抢占机制就要先明白一个名词‘惊群问题’

惊群问题是指在多线程(或多进程)场景下,有多个线程在等待某一资源可用,一旦这个资源可用,那么所有等待这个资源的线程都会被唤醒,但是资源只有一份,那么只有一个线程获得这个资源,其它线程都获取失败

惊群问题导致了不必要的线程唤醒,实际上只有一个线程能获取这份资源,那么理想情况下只唤醒一个线程就行了。而唤醒多个线程导致了不必要的线程调度,造成系统开销


而Nginx为了避免惊群问题,就有了accept_mutex这个锁,在Nginx默认下是开启的,当accept_mutex开启后,任意时刻只有一个进程能获得accept_mutex锁,获得accept_mutex锁的进程能监听web端口;无法获得accept_mutex锁的进程会把监听套接字从其epoll中删除


Java架构师讲师团 2019-12-10 13:05:42

可以说他们是共享内存的

  • 提问者 慕设计7465963 #1
    共享内存跟worker竞争有关系吗???非常不解
    2019-12-17 19:32:36
  • worker是独立的进程,进程与进程之间共享什么内存?
    2020-02-23 12:11:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师