老师,worker抢占机制,涉及到多个worker的锁竞争,应该影响性能才对啊,为啥还能提高性能呢?
来源:1-9 Nginx处理Web请求机制解析
慕设计7465963
2019-12-10 12:55:52
如题。。。
2回答
慕侠5591593
2020-04-10
我觉得这个可以这么理解:
要了解worker抢占机制就要先明白一个名词‘惊群问题’
惊群问题是指在多线程(或多进程)场景下,有多个线程在等待某一资源可用,一旦这个资源可用,那么所有等待这个资源的线程都会被唤醒,但是资源只有一份,那么只有一个线程获得这个资源,其它线程都获取失败
惊群问题导致了不必要的线程唤醒,实际上只有一个线程能获取这份资源,那么理想情况下只唤醒一个线程就行了。而唤醒多个线程导致了不必要的线程调度,造成系统开销
而Nginx为了避免惊群问题,就有了accept_mutex这个锁,在Nginx默认下是开启的,当accept_mutex开启后,任意时刻只有一个进程能获得accept_mutex锁,获得accept_mutex锁的进程能监听web端口;无法获得accept_mutex锁的进程会把监听套接字从其epoll中删除
Java架构师讲师团
2019-12-10
可以说他们是共享内存的
相似问题