nginx中永远只有一个worker进程来处理epoll中的listen fd,为什么?

发布于 2022-09-07 16:40:17 字数 254 浏览 53 评论 0

为了避免惊群问题直接只让一个worker进程来监听,通过accept_mutex来控制(现在的版本好像默认关闭了有新的处理方式了,姑且当我说的是开启accept_mutex的旧版本吧),但是这样和直接主进程来处理有什么区别吗?怎么就利用多核优势了呢?我能想到的就是一个worker崩了不会都崩了而已,只是增强一点鲁棒性,但是从头到尾都只有一个worker在处理所有的监听呀(上次拿到锁的会交出所有的fd),在我看来,就是增强了健壮性而已,网上很多人说提高了并发,利用了多核优势,我该如何理解呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不疑不惑不回忆 2022-09-14 16:40:17

其实是个人的理解问题,只是用一个worker来监听 监听套接字 而已,用多线程的worker来监听 连接套接字,自然就利用了多核优势

谈场末日恋爱 2022-09-14 16:40:17

了解一个概念就是多核下可以线程并行执行,打比方你的cpu是4核,同时间在每个核上可以执行一个线程,是不是4个线程并行操作?
worker数量设置成cpu核数,就是为了充分利用这个核数的优势,因为一个worker进程只会跑一个worker线程。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文