Nginx 采用主进程(master)和工作进程(worker)的多进程架构,了解如何控制这些进程对于管理 Nginx 至关重要。
# Linux/macOS
nginx -s signal
# Windows
nginx -s signal
| 信号 | 说明 |
|---|---|
stop | 快速关闭 |
quit | 优雅关闭 |
reload | 重新加载配置 |
reopen | 重新打开日志文件 |
# Linux/macOS
sudo nginx -s stop
# Windows
nginx -s stop
特点:
# Linux/macOS
sudo nginx -s quit
# Windows
nginx -s quit
特点:
# Linux/macOS
sudo nginx -s reload
# Windows
nginx -s reload
特点:
# Linux/macOS
sudo nginx -s reopen
# Windows
nginx -s reopen
用途:
ps aux | grep nginx
# 或
cat /var/run/nginx.pid
# 优雅关闭
sudo kill -QUIT $(cat /var/run/nginx.pid)
# 快速关闭
sudo kill -TERM $(cat /var/run/nginx.pid)
# 重新加载配置
sudo kill -HUP $(cat /var/run/nginx.pid)
# 重新打开日志
sudo kill -USR1 $(cat /var/run/nginx.pid)
# 升级可执行文件
sudo kill -USR2 $(cat /var/run/nginx.pid)
# 启动
sudo systemctl start nginx
# 停止
sudo systemctl stop nginx
# 重启
sudo systemctl restart nginx
# 重新加载
sudo systemctl reload nginx
# 查看状态
sudo systemctl status nginx
# 启用开机自启
sudo systemctl enable nginx
# 禁用开机自启
sudo systemctl disable nginx
# 启动
sudo start nginx
# 停止
sudo stop nginx
# 重启
sudo restart nginx
# 重新加载
sudo reload nginx
# 查看状态
sudo status nginx
# 启动
sudo service nginx start
# 停止
sudo service nginx stop
# 重启
sudo service nginx restart
# 重新加载
sudo service nginx reload
# 查看状态
sudo service nginx status
# 查看所有 Nginx 进程
ps aux | grep nginx
# 查看主进程
ps aux | grep "master process"
# 查看工作进程
ps aux | grep "worker process"
# Linux
pstree -p | grep nginx
# macOS
pstree -p $(cat /var/run/nginx.pid)
# CPU 和内存使用
top -p $(cat /var/run/nginx.pid)
# 或使用 htop
htop -p $(cat /var/run/nginx.pid)
# 查看所有连接
sudo netstat -an | grep :80
# 查看连接状态
sudo netstat -an | grep :80 | awk '{print $6}' | sort | uniq -c | sort -nr
# 或使用 ss
sudo ss -an | grep :80
user nginx;
worker_processes auto; # 自动检测 CPU 核心数
events {
worker_connections 1024;
}
worker_processes 4; # 设置为 4 个工作进程
ps aux | grep "worker process" | wc -l
# 查看当前限制
ulimit -n
# 临时增加
ulimit -n 65535
# 永久增加
sudo vim /etc/security/limits.conf
# 添加以下内容
* soft nofile 65535
* hard nofile 65535
# 查看当前限制
ulimit -u
# 临时增加
ulimit -u 4096
# 永久增加
sudo vim /etc/security/limits.conf
# 添加以下内容
* soft nproc 4096
* hard nproc 4096
# 检查配置
sudo nginx -t
# 检查端口占用
sudo netstat -tlnp | grep :80
# 检查错误日志
sudo tail -f /var/log/nginx/error.log
# 查看系统日志
sudo journalctl -u nginx -f
# 查看内核日志
sudo dmesg | grep nginx
# 查看僵死进程
ps aux | grep nginx | grep Z
# 强制结束
sudo kill -9 $(cat /var/run/nginx.pid)