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

news2026/3/19 14:38:03
前言在全球互联网流量持续激增的背景下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 从日志到服务的全维度深度监控

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2422690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…