登录
首页 >  Golang >  Go教程

三次握手耗时 1ms,为什么 Nginx 可以处理百万级别的连接?

时间:2024-11-27 16:22:01 496浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《三次握手耗时 1ms,为什么 Nginx 可以处理百万级别的连接?》,涉及到,有需要的可以收藏一下

三次握手耗时 1ms,为什么 Nginx 可以处理百万级别的连接?

三次握手与服务端并发瓶颈

在多线程服务端模型中,master thread 负责通过 accept 建立客户端连接,再将连接投递到线程池中处理。此时有人提出疑问,如果三次握手耗时 1ms,那么 RPS(每秒请求数)岂不是被限制在 1000 以下?

然而,实践中像 Nginx 这样的服务器却能处理百万级别的连接,说明三次握手并没有成为瓶颈。

解决方法

服务端在 listen 监听时,实际上已经可以建立连接了。因此,accept 操作并不是在进行三次握手,而是在已建立队列中获取套接字来处理。接收连接阶段不会产生并发瓶颈。

Nginx 的高并发机制

Nginx 采用多进程 + IO 多路复用模型来解决并发问题。IO 多路复用不同于传统的一线程一连接方式,它可以在单个线程中通过系统调用同时管理多个连接,从而达到高并发的目的。

通过上述分析可知,accept 本身并不是并发瓶颈,Nginx 的高并发能力归功于其独特的进程模型和 IO 多路复用技术。

本篇关于《三次握手耗时 1ms,为什么 Nginx 可以处理百万级别的连接?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>