首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nginx listen reuseport参数带来的性能提升

(对于NGINX Plus客户,此功能将在年底发布的版本7中出现)SO_REUSEPORT选项有许多潜在的实际应用。...nginx使用锁机制来实现accept_mutex和序列化访问共享内存。 reuseport的基准性能测试 我在一个36核的AWS实例运行wrk基准测试工具,测试4个NGINX工作进程。...我比较三种NGINX配置:默认(等同于accept_mutex on),accept_mutex off和reuseport。...Nginx listen reuseport参数带来的性能提升 我又运行了另一个相关的性能测试——客户端和NGINX分别在不同的机器上且NGINX返回一个HTML文件。...Nginx listen reuseport参数带来的性能提升 在这些性能测试中,连接请求的速度是很高的,但是请求不需要大量的处理。

10.5K100

升级CentOS6.5内核,开启Nginx的fastopen和reuseport特性

前面,张戈博客在折腾 Nginx 的 SSL 优化时,注意到前人在 Nginx 的 listen 配置中,添加了 fastopen=3 reuseport 这 2 个参数。...于是脑补了下,原来是启用 Nginx 对 TCP_FASTOPEN 和 TCP_SO_REUSEPORT 新特性的支持,至于有什么好处,请自行脑补下-->传送门 ?...和 TCP_SO_REUSEPORT,然后重新编译 Nginx 加入如下参数: --with-cc-opt=-DTCP_FASTOPEN=23 TCP_SO_REUSEPORT 特性在 kernel-...fastopen=3 reuseport 参数,比如: listen 80 fastopen=3 reuseport; 如果使用的是 Tengine,这个配置就会报错: nginx: [emerg]...invalid parameter "reuseport" in **** 最后了解到,Tengine 关于 reuserport 的配置并不是在 Listen,而是放到 events 模块。

2.6K90
您找到你想要的搜索结果了吗?
是的
没有找到

nginx在网络请求中的作用以及它是如何做的

nginx是一种高性能的HTTP和反向代理服务器。...a practical guide to high performance》 从nginx的视角来看请求 离消费者近的称为下游,离消费者远的称为上游 事件模型 nginx是一个事件驱动架构的Web...或者使用reuseport就没有必要再开启了 EPOLLEXCLUSIVE相关细节:在linux4.5版本,如果同一个文件描述符在多个epoll实例中,那么事件那些没有指定EPOLLEXCLUSIVE关键字的...注意如果是一个epoll实例被多个线程用epoll_wait监听,则不属于这里的描述,可以戳我 reuseport相关细节:linux3.9支持了 SO_REUSEPORT,对于nginx来说,针对不同的...惊群应对措施的改变 EPOLLEXCLUSIVE相关说明 reuseport相关说明 nginxreuseport的支持 man epoll 书籍 < nginx a practical guide

58440

记一次性能调优

的 time 不均衡 如上所示,会发现 nginx 多进程间的 time 分配并不均衡(此 time 是 cpu time),有的干活多,有的干活少,相关问题在「Why does one NGINX...一文中有相关描述:在原本的nginx 模型中,一个 socket 接收所有的请求,不同的 worker 按照 accet_mutext 的设置来争抢请求,不过因为 Linux 的 epoll-and-accept...负载均衡算法采取了类似 LIFO 的行为,结果导致请求在不同进程间的分配变得十分不均衡: 使用 reuseport 前 为了解决此类问题,nginx 实现了 reuseport 指令,每个进程都有对应自己的...socket: 使用 reuseport 后 激活了 reuseport 指令后,我们通过 top 命令观察会发现 time 分配变得均衡了: http { server {...listen 80 reuseport; ... } } top 显示 nginx 的 time 均衡了 虽然我们没有改动一行代码,但是仅仅通过激活网卡多队列和 nginx reuseport

67140

多个套接字可以绑定同一个端口吗

SO_REUSEPORT 选项是什么 什么是惊群效应 SO_REUSEPORT 选项安全性相关的问题 Linux 内核实现端口选择过程的源码分析 SO_REUSEPORT 是什么 默认情况下,一个 IP...为了充分发挥多核 CPU 的性能,多进程的处理网络请求主要有下面两种方式 主进程 + 多个 worker 子进程监听相同的端口 多进程 + REUSEPORT 第一种方最常用的一种模式,Nginx 默认就采用这种方式...reuseport_nginx 这种方式看起来很完美,但是会带来著名的“惊群”问题(thundering herd)。...Nginx 为了处理惊群问题,在应用层增加了 accept_mutex 锁,这里不再展开,有兴趣的读者可以再深入学习一下这部分的知识。...SO_REUSEPORT 的应用 SO_REUSEPORT 带来了两个明显的好处: 实现了内核级的负载均衡 支持滚动升级(Rolling updates) 内核级的负载均衡在前面的 Nginx 的例子中已经介绍过了

2.4K20

深入理解Linux端口重用这一特性

比如 Nginx 服务一般固定监听 80 或 8080,Mysql 服务固定监听 3306 等等。 在网民数量还不够多,终端设备也还没有爆炸的年代里,一直是在使用的是端口不可重复被监听的模式。...Nginx 就采用的是这种模型。 这种进程模型解决了第一个模型的问题。但是又带来了新的问题。当 socket 收到一条连接的时候,不能把所有的 worker 进程都招呼起来。...二、REUSEPORT 的诞生 为了更高效地让多个用户态的进程接收和响应客户端的请求。Linux 在 2013 年的 3.9 版本中提供了 REUSEPORT 新特性。...2.1 SO_REUSEPORT 设置 想给自己的服务开启 REUSEPORT 很简单,就是给自己 server 里 listen 用的 socket 上加这么一句。...如果没有开启你想办法给它加上,再出个性能数据对比,上半年的绩效就有了 如果你使用的是 1.9.1 以上版本的 nginx,只需要一行简单的配置就可以体验这个特性。

1K10

Nginx 是如何解决惊群效应的?

如何解决 解决方式一共有三种,下面我们一个个来看: accept_mutex(应用层的解决方案) EPOLLEXCLUSIVE(内核层的解决方案) SO_REUSEPORT(内核层的解决方案) accept_mutex...SO_REUSEPORT nginx 在 1.9.1 版本加入了这个功能 https://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1/...其本质是利用了 Linux 的 reuseport 的特性,使用 reuseport 内核允许多个进程 listening socket 到同一个端口上,而从内核层面做了负载均衡,每次唤醒其中一个进程。...而使用方式则是: http { server { listen 80 reuseport; server_name localhost;...与之前的抢锁对比,抢锁的进程一定是不忙的,现在手上的工作都已经忙不过来了,没机会去抢锁了;而这个方案可能导致,如果当前进程忙不过来了,还是会只要根据 reuseport 的负载规则轮到你了就会发送给你,

19430

干货 | 降低20%链路耗时,Trip.com APP QUIC应用和优化实践

3.2 集群多进程部署 由于我们在多进程部署Nginx QUIC服务端时采用reuseport的形式监听端口,所以在介绍多进程部署之前,先简单介绍Linux系统的reuseport机制和Nginx的进程模型...所谓reuseport,简单理解就是允许多个套接字对同一ip+port进行监听。Linux在接收到数据时,会根据四元组转发数据到相应的套接字,即来源于同一个客户端的数据总会被分发给相同的套接字。...Nginx基于这个特性,在启动时,对于配置reuseport的端口,会在创建与进程数量一致的套接字,监听同一端口,并为每个进程分配其中的一个套接字。...由于Nginx多进程分发请求依赖了操作系统的reuseport机制,而Linux的reuseport是根据四元组进行请求分发的,因此源ip+port的改变就可能会导致请求在服务端被分发到与迁移前不同的Nginx...我们进行了调研,总结下来大致分为两种解决方案: 一是修改操作系统reuseport的分发机制,使其根据dcid将数据分发到指定进程。

1.1K10

【译】使用 SO_REUSEPORT 套接字开发高并发服务

图 1: 上面的服务是使用并行监听器来避免请求连接瓶颈,而下面的服务只使用一个监听器来接收连接 概要 HAProxy 和 NGINX 是少数几个使用 Linux 网络栈中 TCP 的 SO_REUSEPORT...当第一个进程在启用了 SO_REUSEPORT 的套接字上调用 listen() 时,会分配它的 “struct sock” 结构中的指针- sk_reuseport_cb。...新套接字的 sk_reuseport_cb 指针指向第一个套接字的 sk_reuseport_cb 指针。这确保同一组的所有 LISTEN 套接字引用相同的 sk_reuseport_cb 指针。...来看如何实际使用 SO_REUSEPORT 选项 让我们通过两个测试来看看 SO_REUSEPORT 的影响 一个应用程序打开一个套接字用于监听,并创建两个进程。...Benchmarking SO_REUSEPORT 以下设置用于测量 SO_REUSEPORT 性能: 内核版本:4.17.13。

58410
领券