简介
Nginx默认没有开启利用多核cpu,我们可以通过增加worker_cpu_affinity配置参数来充分利用多核cpu的性能。cpu是任务处理,计算最关键的资源,cpu核越多,性能就越好。
规则设定
(1)cpu有多少个核,就有几位数,1代表内核开启,0代表内核关闭
(2)worker_processes最多开启8个,8个以上性能就不会再提升了,而且稳定性会变的更低,因此8个进程够用了
示例:linode VPS 最低配,8核CPU,nginx配置信息:
worker_processes 8; worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
CPU工作状况:(输入 top 后,按1 查看)
top - 11:16:56 up 39 days, 1:16, 2 users, load average: 0.09, 0.07, 0.10 Tasks: 134 total, 1 running, 133 sleeping, 0 stopped, 0 zombie Cpu0 : 0.0%us, 0.0%sy, 0.0%ni, 95.1%id, 0.0%wa, 0.0%hi, 0.0%si, 4.9%st Cpu1 : 0.0%us, 0.0%sy, 0.0%ni, 98.8%id, 0.0%wa, 0.0%hi, 0.0%si, 1.2%st Cpu2 : 2.3%us, 0.0%sy, 0.0%ni, 92.8%id, 0.0%wa, 0.0%hi, 0.0%si, 4.9%st Cpu3 : 4.6%us, 9.2%sy, 0.0%ni, 81.2%id, 0.0%wa, 0.0%hi, 0.0%si, 5.0%st Cpu4 : 1.9%us, 0.0%sy, 0.0%ni, 96.1%id, 0.0%wa, 0.0%hi, 0.0%si, 1.9%st Cpu5 : 0.0%us, 0.0%sy, 0.0%ni, 98.1%id, 0.0%wa, 0.0%hi, 0.0%si, 1.9%st Cpu6 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu7 : 0.0%us, 0.0%sy, 0.0%ni, 96.9%id, 0.0%wa, 0.0%hi, 0.0%si, 3.1%st Mem: 1024884k total, 891244k used, 133640k free, 144852k buffers Swap: 262140k total, 4172k used, 257968k free, 434072k cached
上面的配置表示:8核CPU,开启8个进程。00000001表示开启第一个cpu内核,00000010表示开启第二个cpu内核,依次类推;有多少个核,就有几位数,1表示该内核开启,0表示该内核关闭。
配置实例:
1、2核CPU,开启2个进程
worker_processes 2; worker_cpu_affinity 01 10;
2、2核CPU,开启4进程
worker_processes 4; worker_cpu_affinity 01 10 01 10;
3、2核CPU,开启8进程
worker_processes 8; worker_cpu_affinity 01 10 01 10 01 10 01 10;
4、8核CPU,开启2进程
worker_processes 2; worker_cpu_affinity 10101010 01010101;
说明:10101010表示开启了第2,4,6,8内核,01010101表示开始了1,3,5,7内核
通过apache 的ab测试查看nginx对CPU的使用状况:
top - 11:25:53 up 39 days, 1:25, 2 users, load average: 0.33, 0.11, 0.09 Tasks: 133 total, 3 running, 130 sleeping, 0 stopped, 0 zombie Cpu0 : 2.3%us, 0.9%sy, 0.0%ni, 82.7%id, 0.0%wa, 0.0%hi, 0.0%si, 14.1%st Cpu1 : 1.7%us, 0.6%sy, 0.0%ni, 81.8%id, 0.0%wa, 0.0%hi, 0.0%si, 16.0%st Cpu2 : 2.8%us, 1.9%sy, 0.0%ni, 74.4%id, 0.0%wa, 0.0%hi, 0.0%si, 20.9%st Cpu3 : 2.0%us, 0.9%sy, 0.0%ni, 83.0%id, 0.0%wa, 0.0%hi, 0.0%si, 14.0%st Cpu4 : 2.2%us, 0.8%sy, 0.0%ni, 79.3%id, 0.0%wa, 0.0%hi, 0.0%si, 17.6%st Cpu5 : 3.6%us, 1.1%sy, 0.0%ni, 75.9%id, 0.0%wa, 0.0%hi, 0.0%si, 19.5%st Cpu6 : 2.1%us, 0.9%sy, 0.0%ni, 87.2%id, 0.0%wa, 0.0%hi, 0.0%si, 9.8%st Cpu7 : 1.7%us, 0.6%sy, 0.0%ni, 80.6%id, 0.0%wa, 0.0%hi, 0.0%si, 17.1%st Mem: 1024884k total, 891020k used, 133864k free, 144912k buffers Swap: 262140k total, 4172k used, 257968k free, 434244k cached
如果多个CPU内核的利用率都相差不多,证明nginx己经成功的利用了多核CPU。
测试结束后,CPU内核的负载应该都同时降低。
相关推荐
在Nginx的配置中,`worker_processes`和`worker_cpu_affinity`是两个重要的参数,它们直接影响到Nginx服务器的性能和资源利用率。** **一、worker_processes** `worker_processes`参数用于设置Nginx工作进程的数量...
在多核CPU系统中,可以使用worker_cpu_affinity指令来优化worker进程的性能。 error_log指令 error_log指令用于设置错误日志的路径和级别。可以设置多个error_log指令来记录不同的日志级别,例如error_log logs/...
在日常的运维工作中,经常会用到nginx服务,也时常会碰到nginx因高并发导致的性能瓶颈问题。今天这里简单梳理下nginx性能优化的配置(仅仅依据本人的实战经验而述,如有不妥,敬请指出~...worker_cpu_affinity 0000000
# worker_cpu_affinity 0001 0010 0100 1000 worker_rlimit_nofile 65535; error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; pid logs/nginx.pid; events { ...
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; ``` - **说明**: - 将进程绑定到特定 CPU 核可以减少 CPU 之间的切换开销,从而提高性能。 - `worker_...
`worker_cpu_affinity`用于设置进程的CPU亲和性,使得不同进程绑定到不同的CPU核心,以避免过多的上下文切换,提高效率。 在`events`块中,`use epoll`选择了Linux 2.6及以上内核支持的高效事件驱动模型,`worker_...
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8 个进程分配到8 个cpu,当然可以写多个,或者将一个进程分配到多个cpu。 3....
Nginx 配置文件主要分成四部分:main(全局设置)、http(HTTP 的通用设置)、server(虚拟主机设置)... worker_cpu_affinity 设置 worker 进程的 CPU 粘性,以避免进程在 CPU 间切换带来的性能消耗。如 worker_cp
2. worker_cpu_affinity配置项用于设置每个worker进程应绑定到特定的CPU核心上。这样做可以减少进程间切换带来的开销,提高CPU的使用效率。在上面的内容中,给出的例子是为了将8个worker进程均匀分配到8个CPU核心上...
代码如下:worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。 ...
接下来,我们要配置`worker_cpu_affinity`来确保每个worker进程绑定到不同的CPU核心上。在Linux系统中,我们可以使用`cat /proc/cpuinfo`来查看CPU核心信息,或者使用`cat /proc/cpuinfo | grep "processor" | wc -l...
- **worker_cpu_affinity**: 用于绑定工作进程到特定的 CPU 核心,如 `worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;` 可以将8个工作进程分别绑定到8个CPU核心。...
2. **worker_cpu_affinity**:这个指令用于分配每个工作进程到特定的CPU核心,以避免跨核心通信带来的性能损失。例子中将8个工作进程分别分配到8个CPU核心。 3. **worker_rlimit_nofile**:设定每个Nginx进程能打开...
2. **`worker_cpu_affinity`**:此参数用于将Nginx的工作进程绑定到特定的CPU核心上,以减少上下文切换带来的性能损失。例如,如果服务器有8个核心,可以通过设置`worker_cpu_affinity 00000001 00000010 00000100 ...
2. **worker_cpu_affinity**: 通过此指令可以指定每个工作进程绑定到哪个CPU核心,确保负载均衡。示例中,8个进程分别绑定了8个CPU核心。 3. **worker_rlimit_nofile**: 设置每个Nginx进程能打开的最大文件描述符...
- **配置示例:** `worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;` 这里将8个进程分别绑定到8个CPU核心上。 **3. **`worker_rlimit_nofile`**:** - **作用:** ...
worker_cpu_affinity 000001 000010 000100 001000 010000 100000; ``` 2. 配置负载均衡方式为 URL_HASH ```nginx upstream snsoft { server 172.16.22.11:8000; server 172.16.22.12:8000; server 172.16.22.13:...