• nginx性能调优一(worker_processes、worker_cpu_affinity参数配置)


    Nginx worker 进程个数

    语法:worker_processes number;
    默认:worker_processes 1;
    worker 进程的数量会直接影响性能,那么,用户配置多少个 worker 进程才好呢?这实
    际上与业务需求有关。
    每个 worker 进程都是单线程的进程,它们会调用各个模块以实现多种多样的功能。如
    果这些模块确认不会出现阻塞式的调用,那么,有多少 CPU 内核就应该配置多少个进程;反 之,如果有可能出现阻塞式调用,那么需要配置稍多一些的 worker 进程。

    查看CPU核数:cat /proc/cpuinfo |grep "cores"|uniq或者:top命令后 按1

    并用worker_cpu_affinity 配置来绑定 CPU 内核

    为什么要绑定 worker 进程到指定的 CPU 内核呢 ?假定每一个 worker 进程都是非常繁忙的 ,如果多个 worker 进程都在抢同一个 CPU ,那么这就会出现同步问题。反之 ,如果每一 个 worker 进程都独享一个 CPU,就在内核的调度策略上实现了完全的并发。

    例如:

    2个CPU内核
    worker_processes 2;
    worker_cpu_affinity 01 10;

    4个CPU内核

    worker_processes 4;
    worker_cpu_affinity 1000 0100 0010 0001;

    8个CUP内核

    worker_processes 8;
    worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

    worker_cpu_affinity补充

    nginx默认是没有开启利用多核cpu的配置的。需要通过增加worker_cpu_affinity配置参数来充分利用多核cpu,cpu是任务处理,当计算最费时的资源的时候,cpu核使用上的越多,性能就越好。

    配置nginx多核cpu,worker_cpu_affinity使用方法和范例

    2核cpu,开启2个进程

    worker_processes 2;
    worker_cpu_affinity 01 10;

    解释:01表示启用第一个CPU内核,10表示启用第二个CPU内核

    worker_cpu_affinity 01 10;表示开启两个进程,第一个进程对应着第一个CPU内核,第二个进程对应着第二个CPU内核。

    2核cpu,开启4个进程

    worker_processes 4;
    worker_cpu_affinity 01 10 01 10;

    解释:开启了四个进程,它们分别对应着开启2个CPU内核

    4个cpu,开启4个进程

    worker_processes 4;
    worker_cpu_affinity 0001 0010 0100 1000;

    解释:0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推

    4核cpu,开启2个进程

    worker_processes 2;
    worker_cpu_affinity 0101 1010;

    解释:0101表示开启第一个和第三个内核,1010表示开启第二个和第四个内核;2个进程对应着四个内核;worker_cpu_affinity配置是写在/etc/nginx/nginx.conf里面的;2核是 01,四核是0001,8核是00000001,有多少个核,就有几位数,1表示该内核开启,0表示该内核关闭。

    8核cpu,开启8个进程

    worker_processes 8;
    worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

    解释:0001表示启用第一个CPU内核,0010表示启用第二个CPU内核,依此类推;worker_processes最多开启8个,8个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了。

    配置完之后可以重启nginx,用ab工具或者wrk工具,可以进行性能测试,在服务器上执行top,然后按1,就可以看到cpu工作情况,如果多个cpu内核的利用率差不多,就证明nginx已经成功利用了多核cpu,测试结束后,cpu内核的负载都同时降低。

    参考:

      1、https://blog.csdn.net/liuxiaoming1109/article/details/80989722

      2、https://blog.csdn.net/u011957758/article/details/50959823

      3、https://www.cnblogs.com/cheyunhua/p/10670070.html

  • 相关阅读:
    临时表的问题
    List集合和Set集合互转
    mysql数据库事件
    mysql存储过程事务
    N皇后问题
    递归实现字符数组的全排列及组合
    判断一个序列是否为某二叉搜索树的后续遍历结果
    递归实现两个有序链表的合并
    递归实现字符串反转
    根据字节数截取字符串
  • 原文地址:https://www.cnblogs.com/116970u/p/13686398.html
Copyright © 2020-2023  润新知