下面是我main模块的介绍,加关注,学习更多相关内容。
main配置指的是下面几项:
user nginx;
worker_processes = 1;
error_log /var/log/nginx/error.log;
worker_rlimit_nofile 20000;
pid /var/run/nginx.pid;
(1)user nginx;
指定运行ngnix的用户为ngnix
(2)worker_processes = 1;
启动进程数 通常跟逻辑cpu数相等,查询cpu数方法如下:
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
(3)error_log /var/log/nginx/error.log;
#错误日志配置 注意路径权限;指定全局错误日志的路径,错误日志可选项 有[debug|info|notice|warn|error|crit]详细的介绍在后面会补上,请看我后面的博客。
(4)worker_rlimit_nofile 2000;
#worker进程的最大打开文件限制数 如果不设置的话,这个值为操作系统的限制 你可以使用ulimit -a命令来查看
ulimit -a
输出如下
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7800
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 7800
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
其中的open files 即为操作系统的最大限制数 如果nginx出现too many open files 不妨增大这个值
(5)pid /var/run/nginx.pid;
配置pid 文件路径,
pid文件主要用于实现单实例运行进程。过程是这样的:
- 进程启动,尝试对pid文件加排它锁
- 如果失败则表示有一个实例在运行,退出
- 如果成功则表示当前是唯一的实例,
getpid()
的结果写入这个文件,继续运行 - 进程退出或崩溃,系统会自动释放排它锁
- 发送控制信号。例如
nginx -s reload
这种命令就是获取到pid文件中的pid,来对这个pid发送信号实现的。
pid使用方法
(a)、从容停止nginx
kill -QUIT 6019 #nginx主进程号
kill -QUIT cat /usr/local/nginx/logs/nginx.pid
(b)、快速停止nginx
kill -TERM /INT nginx主进程号
kill -TERM /INT cat /usr/local/nginx/logs/nginx.pid
(c)、强制停止所有的nginx进程
pkill -9 nginx
(d)、平滑重启nginx
修改了nginx的配置文件要重启nginx;重启之前要检查配置文件是否正确:
# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful
# kill -HUP cat /usr/local/nginx/logs/nginx.pid`
nginx的平滑重启
kll HUP Nginx主进程号
或者
kill HUP nginx.pid文件按存放路径•