设为首页 加入收藏

TOP

Nginx实用教程(二):配置文件入门(二)
2017-10-12 17:58:13 】 浏览:8971
Tags:Nginx 实用 教程 配置 文件 入门
name threads=number [max_queue=number];
  • 默认值:thread_pool default threads=32 max_queue=65535;
  • 语境:main
  • 在使用异步IO的情况下,定义命名线程池,并设置线程池大小和等待队列大小。当线程池中所有线程都繁忙时,新任务会放在等待队列中,如果等待队列满了,任务会报错退出。

    命名线程池可以定义多个,供http模块的异步线程指令(aio)调用。

    此指令在v1.7.11中出现。

     

    • 语法:timer_resolution interval;
    • 默认值:无
    • 语境:main

    设置时间精度,减少worker进程调用系统时间函数的次数。默认情况下,每个核心事件都会调用gettimeofday()接口来获得系统时间,以便nginx计算连接超时等工作,此指令指定更新时间的间隔,nginx在间隔时间内只调用一次系统时间函数。

     

    • 语法:user user [group];
    • 默认值:user nobody nodoby;
    • 语境:main

    指定master启动worker进程使用的linux用户和组。如果组(group)没有指定,那么会默认用一个和user同名的组名。

     

    • 语法:worker_processes number | auto
    • 默认值:worker_processes 1
    • 语境:main

    指定worker进程的数量。进程数最好是CPU核心数或CPU核心数的倍数。当设置为auto时,nginx会尝试自动获取CPU核心数并设置。

    auto参数从v1.3.8和v1.2.5版本以后支持。

     

    • 语法:worker_cpu_affinity cpumask ...;
    •    worker_cpu_affinity auto [cpumask];
    • 默认值:无
    • 语境:main

    将worker进程绑定到CPU核心,每个worker进程对应一个二进制掩码,掩码的每一位对应一个CPU。默认情况下,worker不与cpu核心绑定。此指令只适用于Linux和FreeBSD。

    举例:

    worker_processes 4;
    worker_cpu_affinity 0001 0010 0100 1000;

    表示有4个worker进程,第一个绑定到CPU0,第二个绑定到CPU1,以此类推,4个进程分别绑定一个CPU核心。

    再例:

    worker_processes 2;
    worker_cpu_affinity 0101 0101;

    表示将第一个进程绑定到CPU0/CPU2,第二个worker进程绑定到CPU1/CPU3,这个例子适用于超线程场景,即一个核心虚拟出两个CPU线程。

    值auto(v1.9.10)允许自动和可用的CPU绑定:

    worker_process auto;
    worker_cpu_affinity auto;

    掩码(mask)可用用于限制某些CPU参加绑定。例如:

    worker_cpu_affinity auto 01010101;

    只有CPU0/2/4/6参与绑定,其他的CPU不分配worker进程。

     

    • 语法:worker_rlimit_core size;
    • 默认值:无
    • 语境:main

    为worker进程修改系统核心转储文件(core file)的大小限制。通常提升这个值不需要重启主进程。

     

    • 语法:worker_rlimit_nofile number;
    • 默认值:无
    • 语境:main

    修改worker进程最大可打开句柄数限制。通常提升这个值不需要重启主进程。

     

    • 语法:worker_shutdown_timeout time;
    • 默认值:无
    • 语境:main

    此指令在v1.11.11中出现。用于设置安全地结束一个worker进程的超时时间。

    当安全结束一个worker进程时,会停止对worker进程分配新连接,并等待他处理完当前的任务后再退出,如果设置了超时时间,超时后nginx会强制关闭worker进程的连接。

     

    • 语法:working_directory directory;
    • 默认值:无
    • 语境:main

    指定默认工作路径。主要用于worker进程导出内存转储文件,为worker进程指定的用户需要有改文件的写入权限。

     

    连接处理控制指令

    • 语法:events { ... }
    • 默认值:无
    • 语境:main

    作用只是开辟一个指令区块,events语境中配置的指令用于控制连接处理行为。

     

    • 语法:accept_mutex on | off;
    • 默认值:accept_mutex off;
    • 语境:events

    当启用这个参数时,会使用互斥锁交替给worker进程分配新连接,否则话所有worker进程会争抢新连接,即或造成所谓的“惊群问题”,惊群问题会使nginx的空闲worker进程无法进入休眠状态,造成系统资源占用过多。启用此参数会一定程度上导致后台服务器负载不均衡,但是在高并发的情况下,关闭此参数可以提高nginx的吞吐量。

    在支持epoll的操作系统上不需要启用accept_mutex(v1.11.3后),使用了reuseport功能也不需要启用(v1.9.1后,需要操作系统支持SO_REUSEPORT socket选项,Linux 3.9+)。

    在v1.11.3以前版本中,默认值为on。

     

    • 语法:accept_mutex_delay time;
    • 默认值:accept_mutex_delay 500ms;
    • 语境:events

    如果accept_mutex参数启用,当一个空闲worker进程尝试获取互斥锁时发现有另一个worker进程已经获得互斥锁并处理新连接,这个空闲的worker进程等待下一次获取互斥锁尝试的时间。而获得互斥锁的进程在处理完当前连接后,会立即尝试获取互斥锁,因此此数值较大或连接压力较小时,会造成部分worker进程总是空闲,一部分进程总是繁忙的情况。

     

    • 语法:debug_connection address | network | unix:;
    • 默认值:无
    • 语境:events

    需要debug模块支持,需确认安装时包括了debug模块,可以使用nginx -V命令确定包含--wih-debug参数。

    对特定的客户发起的连接开启debugging级别日志,用于分析和拍错。可以指定IPv4或者IPv6地址(v1.3.0,v1.2.1)或一个无类网段或域名,或UNIX socket(v1.3.0,v1.2.1)。例如:

    events {
        debug_connection 127.0.0.1;
        debug_connection localhost;
        debug_connection 192.168.2.0/24;
        debug_connection 2001:0db8::/32;
        debug_connection unix:;
    }

    非指定连接的日志级别依然由error_log指令决定。

     

    • 语法:multi_accept on | off;
    • 默认值:multi_accept off;
    • 语境:events

    当设置为off时,一个worker进程获得互斥锁时一次只

    首页 上一页 1 2 3 下一页 尾页 2/3/3
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇Cent OS 安装配置 步骤 下一篇上下文交换

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目