当前位置: 首页 > wzjs >正文

织梦增加网站英文名称西安十大广告设计公司

织梦增加网站英文名称,西安十大广告设计公司,app制作教程入门,中国企业500强前沿 本文主要介绍有关该属性的产生背景,为了解决什么问题以及内核 如何如何实现,并且利用具体的图文来展示该属性的特性。 1.SO_REUSEPORT属性产生背景 SO_REUSEPORT是什么?它是一个socket选项,允许多个套接字绑定到同一个IP地址…

前沿

          本文主要介绍有关该属性的产生背景,为了解决什么问题以及内核 如何如何实现,并且利用具体的图文来展示该属性的特性。

1.SO_REUSEPORT属性产生背景

        SO_REUSEPORT是什么?它是一个socket选项,允许多个套接字绑定到同一个IP地址和端口组合。传统的SO_REUSEADDR允许地址重用,但通常用于不同套接字绑定到同一端口但不同地址的情况,或者处理TIME_WAIT状态。而SO_REUSEPORT更进一步,允许多个套接字同时绑定到完全相同的地址和端口。那为什么需要这个选项呢?在旧版本Nginx模型是通过一个进程监听,当有链接来时,让多个子线程去真正处理工作,但是该种模型会出现惊群效效应,就是当多个继承共享同一个socket时,当有链接来时,内核会唤醒所有的进程,但实际上只有一个进程能处理。这样就造成了资源浪费。但是nginx在设计时,通过使用accept_mutex,让多个工作进程竞争accept新连接,避免了产生惊群效应,但是同样也带来了在高并发时可能会有锁竞争的开销,从而影响性能。所以在linux新版本中增加SO_REUSEPORT属性,其目的让每个进程有自己socket,可以通过多个独立进程直接监听同一个端口,避免了锁accept竞争,进而由内核来做负载均衡,提高性能。

nginx老模型:

nginx新模型:

2.SO_REUSEPORT数据内核实现

   2.1 开启SO_REUSEPORT属性

    在网络编程时,用法直接通过如下代码设置开关即可:

 int val =1;if (setsockopt(listenfd, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val)) < 0) {perror("setsockopt()");}

       当设置为1时,表示开启了该属性。这样就能通过多个独立进程共同监听相同的地址和端口。

      2.2.内核存储结构

         当绑定端口地址是,内核是哈希挂链的方式来实现将多个进程同时绑定在相同的地址和端口的。例如:

         注意:内核实现当中,仅允许同用户之间来进行端口重复绑定使用,内核做了限制,必须是相同用户下的进程的socket。其目的是为了避免其他用户盗窃当前用户的流量。

     2.3 接收链接时,内核如何指定那个进程处理链接

         经查询,监听状态的socket仍旧采用跟2.2中bind时的存储结构一样,如下图:

当有链接来是,内核会轮训查找处于listen的socket,来接收处理新的链接。但是有个问题,如果找到多个都是listen状态的socket,那该如何确定那个来处理呢?在内核中,采用了一种计分制的策略,在握手时进行目标ip地址匹配给出相应的得分。之后利用最高分的优先选择处理。那么问题又来了,如果得分都一样,那又该如何处理呢?这种情况,当所有socket得分都一样时,会随机选一个来处理请求。等驾驭在内核层形成一个负载均衡情况,避免了多进程在同个socket产生的资源锁竞争。

3.SO_REUSEPORT属性举例

  3.1 同用户下代码模拟

#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <assert.h>
#include <sys/wait.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <fcntl.h>int main()
{struct sockaddr_in address;bzero(&address, sizeof(address));address.sin_family = AF_INET;inet_pton( AF_INET, "127.0.0.1", &address.sin_addr);address.sin_port = htons(8080);int listenfd = socket(PF_INET, SOCK_STREAM, 0);assert(listenfd >= 0);int val =1;if (setsockopt(listenfd, SOL_SOCKET, SO_REUSEPORT, &val, sizeof(val)) < 0) {perror("setsockopt()");}int ret = bind(listenfd, (struct sockaddr*)&address, sizeof(address));assert(ret != -1);ret = listen(listenfd, 5);assert(ret != -1);int connfd;while (1) {printf("I am %d,wait accept connection...\n", getpid());struct sockaddr_in client_addr;socklen_t client_addrlen = sizeof( client_addr );connfd = accept( listenfd, ( struct sockaddr* )&client_addr, &client_addrlen );if (connfd != -1) {printf(" %d accept a connection success. ip:%s, prot:%d\n", getpid(), inet_ntoa(client_addr.sin_addr), client_addr.sin_port);continue;} else {printf(" %d accept a connection failed,error:%s",getpid(), strerror(errno));}char buffer[1024] = {0};int nbytes = read(connfd, buffer, 1024);printf("read from client is:%s\n", buffer);write(connfd, buffer, nbytes);}close(connfd);return 0;
}

运行多个进程:

3.2.跨用户绑定

 上图中,分别通过root和test_one用户绑定同一个地址端口,被限制报错正如2.2中描述一致。

4.总结

        以上就是SO_REUSEPORT属性的特点,实际使用中利用该属性结合其他相关的多路io高效机制特殊性,在实际使用中结合实际业务场景,从而实现高性能高可用的服务。 


文章转载自:

http://o3NVgBVN.ptmgq.cn
http://Hn0OAAAh.ptmgq.cn
http://Ql0eFxCv.ptmgq.cn
http://gX7zRsDG.ptmgq.cn
http://g1bgQAGl.ptmgq.cn
http://88FFtQcx.ptmgq.cn
http://mdA5ltUP.ptmgq.cn
http://CJK64DOc.ptmgq.cn
http://mIPjwidi.ptmgq.cn
http://jjpmqvaB.ptmgq.cn
http://dvEWc8O0.ptmgq.cn
http://BweflEUD.ptmgq.cn
http://zTda7JyY.ptmgq.cn
http://NMF3PoLi.ptmgq.cn
http://pCRsDImm.ptmgq.cn
http://vjNNWcfs.ptmgq.cn
http://zGqq0wJI.ptmgq.cn
http://rxcP3CF9.ptmgq.cn
http://nm63vAh5.ptmgq.cn
http://Gvzoj7Hq.ptmgq.cn
http://NXoKdTYl.ptmgq.cn
http://vTZAp0zw.ptmgq.cn
http://wLE9RCIq.ptmgq.cn
http://urWQ2rSe.ptmgq.cn
http://g0OrpOho.ptmgq.cn
http://tPhUOZWp.ptmgq.cn
http://Lc7aqNai.ptmgq.cn
http://r8OuqQLy.ptmgq.cn
http://nFJ4dWm5.ptmgq.cn
http://wf4r6Y4S.ptmgq.cn
http://www.dtcms.com/wzjs/635049.html

相关文章:

  • 免费flash网站源码带后台网站降权的原因
  • 珠海网站建设哪个平台好美食网站开发的难点
  • 珠海正规网站制作哪家好lol解说网站源码
  • 怎么做移动端网站WordPress5新版文章标签
  • 泰兴企业网站建设做php网站会员开店代码如何编写
  • 简述网站设计的开发流程手机端是什么
  • 网站开发留言板网站建站免费
  • 临汾网站建设价格网站建设工作汇报
  • wp做音乐网站必备广州网络科技有限公司
  • 网站建设应注意的问题有哪些怎么建设网站手机网站制作价格
  • wordpress下载网站模板wordpress怎么实现注册登录
  • 重庆免费推广网站陕西交通建设集团信息网站
  • 乡镇网站建设工作计划网页版传奇有哪些
  • 网站模板编辑wordpress优化代码
  • 关于网站开发的自我评价北京长空建设有限公司网站
  • 沈阳正规制作网站公司哪家好蚌埠集团网站建设
  • 企业网站流程图安阳网站建设
  • 黑龙江省城乡和建设厅网站首页58网站自己做
  • 珠宝网站建设公司建设刷单网站
  • 永久网站体育类网站模板
  • 锦州网站建设排行榜运营一个网站的成本
  • 建设专业网站空调安装工做网站
  • 山东省住房和城乡建设局网站产品开发流程图模板
  • 在国外做热情网站的风险html网站建设基本流程图
  • 保定网站开发搞软件开发的一般学什么专业
  • 重庆微信网站制作公司机械英文网站
  • 四平网站建设哪家好国外黄冈网站推广软件有哪些
  • 河南春辉建设集团官方网站做微信推送用什么网站
  • 襄阳网站建设公司做水产有什么网站
  • 云空间的网站wordpress程序重装