"该资源主要介绍了如何在 Nginx 配置中启用 `status` 模块以监控服务器状态,并提供了部分服务器当前的连接状态数据。通过访问特定的 URL(如 `/status`),可以查看 Nginx 的活跃连接、处理请求等信息。此外,还提到了 `netstat` 命令用于检查 PHP-CGI 连接以及系统参数对连接队列大小的影响。"
详细知识点:
1. **Nginx Status 模块**:
Nginx 提供了一个名为 `stub_status` 的模块,允许管理员监控 Nginx 服务器的状态,包括活动连接、已接受、已处理的请求等。配置中通过 `location /status` 定义了访问状态页面的路径。
2. **Nginx 配置示例**:
```
server {
listen 216.93.169.28:80;
server_name 216.93.169.28;
location /status {
stub_status on;
access_log off;
allow 120.35.5.233/32; # 只允许特定 IP 访问
deny all; # 禁止其他所有 IP 访问
}
}
```
在这段配置中,`listen` 指定了服务器监听的 IP 和端口,`server_name` 设置了服务器名。`stub_status on` 启用了状态模块,`access_log off` 禁止了该位置的日志记录,`allow` 和 `deny` 规则定义了访问控制。
3. **Nginx 状态信息**:
- `Active connections: 353` 表示当前活跃的连接数。
- `server accepts handled requests` 显示了服务器接受、处理的请求数以及总请求数。
- `Reading: 1 Writing: 1 Waiting: 351` 分别表示读取、写入和等待(空闲)的连接数。
4. **连接状态详解**:
- `Reading` 表示 Nginx 正在从客户端读取请求头的数量。
- `Writing` 指示 Nginx 正在向客户端发送响应头或响应体的数量。
- `Waiting` 代表已完成请求处理且等待新请求的活动连接数。
5. **系统连接队列参数**:
- `backlog` 参数设置监听套接字的最大连接队列长度,值 `-1` 表示使用系统默认值。
- `net.core.netdev_max_backlog` 是内核参数,限制每个网络接口接收数据包的队列长度,默认值可能会影响 Nginx 的连接处理能力。
- `net.ipv4.tcp_max_syn_backlog` 控制 TCP 连接处于 SYN_RECV 状态的半连接队列的最大长度,对于高并发场景,增大这个值有助于处理更多连接请求。
6. **检查 PHP-CGI 连接**:
使用 `netstat -anpo | grep php-cgi | grep CONNECTED | wc -l` 命令可以统计当前与 PHP-CGI 进程建立的活跃连接数量。
7. **优化连接处理**:
调整系统参数如 `net.core.netdev_max_backlog` 和 `net.ipv4.tcp_max_syn_backlog` 可以优化 Nginx 处理高并发连接的能力,确保服务器能有效地处理大量请求。