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

GRPC-C++源码分析(十一)--bind&listen

对应于《GRPC-C++源码分析(三)--main线程》中1.5节 for (auto port = ports_.begin(); port !...= nullptr) { *port->selected_port = r; } } grpc-bind-listen.jpg 可以右键鼠标--在新标签页中打开图片,会更清晰一些...大家最关心的bind和listen操作在蓝色框中 本节的重点在server_start_listener方法上 下面大概说下上图的流程: 通过跟踪,Server的AddListeningPort方法最终调用的是...grpc_tcp_server_impl类型,如果还不熟悉的同学,可以参考图中上方区域,说明了grpc_tcp_server_impl的来源 grpc_tcp_server_add_port方法中创建了socket,并执行了bind和listen...操作,将listen描述符封装在了grpc_tcp_listener结构中,并最终赋给了grpc_tcp_server grpc_server_add_listener方法将server_start_listener

1.4K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    NGINX发布的1.9.1版本引入了一个新的特性:允许使用SO_REUSEPORT套接字选项,该选项在许多操作系统的新版本中是可用的,包括Bsd和Linux(内核版本3.9及以后)。...设置共享Socket 为了让``SO_REUSEPORT socket```选项起作用,应为HTTP或TCP(流模式)通信选项内的listen项直接引入新近的reuseport参数,就像下例这样: ?...Nginx listen reuseport参数带来的性能提升 我又运行了另一个相关的性能测试——客户端和NGINX分别在不同的机器上且NGINX返回一个HTML文件。...Nginx listen reuseport参数带来的性能提升 在这些性能测试中,连接请求的速度是很高的,但是请求不需要大量的处理。...(reuseport 参数在 mail 上下文环境下不能用在 listen 指令下,例如email,因为email流量一定不会匹配这种场景。)我们鼓励你先测试而不是直接大规模应用。

    11.2K100

    Nginx1.25.1起弃用 Listen 指令的 Http2 参数,异常:the “listen ... http2“ directive is deprecated

    Nginx在1.25.0版本中实验性的支持HTTP/3后,在1.25.1版本中弃用了listen指令的http2参数,单独加入了http2指令。...the “listen … http2” directive is deprecated异常 如果Nginx1.25.1及以后版本中,进行如下方式的配置: listen 443 ssl http2; listen...[::]:443 ssl http2; 当执行nginx -t进行检查配置或重启Nginx时,会提示如下错误: [warn] : the "listen ... http2" directive is...deprecated, use the "http2" directive instead in /etc/nginx/conf.d/s.conf:12 nginx: [warn] the "listen...此时,将对应的配置修改为如下方式即可: listen 443 ssl; listen [::]:443 ssl; 同时,如果配置了ssl on,需要去掉ssl on配置。

    3.8K40

    从内核角度分析 listen() 系统调用的 backlog 参数作用

    编写服务端程序时,需要调用 listen() 系统调用来开始监听请求连接,listen() 系统调用的原型如下: int listen(int sockfd, int backlog); 可以看到,listen...listen() 系统调用在内核的实现 当我们在程序中调用 listen() 系统调用时,会触发调用内核的 sys_listen() 函数,sys_listen() 函数的实现如下: asmlinkage...步骤2:通过调用 socket 对象的的 listen() 方法来进行监听操作。 对于 TCP协议 来说,socket 对象的 listen() 方法会绑定到 inet_listen() 函数。...所以 步骤2 最后会调用 inet_listen() 函数,inet_listen() 函数的实现如下: int inet_listen(struct socket *sock, int backlog...() 函数的实现也非常简单,主要分为两个步骤: 步骤1:调用 tcp_listen_start() 函数把 socket 对象的状态设置为 TCP_LISTEN

    1.1K20

    从内核角度分析 listen() 系统调用的 backlog 参数作用

    编写服务端程序时,需要调用 listen() 系统调用来开始监听请求连接,listen() 系统调用的原型如下: int listen(int sockfd, int backlog); 可以看到,listen...listen() 系统调用在内核的实现 当我们在程序中调用 listen() 系统调用时,会触发调用内核的 sys_listen() 函数,sys_listen() 函数的实现如下: asmlinkage...步骤2:通过调用 socket 对象的的 listen() 方法来进行监听操作。 对于 TCP协议 来说,socket 对象的 listen() 方法会绑定到 inet_listen() 函数。...所以 步骤2 最后会调用 inet_listen() 函数,inet_listen() 函数的实现如下: int inet_listen(struct socket *sock, int backlog...() 函数的实现也非常简单,主要分为两个步骤: 步骤1:调用 tcp_listen_start() 函数把 socket 对象的状态设置为 TCP_LISTEN

    1.2K10
    领券