首页 > 系统相关 >nginx优化配置进程数与cpu亲和性之间的关系,你真正了解吗???

nginx优化配置进程数与cpu亲和性之间的关系,你真正了解吗???

时间:2023-06-10 16:55:54浏览次数:48  
标签:01 亲和性 worker nginx 线程 cpu

关于nginx的进程数的配置,以及cpu亲和性的配置,大家能了解多少呢?

 worker_processes:配置线程数

在高并发的web服务器场景下,并发实际是有进程处理,那么为了保障处理并发,线程数肯定要事先启动足。打个比方就像是开餐厅,开业之前需要招聘相对数量的服务员来接待客户。

而worker_processes配置的线程数官方建议是跟你自身cpu核心数相同,当然这只是建议,如果你的cpu足够强大,1个核心可以承载2个线程,自然也可以设置为cpu核心数的2倍。

简而言之就是确保并发能够及时处理,所以要配置线程数。当然大多数情况下因为项目在刚上线的时候是无法预估准确的并发量的,所以针对这个情况,官服的建议是设置为等于cpu核心数,当然后续是可以修改的。

worker_cpu_affinity cpu亲和性

那么说到这,什么是cpu亲和性呢? 对于这条优化各位又是怎么理解的。

首先这条配置要跟worker进程数放到一起去理解,他的作用是将不同的进程绑定到不同的cpu核心上。

在默认的情况下,nginx的多个线程是有可能运行在某一个cpu核心上的,这样的话就会导致硬件资源不均,导致cpu负载异常。那么这条优化其实就是将nginx不同的进程分配到不同的cpu核心上处理,达到重复利用cpu多个核心的效果

下面附上一张配置图。

2核服务器:

分析上方配置的意思

worker_processes 6;

nginx启动6个线程去接受并发。

当然启动几个线程也并不是你自己定的,还需根据压测(apache bench)结果经行调整,我可以设置4个也可以2个 也可以6个!!!

worker_cpu_affinity 01 01 01 10 10 10;

将上方6线程前三个分配到01核上,后3个分配到02核上。

当然我也尝试将其设置为worker_cpu_affinity 01 10; 我的猜想是我如果这样设置,会不会按照轮询的方式,把进程数均匀分配到这2个线程上,但试试告诉我不可以:

 

因此worker_processes要与worker_cpu_affinity 结合到一起去理解!!

标签:01,亲和性,worker,nginx,线程,cpu
From: https://www.cnblogs.com/lgdyes/p/17471515.html

相关文章

  • Nginx 获取与传递真实访问IP
    1.环境首先,我这里的环境为nginx-1.1.2.2,通过yum安装。如果想要源码安装,需要通过如下参数,启用ngx_http_realip_module模块。--with-http_realip_module而传递真实IP到后端,需要使用到ngx_http_proxy_module模块,此模块默认会编译。对于Nginx的安装和添加nginx模块等,有问题可参考......
  • nginx及常用部署方式与性能优化
    nginx做反向代理服务器nginx配置:upstreambackend_server{server123.34.34.34weight=1server123.34.34.35weight=1}server{location/{proxy_passhttp://backend_server;proxy_set_headerHost$http_hosti:$http_host:$proxy_port;......
  • NGINX配置详解
    NGINX配置详解关于ngx虽然一直在用,但是对其配置及详细作用有些一知半解,本周趁有时间刚好一起梳理下。本篇文章将包括常用的ngx功能,如代理及负载均衡等,争取内容尽量全面丰富一些。什么是NGXNginx是开源的轻量级Web服务器、反向代理服务器,以及负载均衡器和HTTP缓存器。其特......
  • 8、利用构建好的Ubuntu镜像构建Nginx镜像
    利用DockerFile文件执行dockerbuild基于基础镜像自动构建nginx镜像做的时候可以找一台宿主机边执行命令,边写Dockerfile应用级镜像一定要有一个进程是前台执行,进程存在不至于程序启动就退出CMD:容器启动命令第一步:按照业务类型或系统类型等方式划分创建目录环境,方便后期镜像比较多......
  • nginx-clojure 源码构建一些问题
    因为nginx-clojure就是一个标准的nginx模块,一些是尝试基于源码进行构建发现一些问题的说明简单说明nginx当前1.25版本的构建是有问题的,1.24版本构建是可以的,1.23版本实际上官方已经提供了但是如果查看nginx官方文档会发现1.23版本的下载官方是似乎移除了,没直接提......
  • nginx-clojure 0.6.0 的一些新特性
    昨天制作了0.6.0的docker镜像,并说明了一些问题,以下简单说明下一些新特性新特性所有的handler可以在http以及servercontext使用了,可以方便进行组合使用nginx1.23.x支持jdk19支持,支持协程了官方提供的二进制构建基于1.23.3说明昨天也说明了,官方提供的二进制包缺......
  • 内网环境nginx配置https访问
    #!/bin/sh#createself-signedservercertificate:read-p"Enteryourdomain[www.example.com]:"DOMAINecho"Createserverkey..."opensslgenrsa-des3-out$DOMAIN.key2048echo"Createservercertificatesigningrequest.......
  • 近十年CPU性能提升效果分析
    近十年CPU性能提升效果分析测试脚本./redis-serverredis.confcpu=`cat/proc/cpuinfo|grep"modelname"|head-n1|awk'{print$7}'`./redis-benchmark-p56379-n200000-c20-q>$cpu.qpslsof-i:56379|awk'{print$2}'|xargskil......
  • CPU算力提升与实际性能提升的关系
    关于SPEC2006CPU和RedisBenchmark的理解最近研究过硬件CPU的性能和Redis这样单线程重IO服务突然想对比一下CPU算力提升占Redis性能提升的比率情况性能很大程度由CPU决定,但是其他部分的提升也会有一些促进作用.比如内存带宽,IO调度算法优化等.最近发现使用完全相同的SPECC......
  • Python获取每个用户使用的CPU和内存百分比
    任务描述:编写Python程序,查看当前系统中每个用户使用的CPU和内存百分比。准备工作:安装扩展库psutil。参考代码:连续几次运行结果:......