当前位置: 首页 > article >正文

Nginx 性能调优与深度监控实战全解析

前言在全球互联网流量持续激增的背景下Nginx 作为高性能的反向代理、负载均衡器和 HTTP 服务器已成为企业级 Web 架构中的核心组件。其性能表现直接决定了用户访问体验和业务服务的连续性一旦 Nginx 出现性能瓶颈或故障将直接引发服务响应缓慢、甚至系统不可用的严重问题。对于运维工程师而言通过科学的性能调优手段最大化硬件资源利用率结合深度监控实现故障的提前预测与快速响应是必备的核心专业能力。本文将从 Nginx 编译安装、核心性能调优配置、日志管理、网页压缩优化到基于 GoAccess 和 Nginx VTS 的深度监控实现进行全流程、实战化的详细讲解帮助读者全面掌握 Nginx 性能调优与监控的核心技能让 Nginx 在生产环境中始终保持最佳运行状态。一、Nginx 基础环境编译安装要实现 Nginx 的高性能运行基础的编译安装配置是前提。相较于系统自带的包管理器安装源码编译安装可以自定义开启核心模块、指定运行用户从底层为性能调优打下基础。本次安装基于 Nginx 1.26.3 版本适用于 CentOS 8/9 等采用 dnf 包管理器的系统。1.1 安装编译支持软件Nginx 的配置和运行依赖 pcre、zlib、openssl 等基础库需要预先安装其开发包提供编译所需的库文件和头文件执行以下命令完成依赖安装[rootlocalhost ~]# dnf install -y gcc make pcre-devel zlib-devel openssl-devel perl-ExtUtils-MakeMaker git wget tar其中gcc 和 make 为编译工具pcre-devel 支持正则表达式解析zlib-devel 用于数据压缩openssl-devel 开启 HTTPS 支持git 和 wget 用于源码下载tar 用于解压文件。1.2 创建运行用户、组及日志目录为了保证 Nginx 运行的安全性避免使用 root 用户直接运行服务需要创建专用的无登录权限用户和组同时创建独立的日志目录并设置权限[rootlocalhost ~]# useradd -M -s /sbin/nologin nginx [rootlocalhost ~]# mkdir -p /var/log/nginx [rootlocalhost ~]# chown -R nginx:nginx /var/log/nginx-M不创建用户主目录/sbin/nologin禁止该用户通过终端登录系统chown -R将日志目录的所属用户和组设置为 nginx确保 Nginx 拥有日志写入权限1.3 源码编译与安装解压 Nginx 源码包并进入解压目录[rootlocalhost ~]# tar zxf nginx-1.26.3.tar.gz [rootlocalhost ~]# cd nginx-1.26.3执行 configure 配置命令开启核心功能模块并指定安装路径和运行用户[rootlocalhost nginx-1.26.3]# ./configure \ --prefix/usr/local/nginx \ --usernginx \ --groupnginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_stub_status_module \ --with-http_gzip_static_module \ --with-pcre \ --with-stream各核心参数说明表格参数功能说明--prefix/usr/local/nginx指定 Nginx 安装根目录--user/--groupnginx指定 Nginx 运行的用户和组--with-http_ssl_module开启 HTTPS/SSL 加密模块--with-http_v2_module开启 HTTP/2 协议支持提升传输效率--with-http_realip_module开启真实 IP 获取模块适用于反向代理场景--with-http_stub_status_module开启 Nginx 基础状态监控模块--with-http_gzip_static_module开启静态文件 gzip 压缩模块--with-pcre启用 pcre 正则表达式支持--with-stream开启 TCP/UDP 流代理支持四层负载均衡编译并安装 Nginx[rootlocalhost nginx-1.26.3]# make make install创建主程序软链接方便在任意目录执行 nginx 命令[rootlocalhost nginx-1.26.3]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/1.4 添加 Nginx 系统服务为了方便 Nginx 的启动、停止、重启和开机自启需要将其注册为系统服务创建/lib/systemd/system/nginx.service文件[Unit] DescriptionThe NGINX HTTP and reverse proxy server Afternetwork.target [Service] Typeforking ExecStartPre/usr/local/sbin/nginx -t ExecStart/usr/local/sbin/nginx ExecReload/usr/local/sbin/nginx -s reload ExecStop/bin/kill -s QUIT $MAINPID TimeoutStopSec5 KillModeprocess PrivateTmptrue Userroot Grouproot [Install] WantedBymulti-user.target服务配置说明Typeforking表示 Nginx 以守护进程方式运行ExecStartPre启动前执行配置文件检查确保配置无错误ExecReload平滑重启不中断现有连接ExecStop优雅停止等待现有连接处理完成后关闭进程PrivateTmptrue为 Nginx 分配独立的临时目录配置完成后重新加载系统服务配置启动 Nginx 并设置开机自启[rootlocalhost ~]# systemctl daemon-reload [rootlocalhost ~]# systemctl start nginx [rootlocalhost ~]# systemctl enable nginx二、Nginx 核心性能调优配置完成 Nginx 基础安装后需要针对生产环境的高并发需求对核心配置进行优化调整。主要包括运行用户组修改、进程数与连接数调优、静态缓存设置、连接超时配置、日志切割和网页压缩等方面所有配置均基于 Nginx 主配置文件/usr/local/nginx/conf/nginx.conf。2.1 修改运行用户与组Nginx 的进程分为主进程和子进程主进程由 root 创建负责监听端口和管理子进程子进程由指定用户创建负责实际处理客户端请求。Nginx 默认使用 nobody 用户存在权限管理混乱的问题需要修改为专用的 nginx 用户有两种修改方式方式 1编译安装时指定已在 1.3 中配置在./configure命令中通过--usernginx --groupnginx指定适用于新安装场景。方式 2修改配置文件指定适用于已安装完成的场景直接编辑 nginx.conf在文件开头添加 / 修改用户配置[rootlocalhost ~]# vi /usr/local/nginx/conf/nginx.conf user nginx nginx; # 第一个nginx为用户第二个为用户组修改后需执行nginx -s reload平滑重启生效。2.2 更改进程数与连接数进程数和连接数是决定 Nginx 并发处理能力的核心参数合理配置可充分利用 CPU 资源避免请求阻塞最大化提升并发处理效率。2.2.1 进程数调优worker_processesworker_processes指定 Nginx 启动的子进程数量默认值为 1在高并发环境下无法充分利用多核 CPU 资源。最佳实践是将该值设置为 CPU 的核心数高并发场景可设置为 CPU 核心数的 2 倍。查看服务器 CPU 核心数[rootlocalhost ~]# nproc 4以上命令返回结果为 4表示服务器为 4 核 CPU。修改配置文件设置进程数[rootlocalhost ~]# vi /usr/local/nginx/conf/nginx.conf worker_processes 4; # 设置为CPU核心数进程 CPU 亲和性配置worker_cpu_affinity默认情况下Nginx 的多个子进程可能会运行在同一颗 CPU 核心上导致 CPU 资源利用不均衡。通过worker_cpu_affinity可以将每个子进程绑定到指定的 CPU 核心实现 CPU 资源的最大化利用。对于 4 核 CPU配置如下worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000;其中0001、0010等为二进制掩码分别表示第 1、2、3、4 核 CPU每个掩码对应一个子进程。验证进程配置修改后重启 Nginx执行以下命令查看进程运行状态[rootlocalhost ~]# ps -ef | grep nginx root 16252 1 0 13:56 ? 00:00:00 nginx: master process /usr/local/sbin/nginx nginx 16253 16252 0 13:56 ? 00:00:00 nginx: worker process nginx 16254 16252 0 13:56 ? 00:00:00 nginx: worker process nginx 16255 16252 0 13:56 ? 00:00:00 nginx: worker process nginx 16256 16252 0 13:56 ? 00:00:00 nginx: worker process结果显示 1 个主进程和 4 个子进程说明配置生效。2.2.2 连接数调优worker_connectionsworker_connections指定单个 Nginx 子进程所能处理的最大并发连接数配置在events块中默认值为 1024。[rootlocalhost ~]# vim /usr/local/nginx/conf/nginx.conf events { worker_connections 1024; # 单个子进程最大并发连接数 }Nginx 总并发数计算公式总并发数 worker_processes × worker_connections本次配置中4 个子进程 ×1024 连接数 4096即 Nginx 最大可处理 4096 个并发连接。注意实际生产环境中总并发数还受限于系统的文件描述符限制需要同时调整系统级别的ulimit参数避免因文件描述符不足导致连接失败。2.3 静态缓存功能设置网站中的静态资源如图片、CSS、JS、图标等具有修改频率低、访问频率高的特点为这类资源设置缓存时间可让客户端浏览器将资源缓存到本地当用户再次访问时无需向服务器重新请求直接从本地缓存读取大幅提升访问速度同时降低服务器的请求压力。动态网页如 PHP、Java 后端接口因内容实时变化无需设置缓存。2.3.1 配置静态资源缓存在 nginx.conf 的http块或具体的server块中添加 location 匹配规则对指定类型的静态资源设置缓存时间[rootlocalhost ~]#vim /usr/local/nginx/conf/nginx.conf location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ { root html; # 静态资源所在根目录 expires 1d; # 缓存时间为1天可根据需求设置h小时m分钟s秒 }配置说明~ \.(gif|jpg|jpeg|png|bmp|ico)$使用正则表达式匹配常见的图片格式expires 1d设置浏览器缓存时间为 1 天超过该时间后浏览器才会向服务器重新请求资源2.3.2 配置生效与验证检查配置文件语法并平滑重启[rootlocalhost ~]#nginx -t [rootlocalhost ~]#nginx -s reload缓存验证通过浏览器访问服务器上的静态图片资源打开浏览器开发者工具F12在Network面板中查看响应头若包含Expires字段且时间为当前时间 1 天则表示缓存配置成功。示例响应头信息Content-Length: 192376 Content-Type: image/jpeg Date: Tue,04 Mar 2025 06:13:57 GMT ETag:67c018a4-2ef78 Expires: Wed,05 Mar 2025 06:13:57 GMT # 缓存过期时间 Last-Modified: Thu,27 Feb 2025 07:47:48 GMT Server: nginx2.4 设置连接超时参数在生产环境中部分客户端会因网络问题或异常操作长时间占用 Nginx 的连接资源导致其他正常请求无法获取连接造成资源浪费。通过设置连接超时参数可自动关闭长时间空闲的连接释放资源提升 Nginx 的连接利用率。核心配置为keepalive_timeout配置在 nginx.conf 的http块中[rootlocalhost ~]#vim /usr/local/nginx/conf/nginx.conf http { ............. #keepalive_timeout 0; keepalive_timeout 65 180; ............. }keepalive_timeout参数说明第一个参数65Nginx 与客户端的 keep-alive 连接超时时间超过 65 秒客户端无新请求Nginx 将主动关闭连接第二个参数180可选参数设置响应头中Keep-Alive: timeout180的时间值告知浏览器在 180 秒后主动关闭连接减少 Nginx 主动关闭连接的开销若不设置第二个参数Nginx 不会向客户端发送Keep-Alive响应头建议超时时间不宜设置过短如几秒否则会导致客户端频繁重新建立连接增加连接开销也不宜设置过长如几小时否则会造成连接资源占用。一般生产环境设置为 60-180 秒即可。2.5 日志切割配置Nginx 的访问日志和错误日志会随着运行时间不断增大若日志文件过大不仅会占用大量磁盘空间还会导致日志分析、问题排查变得困难。Nginx 本身没有内置的日志切割功能需要通过编写脚本结合 Linux 计划任务实现日志的自动切割、归档和过期删除。2.5.1 编写日志切割脚本创建脚本文件/opt/fenge.sh实现日志的移动重命名、新日志文件重建和 30 天前过期日志删除[rootlocalhost ~]# vi /opt/fenge.sh #!/bin/bash # Filename: fenge.sh # 获取前一天的日期格式为YYYYMMDD d$(date -d -1 day %Y%m%d) # 日志归档目录 logs_path/var/log/nginx # Nginx进程PID文件路径 pid_path/usr/local/nginx/logs/nginx.pid # 若归档目录不存在则创建 [ -d $logs_path ] || mkdir -p $logs_path # 移动并重命名Nginx访问日志 mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d # 向Nginx主进程发送USR1信号重建新的access.log日志文件 kill -USR1 $(cat $pid_path) # 删除30天之前的过期日志文件 find $logs_path -mtime 30 |xargs rm -rf脚本核心命令说明date -d -1 day %Y%m%d获取前一天的日期避免切割当天日志导致数据丢失kill -USR1 $(cat $pid_path)USR1 信号是 Nginx 的日志重新打开信号Nginx 接收到该信号后会关闭当前日志文件并重新创建新的日志文件实现不中断服务的日志切割find $logs_path -mtime 30 |xargs rm -rf查找归档目录中修改时间超过 30 天的文件并强制删除释放磁盘空间2.5.2 脚本授权与测试为脚本添加可执行权限[rootlocalhost ~]# chmod x /opt/fenge.sh执行脚本测试切割效果[rootlocalhost ~]# /opt/fenge.sh验证切割结果# 查看归档目录中的切割后的日志 [rootlocalhost ~]# ls /var/log/nginx test.com-access.log-20250316 # 查看Nginx日志目录确认新日志文件已创建 [rootlocalhost ~]#ls /usr/local/nginx/logs/access.log -rw-r--r-- 1 nginx root 0 3月 17 10:00 /usr/local/nginx/logs/access.log新日志文件大小为 0说明切割成功。2.5.3 添加计划任务实现自动切割通过 Linux 的 crontab 计划任务设置脚本每天凌晨自动执行实现日志的定时切割编辑 crontab 任务[rootlocalhost ~]# crontab -e添加以下配置设置每天凌晨 1:30 执行日志切割脚本30 1 * * * /opt/fenge.shcrontab 时间格式说明分 时 日 月 周30 1 * * *表示每天凌晨 1 点 30 分无论周几、几月、几日。重启 crond 服务使任务生效[rootlocalhost ~]# systemctl restart crond [rootlocalhost ~]# systemctl enable crond2.6 配置网页压缩功能Nginx 的ngx_http_gzip_module模块提供了网页内容压缩功能可在服务器将内容发送到客户端之前对响应内容进行 gzip 压缩减小数据传输体积节约服务器带宽同时提升客户端的访问速度压缩后的内容传输更快浏览器解压后正常展示。Nginx 源码编译时已默认开启该模块只需在配置文件中添加压缩优化参数即可核心配置在http块中。2.6.1 网页压缩核心配置[rootlocalhost ~]# vi /usr/local/nginx/conf/nginx.conf http { gzip on; gzip_buffers 4 64k; gzip_http_version 1.1; gzip_comp_level 2; gzip_min_length 1k; gzip_vary on; gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xmlrss; }各压缩参数详细说明表格参数功能说明gzip on;开启 gzip 压缩功能关闭为 gzip off;gzip_buffers 4 64k;分配 4 个 64KB 的缓冲区用于存储压缩后的临时数据gzip_http_version 1.1;指定支持 gzip 压缩的 HTTP 协议版本建议设置为 1.1兼容主流浏览器gzip_comp_level 2;压缩级别范围 1-91 压缩比最小、速度最快9 压缩比最大、速度最慢占用 CPU 资源更多生产环境建议设置 2-4gzip_min_length 1k;仅对大于 1KB 的内容进行压缩小文件压缩无意义还会增加 CPU 开销gzip_vary on;向代理服务器发送Vary: Accept-Encoding响应头让代理服务器根据客户端的压缩支持情况缓存内容gzip_types指定需要压缩的 MIME 类型包括文本、JS、CSS、XML 等不建议对图片、视频等已压缩资源进行二次压缩2.6.2 配置验证检查配置语法并平滑重启[rootlocalhost ~]# nginx -t [rootlocalhost ~]# nginx -s reload命令行验证压缩效果使用 curl 命令模拟客户端请求添加Accept-Encoding: gzip请求头查看响应头是否包含Content-Encoding: gzip[rootlocalhost ~]# curl -I -H Accept-Encoding: gzip 192.168.10.101 HTTP/1.1 200 OK Server: nginx/1.26.3 Date: Thu, 17 Apr 2025 01:40:43 GMT Content-Type: text/html Last-Modified: Thu, 17 Apr 2025 01:38:05 GMT Connection: keep-alive Vary: Accept-Encoding ETag: W/68005b7d-36eea8 Content-Encoding: gzip # 表示压缩生效其中-I参数表示仅获取 HTTP 响应头不获取响应主体内容-H表示添加自定义请求头。注意不要对图片、视频、压缩包等已压缩的二进制资源开启 gzip 压缩二次压缩不仅无法减小文件体积还会消耗大量 CPU 资源降低服务器性能。三、Nginx 深度监控实现完成 Nginx 性能调优后需要建立完善的监控体系实时掌握 Nginx 的运行状态、流量变化、请求响应情况等核心指标及时发现性能瓶颈和故障问题。本文介绍两种主流的 Nginx 深度监控方案GoAccess实时 Web 日志分析和Nginx VTS虚拟主机流量状态监控分别从日志分析和服务状态采集两个维度实现深度监控。3.1 基于 GoAccess 的实时日志分析监控GoAccess 是一款开源的实时 Web 日志分析器和交互式查看器支持在 Linux 终端和浏览器中运行能够快速解析 Nginx、Apache 等 Web 服务器的日志文件生成可视化的统计报告提供请求量、独立访客、带宽使用、响应时间、错误请求等核心指标且支持实时更新是 Nginx 日志监控的首选工具。3.1.1 GoAccess 核心特点完全实时终端面板每 200 毫秒更新一次HTML 报告每秒更新一次实时反映服务状态配置简单无需复杂配置只需指定日志文件和日志格式即可解析功能全面跟踪请求响应时间、按小时 / 日期统计访问量、支持多虚拟主机监控日志格式兼容支持 Nginx、Apache、Amazon S3 等几乎所有 Web 日志格式也支持自定义日志格式增量日志处理支持磁盘持久化可增量解析日志文件避免重复分析轻量高效由 C 语言编写仅依赖 ncurses 库资源占用低运行速度快3.1.2 GoAccess 安装安装编译依赖库[rootlocalhost ~]# dnf install -y gcc make ncurses-devel openssl-devel gettext-devel安装中文字体支持避免生成的报告出现中文乱码[rootlocalhost ~]# dnf install -y wqy-microhei-fonts源码编译安装 GoAccess基于 1.7.2 版本# 解压源码包 [rootlocalhost ~]# tar -xzvf goaccess-1.7.2.tar.gz # 进入解压目录 [rootlocalhost ~]# cd goaccess-1.7.2 # 配置编译参数开启UTF8和SSL支持 [rootlocalhost ~]# ./configure --enable-utf8 --with-openssl # 编译并安装 [rootlocalhost ~]# make make install编译参数说明--enable-utf8启用 Unicode 编码支持是显示中文的必备参数--with-openssl开启 SSL/HTTPS 支持可解析 HTTPS 协议的日志文件3.1.3 配置中文环境为了让 GoAccess 生成的报告显示为中文需要将系统的 Locale 设置为中文安装中文语言包[rootlocalhost ~]# dnf install -y glibc-langpack-zh设置系统默认 Locale 为中文 UTF-8[rootlocalhost ~]# localectl set-locale LANGzh_CN.UTF-8验证 Locale 配置是否生效[rootlocalhost ~]# locale LANGzh_CN.UTF-8 LC_CTYPEzh_CN.UTF-8 LC_NUMERICzh_CN.UTF-8 LC_TIMEzh_CN.UTF-8 LC_COLLATEzh_CN.UTF-8 LC_MONETARYzh_CN.UTF-8 LC_MESSAGESzh_CN.UTF-8 LC_PAPERzh_CN.UTF-8 LC_NAMEzh_CN.UTF-8 LC_ADDRESSzh_CN.UTF-8 LC_TELEPHONEzh_CN.UTF-8 LC_MEASUREMENTzh_CN.UTF-8 LC_IDENTIFICATIONzh_CN.UTF-8 LC_ALL若所有字段均为zh_CN.UTF-8说明配置生效。3.1.4 生成 GoAccess 中文实时监控报告执行以下命令解析 Nginx 访问日志并生成浏览器可访问的中文实时 HTML 报告[rootlocalhost~]# goaccess --log-formatCOMBINED --output/usr/local/nginx/html/report.html --real-time-html /usr/local/nginx/logs/access.log命令参数说明--log-formatCOMBINED指定日志格式为 Nginx 默认的 COMBINED 格式--output/usr/local/nginx/html/report.html指定生成的 HTML 报告路径放在 Nginx 的网页根目录方便浏览器访问--real-time-html开启实时更新功能报告将每秒自动刷新/usr/local/nginx/logs/access.log指定需要解析的 Nginx 访问日志文件路径执行命令后终端会显示WebSocket服务器已准备接收来自客户的连接表示 GoAccess 实时监控服务已启动不要关闭该终端窗口可通过 nohup 命令让其在后台运行。3.1.5 访问 GoAccess 监控报告在浏览器中输入 Nginx 服务器的 IP 地址 报告文件名即可访问实时监控报告http://192.168.10.101/report.html报告包含以下核心统计指标总请求数、有效请求数、失败请求数404/502 等独立访客数、请求文件数、静态文件访问量日志大小、数据传输总量、带宽使用情况按小时 / 日期的访问量趋势图最热门的请求文件、来源地址、请求方法响应时间统计最慢请求、平均响应时间错误请求详情404/500 等状态码的请求路径通过这些指标可实时掌握 Nginx 的访问情况快速定位如突发访问量激增、大量 404 错误、响应时间过长等问题。3.2 基于 Nginx VTS 的虚拟主机流量监控Nginx VTSVirtual Host Traffic Status是一款开源的 Nginx 第三方模块专门用于实时收集和分析 Nginx 的流量、性能指标及状态数据相比 GoAccess 的日志分析Nginx VTS 直接从 Nginx 服务中采集数据监控更实时、指标更全面且支持多虚拟主机监控还能将数据以 JSON 格式输出方便集成到 Prometheus、Grafana 等主流监控平台实现告警和可视化大屏展示。3.2.1 Nginx VTS 核心功能实时流量监控统计每个虚拟主机的请求量QPS、带宽使用、连接数、响应时间等核心指标状态码统计按 2xx成功、4xx客户端错误、5xx服务器错误分类统计请求数快速发现异常数据可视化提供内置的 HTML 监控页面以表格和图表展示实时数据直观易懂多格式输出支持 HTML、JSON 格式输出方便集成到第三方监控平台扩展性强支持通过 Lua 脚本自定义监控逻辑可配置数据存储策略轻量无依赖作为 Nginx 模块运行资源占用低不影响 Nginx 核心性能3.2.2 Nginx VTS 模块安装Nginx VTS 是第三方模块需要重新编译 Nginx 源码将该模块添加到 Nginx 中安装前需准备 Nginx 1.26.3 源码包和 Nginx VTS 模块源码包。解压 Nginx 源码包和 VTS 模块源码包[rootlocalhost ~]# tar xzf nginx-1.26.3.tar.gz [rootlocalhost ~]# unzip nginx-module-vts-master.zip进入 Nginx 源码目录执行 configure 配置命令添加 VTS 模块[rootlocalhost ~]# cd nginx-1.26.3 [rootlocalhost nginx-1.26.3]# ./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --add-module/root/nginx-module-vts-master核心新增参数--add-module/root/nginx-module-vts-master指定 VTS 模块的源码目录。重新编译并安装 Nginx[rootlocalhost nginx-1.26.3]# make make install注意重新编译安装不会覆盖原有的 Nginx 配置文件只需确保编译参数与原安装一致避免丢失核心模块。3.2.3 配置 Nginx VTS 监控模块编译安装完成后需要修改 Nginx 主配置文件启用 VTS 模块的流量统计和展示功能[rootlocalhost ~]# vi /usr/local/nginx/conf/nginx.conf在http块中添加 VTS 共享内存区配置启用流量统计http { ..... vhost_traffic_status_zone; # 启用流量统计共享内存区用于存储监控数据 ...... }在server块中添加监控页面配置指定访问路径和展示格式Server { ...... location /vts { vhost_traffic_status_display; # 启用VTS统计展示功能 vhost_traffic_status_display_format html; # 设置展示格式为HTML默认JSON access_log off; # 关闭监控页面的访问日志避免日志冗余 } ...... }配置说明vhost_traffic_status_zone创建共享内存区用于存储 Nginx 的流量监控数据所有虚拟主机共享该内存区vhost_traffic_status_display启用监控页面的展示功能vhost_traffic_status_display_format html设置监控页面为 HTML 格式方便浏览器访问若设置为 JSON可用于第三方监控平台采集数据access_log off关闭 /vts 路径的访问日志避免监控页面的访问请求占用日志空间3.2.4 配置生效与测试检查配置文件语法是否正确[rootlocalhost ~]#/usr/local/nginx/sbin/nginx -t启动 / 重启 Nginx 服务[rootlocalhost ~]#/usr/local/nginx/sbin/nginx访问 VTS 监控页面在浏览器中输入 Nginx 服务器 IP 地址 /vts即可访问实时监控页面http://192.168.10.101/vts3.2.5 Nginx VTS 监控指标说明VTS 监控页面包含以下核心指标按服务器级别和虚拟主机级别分类展示服务器核心状态Nginx 版本、运行时间、活跃连接数、读取连接数、写入连接数、等待连接数、总接受连接数、总处理请求数共享内存使用情况共享内存最大容量、已使用容量、已使用节点数虚拟主机流量统计每个虚拟主机的总请求数、QPS、响应时间、各状态码1xx/2xx/3xx/4xx/5xx请求数带宽统计总发送流量、发送带宽、总接收流量、接收带宽缓存统计缓存未命中、缓存绕过、缓存过期等缓存使用情况数据更新频率默认 1 秒更新一次实时反映 Nginx 运行状态通过这些指标可精准掌握每个虚拟主机的运行状态快速发现如某虚拟主机 5xx 错误激增、带宽使用异常、连接数过多等问题实现 Nginx 的精细化监控。四、总结本文从 Nginx 源码编译安装入手详细讲解了 Nginx 生产环境中的核心性能调优配置包括运行用户组修改、进程数与连接数调优、静态缓存设置、连接超时配置、日志切割和网页压缩等通过这些调优手段可充分利用服务器硬件资源提升 Nginx 的并发处理能力、响应速度和资源利用率满足高并发生产环境的需求。同时介绍了两种主流的 Nginx 深度监控方案GoAccess 和 Nginx VTS。GoAccess 基于日志分析实现了访问量、访客、响应时间等指标的实时可视化适合日志层面的监控和问题追溯Nginx VTS 作为 Nginx 第三方模块直接采集服务运行数据指标更全面、监控更实时支持多虚拟主机监控和第三方平台集成适合服务状态的实时监控和精细化管理。两者结合可实现 Nginx 从日志到服务的全维度深度监控

相关文章:

Nginx 性能调优与深度监控实战全解析

前言在全球互联网流量持续激增的背景下,Nginx 作为高性能的反向代理、负载均衡器和 HTTP 服务器,已成为企业级 Web 架构中的核心组件。其性能表现直接决定了用户访问体验和业务服务的连续性,一旦 Nginx 出现性能瓶颈或故障,将直接…...

汽车五域架构实战指南:从零开始搭建车载测试环境(含线控技术调试技巧)

汽车五域架构实战指南:从零开始搭建车载测试环境(含线控技术调试技巧) 在智能汽车研发领域,五域架构已成为电子电气系统的黄金标准。不同于传统分布式ECU架构,五域架构将整车电子系统划分为动力、底盘、座舱、自动驾驶…...

Redis五种数据类型底层

String 底层数据结构是SDS(简单动态字符串)SDS可以保存文本数据以及二进制数据(C语言字符串不行)SDS有变量监测字符串长度,因此获取长度为O(1)SDS拼接字符串会自动扩容,且会检查空间要求,因此AP…...

OpenClaw 指令使用方法详解

OpenClaw 指令使用方法详解 一、OpenClaw 简介 OpenClaw 是一个开源的个人 AI 助手框架,支持通过命令行界面(CLI)进行全面的配置、管理和操作。OpenClaw 能够在本地设备运行,并通过多种通信渠道回复消息,包括 WhatsApp…...

双端布局,Skills领先 百度“龙虾” 全家桶亮相

3月17日,在百度AIDAY龙虾专场上,百度“龙虾”全家桶正式亮相,包括“云端虾”、“手机虾”、“安全虾”多款产品上新,并发布全新自研“桌面虾”产品DuMate和全球首款“家用小龙虾”。百度还宣布上新多款Skills,其中百度…...

AI分镜生成:Qwen-Image-Edit驱动的电影叙事革新

AI分镜生成:Qwen-Image-Edit驱动的电影叙事革新 【免费下载链接】next-scene-qwen-image-lora-2509 项目地址: https://ai.gitcode.com/hf_mirrors/lovis93/next-scene-qwen-image-lora-2509 AI分镜生成技术正在重塑影视创作流程,让专业级故事板…...

直流储能电池充放电仿真与应用研究:基于buck-boost变换器的充放电流模拟与优化

直流储能电池充放电 通过buck-boost变换器对电池进行充放电仿真 充电时,用直流源对电池充电;放电时,电池向负载放电直流储能系统里buck-boost变换器是个神奇的存在——它能优雅地解决电池充放电时的电压匹配问题。今天咱们直接撸起袖子&#…...

手把手教你用kubeadm搭建谷粒商城K8s集群(含镜像加速与Flannel避坑指南)

从零构建谷粒商城Kubernetes集群实战指南 为什么选择Kubernetes部署谷粒商城? 在当今电商系统高并发、高可用的需求背景下,传统单体架构已无法满足业务快速迭代和弹性扩展的需求。谷粒商城作为典型的分布式电商系统,采用微服务架构设计&#…...

Code Connect:革新性设计开发协同工具全链路指南

Code Connect:革新性设计开发协同工具全链路指南 【免费下载链接】code-connect A tool for connecting your design system components in code with your design system in Figma 项目地址: https://gitcode.com/GitHub_Trending/co/code-connect 在现代产…...

自动化毕业设计:从脚本到可维护系统的架构演进

很多同学在做毕业设计时,为了实现“自动化”,往往会写一个简单的脚本。比如,定时爬取一些数据,或者自动处理一批文件。脚本跑起来那一刻很有成就感,但到了项目演示或者老师要求部署的时候,问题就来了&#…...

影墨·今颜模型压缩与量化:在边缘设备部署的可行性探索

影墨今颜模型压缩与量化:在边缘设备部署的可行性探索 最近几年,那些能生成惊艳画作的AI模型,比如影墨今颜,确实让人着迷。但一个现实的问题是,它们往往“个头”巨大,需要强大的云端算力才能运行。这就像拥…...

【vllm】deepep

auto recv_x torch::empty({num_recv_tokens, hidden}, x.options()); 这行代码的作用是: 为当前 GPU 分配一块显存缓冲区,用于存放即将从其他所有 GPU 接收到的 token 数据。 这是 dispatch 操作中一个至关重要的步骤,我们可以把它理解为“…...

【cuda】deepep 学习 cudaHostGetDevicePointer cudaHostAllocMapped

https://blog.csdn.net/KIDGIN7439/article/details/146131893?spm1001.2014.3001.5502 notify_dispatch过程中会计算其他所有rank发送给当前rank多少token,写入到host的moe_recv_counter_mapped,还会计算其他所有rdma_rank发送给当前rank多少token&am…...

收藏!小白程序员必看:手把手带你理解大模型Manus的核心架构与工作原理

本文深入解析了AI智能体Manus的核心架构,包括规划、记忆和工具使用三大模块,并详细阐述了其基于Multi-Agent系统的工作流程。Manus通过自主规划、上下文理解和多代理协作等技术特点,实现了从任务接收、理解、分解到最终交付的完整闭环。文章还…...

颠覆性信息聚合工具全景指南:从知识管理到信息筛选的开源解决方案

颠覆性信息聚合工具全景指南:从知识管理到信息筛选的开源解决方案 【免费下载链接】ALL-about-RSS A list of RSS related stuff: tools, services, communities and tutorials, etc. 项目地址: https://gitcode.com/gh_mirrors/al/ALL-about-RSS 在信息爆炸…...

Qwen3-0.6B-FP8惊艳效果:中文法律条文解读与案例匹配准确率

Qwen3-0.6B-FP8惊艳效果:中文法律条文解读与案例匹配准确率 你有没有想过,一个只有6亿参数的小模型,能在专业法律领域做出什么成绩?今天我要分享的Qwen3-0.6B-FP8,可能会颠覆你对小模型的认知。 这个模型采用了FP8量…...

计算机毕业设计springboot基于内容推荐算法的职业选择推荐系统 基于SpringBoot与内容推荐算法的智能职业匹配平台 SpringBoot驱动的个性化职业发展规划推荐系统

计算机毕业设计springboot基于内容推荐算法的职业选择推荐系统71z9q30d (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。在数字化转型的浪潮中,职业选择已成为个人发展…...

深港无缝清关的未来发展趋势

深港无缝清关的未来发展趋势将不仅依赖于技术的创新,也受到政策的有力支持。随着数字关锁技术的全覆盖,货物在通关时将能借助精准的技术实现实时监控,这将有助于简化通关流程。政策方面,政府通过减轻企业在通关时所需文书工作的负…...

程序员通吃版:从 0 到 1 学 AI Agent!用 LangGraph 六步实现,新手也能上手的实操指南

如果说此前AutoGPT代表的早期自主Agent还停留在“宽泛探索”阶段,那么2025年无疑成为AI Agent真正扎根生产环境的关键元年。与过去追求“全场景覆盖”的通用型Agent不同,如今能够落地企业业务的生产级Agent,正朝着垂直化深耕、边界清晰化、管…...

PX4 Gazebo仿真入门:如何快速替换飞机模型和地图(附常见错误排查)

PX4 Gazebo仿真进阶指南:飞机与地图模型深度定制实战 当你第一次打开PX4的Gazebo仿真环境,看到默认的无人机在空旷的测试场地飞行时,是否想过如何让这个虚拟世界更贴近你的实际需求?无论是为了测试特定机型的气动特性,…...

如何用GPU租用服务高效完成模型微调?|星宇智算实测

模型微调是AI研发的核心环节,涵盖大模型适配、小样本学习、场景化优化等核心需求,其效率与精度直接决定AI项目落地进度。据IDC 2026年最新数据显示,78%的AI研发团队存在“本地GPU资源不足、硬件迭代滞后、运维成本过高”的痛点,无…...

AI 真的会让程序员失业吗?我的答案是 “会,但也不会”

“学编程还有必要吗?AI都能写代码了,以后程序员是不是就没饭吃了?” 每次在评论区看到类似的提问,我都忍不住多琢磨几句——毕竟作为一个分享编程知识的博主,要是程序员这个职业真的被AI彻底取代,我这份“…...

RS232协议在OIF-ITLA-MSA光模块通信中的实战应用(附源码解析)

RS232协议在OIF-ITLA-MSA光模块通信中的实战应用(附源码解析) 在光电通信领域,OIF-ITLA-MSA协议作为可调谐激光器模块的行业标准,其底层通信机制直接影响设备控制的实时性与可靠性。本文将深入剖析RS232协议在该场景下的工程实现细…...

Qwen3-ASR-0.6B与算法优化:提升语音识别准确率的技巧

Qwen3-ASR-0.6B与算法优化:提升语音识别准确率的技巧 1. 引言 语音识别技术在日常生活中的应用越来越广泛,从智能助手到会议转录,都离不开准确的语音转文字功能。Qwen3-ASR-0.6B作为一款轻量级的语音识别模型,虽然在参数规模上相…...

网络流量分析AI工具:从PCAP中自动识别C2通信和隧道

前言 1. 技术背景 在现代网络攻防对抗中,命令与控制(Command and Control, C2) 通信是攻击链的核心环节。攻击者在突破边界后,需要通过隐蔽的信道对其植入的恶意软件或后门进行远程控制,执行数据窃取、横向移动等恶意…...

UI-TARS-desktop与Anaconda集成的数据科学工作流

UI-TARS-desktop与Anaconda集成的数据科学工作流 1. 引言 数据科学家每天都要面对繁琐的重复性任务:环境配置、数据清洗、可视化分析、模型训练……这些工作占据了大量宝贵时间。想象一下,当你需要快速测试一个新算法时,却要花半天时间配置…...

datetime 和 timestamp 核心区别与用法

1. 核心概念类型本质时区影响适用场景datetime存储 “绝对时间字符串”无,存啥显示啥绝大多数业务场景(订单时间、创建时间等)timestamp存储 “Unix 时间戳(秒)”自动按数据库时区转换跨时区同步的场景(全球…...

WhisperLiveKit:实时本地语音转写与说话人分离的高效集成方案

WhisperLiveKit:实时本地语音转写与说话人分离的高效集成方案 【免费下载链接】WhisperLiveKit Real-time, Fully Local Speech-to-Text and Speaker Diarization. FastAPI Server & Web Interface 项目地址: https://gitcode.com/GitHub_Trending/wh/Whisper…...

PROJECT MOGFACE智能客服应用:结合MySQL实现对话历史管理与分析

PROJECT MOGFACE智能客服应用:结合MySQL实现对话历史管理与分析 最近和几个做企业服务的朋友聊天,大家不约而同地提到了同一个痛点:智能客服用起来是方便,但聊完就完了,海量的对话数据就像泼出去的水,想回…...

FunASR语音识别WebUI零基础教程:5分钟搭建中文语音转文字系统

FunASR语音识别WebUI零基础教程:5分钟搭建中文语音转文字系统 1. 引言:为什么你需要这个语音识别工具? 想象一下,你手头有一段会议录音需要整理成文字,或者有一个视频需要添加字幕。传统方法要么花钱请人听写&#x…...