Nginx性能调优与深度监控

news2025/5/11 23:52:59

目录

1更改进程数与连接数

(1)进程数

(2)连接数

2,静态缓存功能设置

(1)设置静态资源缓存

(2)验证静态缓存

3,设置连接超时

4,日志切割

(1)编写脚本

(2)执行/opt/fenge.sh测试日志文件是否被切割

5,配置网页压缩

二,nginx的深度监控

1,GoAccess简介

(1)GoAccess安装

安装编译依赖

安装中文字体支持

源码编译安装GoAccess

(2)配置中文环境

设置系统locale为中文

验证locale是否生效

(3)GoAccess生成中文报告

(4)测试访问

2,nginx vts简介

(1)nginx vts安装

(2)nginx配置开启vts

(3)测试访问


先安装nginx(1.26.3版)略

1更改进程数与连接数

(1)进程数

在高并发环境中,需要启动更多的Nginx进程以保证快速响应,用以处理用户的请求,避免造成阻案。使用psaux命令查看Nginx运行进程的个数。从命令执行结果可以看出msterprocess是ginx的主进程,开启1个:workerprocess是子进程,子进程也是开启了1个。修改Nginx的配置文件的workerprocesses参数,一般设为CPU的个数或者核数,在高并发的情况下可设置为CPU个数或者核数的2倍,可以查看CPU的核数以确定参数

修改完后,重启服务,使用ps aux查看运行进程数的变化情况。从下面执行结果中可以看出开启了1个主进程和4个子进程,参数设置起到了作用。

参数设置为4,和PU的核数相同。运行进程数多一些,响应客户访问请求时,Nginx就不会临时启动新的进程提供服务,减少了系统的开销,据升了服务速度。

默认情况下,Nginx的多个进程可能更多的跑在一颗CPU上。为了充分利用硬件多核务CPU,可以分配不同的进程给不同的CPU处理。在一台4CP服务器上,可以设置每个进程分别由不同的CPU核心处理,达到CP的性能最大化。

(2)连接数

单个Worker进程最大并发连接数

2,静态缓存功能设置

当Nginx将网页数据返回给客户端后,可设置缓存时间,以便在日后进行相同内容的请求时直接返回,以避免重复请求,加快访问速度。缓存时间一般针对静态资源进行设置,对动态网页不用设置缓存时间。

(1)设置静态资源缓存

nginx -t

nginx -s reload

(2)验证静态缓存

通过浏览器查看,响应头中包含字段即为缓存成功

3,设置连接超时

在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间。可以修改配置文件einx.conf,设置keepalive_timeout 超时时间。

keepalive timeout
第一个参数指定了与客户端的keep-alive连接超时时间,服务器将会在这个时
间后关闲连接。
可选的第二个参数指定了在响应头Keep-Alive:timeout=time中的time 值。这个头能够让一些浏览器主动关团连接,这样服务器就不必去关闭连接了。没有这个参数,Nginx不会发送Keep-Alive 响应头。

4,日志切割

随着Nginx运行时间的增加,产生的日志也会逐渐增加,为了方便掌握ginx的运行状态,需要时刻关注Nginx日志文件。太大的目志文件对监控是一个大灾难,不便于分析排查,需要定期的进行日志文件的切割。Nginx没有类似Apache的cron1og日志分割处理功能,但是可以通过N8inx的信号控制功能脚本来实现口志的自动切制,并将脚本加入到Linux的计划任务中,让脚本在每天的固定时间执行,便可实现目志切割功能。下面是具体操作步骤、

(1)编写脚本

/opt/fenge.sh,把Nginx的日志文件/usr/localnginx/logs/access,log 移动到目录/var/log/nginx下面,以当前时间做为目志文件的名称,然后用ki1USR1 创建新的日志文件/usr/local/nginx/1ogs/access.log,最后删除 30 天之前的日志文件。

(2)执行/opt/fenge.sh测试日志文件是否被切割

添加crontab -e任务(每天凌晨1:30执行/opt/fenge.sh脚本,进行日志分割)

5,配置网页压缩

Nginx的nexhtp_gzipmodule 压缩模块提供了对文件内容压缩的功能,允许Nginx服务器将输出内容发送到客户端之前进行压缩,以节约网站的带宽,提开用户的访问体验。默认Nginx已经安装该模块,只需要在配置文件中加入相应的压缩功能参数对压缩性能进行优化即可。

Nginx -t

Nginx -s reload

注释

82ipon;:开启Gip 压缩功能。
Bzipbuffers464k;:设置用于压缩响应的缓冲区数量和大小,这里表示分配4个64KB的缓冲区。

gzip_http_wersion1.1;:
 
指定启用Gzip压缩的 HTTP 协议版本,这里是HTTP 1.1
gzip_comp 1eve12;:设置Gzip压缩的级别,范田是!到9,2表示相对较低的理缩级别(里缩速度快,压缩比相对低)。
gzip_min_engthlk;:指定当响应内容长度大于等于1KB时才进行Gzip
压缩。

gzip_vary on;:
向代理服务器发送Vary:AcceptEncodi08 头信息,让代
IE类型的内容进行Czi上缩
理服务器根据客户端的ccept-Encoding 大来决定是否缓存压缩后的内容。
gzip types textplain text/javascript application/x javascript te
xt/css text/xmlapplicationxmlapplication/xml+rss;:
指定对哪些MIME类型的内容进行Gzip压缩

在ginx工作目承建立一个超过1K大小的htm!文件,然后使用浏览器访问网址验证,显示使用的进行了压缩,

-I:该参数的作用是只获取服务器返回的HTTP头部信息,而不获取响应的主体肉容。-H:此参数
用于在请求中添加自定义的HTTP头部信息。在这个例子里,加的头部信息是Accept-Encoding;gzip,这表示客户端(也就是发起请求的一方)支持gzp压缩格式的响应内容。

二,nginx的深度监控

1,GoAccess简介

GoAccess是一个开源实时日志分析器和交式查看器,可在Linux系统上的终端中或通过沟览器运行。它为需要动态可视化服务器报告的系统管理员
提供快速且有价值的HTIP统计信息。
GoAccess解析指定的Web日志文件并将数据输出到X终,特点包括:完全实时:所有面板和指标都定时在终端输出上每200毫秒更新一次,在HTM上输出上每秒更新一次
所需的最少配置:您只面针对访间日志文件运行它,选择日志格式,然后让GAccess解新访间日志并向您显示统计信息。
跟踪应用程序响应时间。跟踪处理请求所花费的时间。如果您想跟踪减慢网站速度的灾面,则非常有用。
几小所有Web日志格式:GoAccess允许任何自定义日志格式字符串。预定义选坝包摺 ApBche,Nginx,hmszon s3,Elastic Load Balancing、CloudFront.增量日志处理:需要数据持久化?GoAccess能够通过磁盘持久性选项增量处理日志。
GaAccess只有一个依赖项:是用写的。要运行它,您只需要ncurses作为依赖项。就是这样。它甚至拥有自己的WebSocket服务器http://gwsocket,10/
访问者:按小时或日期确定点击量、访问者、带宽和最慢运行请求的指标。每个虚拟主机的指标:拥有多个虚报主机(服务器块)?它有一个面板,显示哪个虚拟主机消耗了大部分Teb服务器资源。

(1)GoAccess安装

安装编译依赖

安装中文字体支持

源码编译安装GoAccess

--enable-utf8:启用Unicode 支持(显示中文必备)

--with-openssl:支持 HTTPS 日志分析。

(2)配置中文环境

设置系统locale为中文

验证locale是否生效

(3)GoAccess生成中文报告

--output=report.html:生成 HTML 报告。
--real-time-html:实时更新报告。

(4)测试访问

浏览器访问http://你的 ip/report.html

2,nginx vts简介

Nginx的VTS模块(Virtual Host Traffic Status) 是一个开源监控工具,用于实时收集和分析Nginx的流量、性能指标及状态数据。以下是其核心功能和特点:

实时监控统计每个虚拟主机(server 块)的请求量(QPS)、带宽使用、响应时间、连接数 等关键指标。支持按状态码(如2xx、4xx、5xx)分类统计请求。
数据可视化提供内置监控页面(默认路径/status),通过图表和表格展示实时及历史数据。支持JSON格式输出,方便集成到Prometheus、Grafana等监控平台。
扩展性通过Lua 脚本扩展自定义监控逻辑(如记录特定API的响应时间)。
可配置 数据存储策略(如保留最近1小时的数据)。
报警集成结合阈值规则触发告警(需配合外部工具如Zabbix、TelegramBot)。

(1)nginx vts安装

需要重新编译nginx并扩展vts模块

(2)nginx配置开启vts

修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

(3)测试访问

浏览器访问http://你的ip/vts

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

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

相关文章

如何在大型项目中解决 VsCode 语言服务器崩溃的问题

在大型C/C项目中,VS Code的语言服务器(如C/C扩展)可能因内存不足或配置不当频繁崩溃。本文结合系统资源分析与实战技巧,提供一套完整的解决方案。 一、问题根源诊断 1.1 内存瓶颈分析 通过top命令查看系统资源使用情况&#xff…

AutoDL实现端口映射与远程连接AutoDL与Pycharm上传文件到远程服务器(李沐老师的环境)

文章目录 以上配置的作用前提AutoDL实现端口映射远程连接AutoDLPycharm上传文件到远程服务器以上配置的作用 使用AutoDL的实例:因本地没有足够强的算力,所以需要使用AutoDL AutoDL端口映射:当在实例上安装深度学习的环境,但因为实例的linux系统问题,无法图形化显示d2l中的文件…

13.thinkphp的Session和cookie

一.Session 1. 在使用Session之前,需要开启初始化,在中间件文件middleware.php; // Session 初始化 \think\middleware\SessionInit::class 2. TP6.0不支持原生$_SESSION的获取方式,也不支持session_开头的函数&…

多线程获取VI模块的YUV数据

一.RV1126 VI模块采集摄像头YUV数据的流程 step1:VI模块初始化 step2:启动VI模块工作 step3:开启多线程采集VI数据并保存 1.1初始化VI模块: VI模块的初始化实际上就是对VI_CHN_ATTR_S的参数进行设置、然后调用RK_MPI_VI_SetC…

[ctfshow web入门] web68

信息收集 highlight_file被禁用了,使用cinclude("php://filter/convert.base64-encode/resourceindex.php");读取index.php,使用cinclude("php://filter/convert.iconv.utf8.utf16/resourceindex.php");可能有些乱码,不…

16前端项目----交易页

交易 交易页Trade修改默认地址商品清单reduce计算总数和总价应用 统一引入接口提交订单 交易页Trade 在computed中mapState映射出addressInfo和orderInfo&#xff0c;然后v-for渲染到组件当中 修改默认地址 <div class"address clearFix" v-for"address in …

2003-2020年高铁线路信息数据

2003-2020年高铁线路信息数据 1、时间&#xff1a;2003-2020年 2、来源&#xff1a;Chinese High-speed Rail and Airline Database&#xff0c;CRAD 3、指标&#xff1a;高铁线路名称、起点名、终点名、开通时间、线路长度(km)、设计速度(km/h&#xff09;、沿途主要车站 …

MySQL COUNT(*) 查询优化详解!

目录 前言1. COUNT(*) 为什么慢&#xff1f;—— InnoDB 的“计数烦恼” &#x1f914;2. MySQL 执行 COUNT(*) 的方式 (InnoDB)3. COUNT(*) 优化策略&#xff1a;快&#xff01;准&#xff01;狠&#xff01;策略一&#xff1a;利用索引优化带 WHERE 子句的 COUNT(*) (最常见且…

nginx配置协议

1. 7层协议 OSI&#xff08;Open System Interconnection&#xff09;是一个开放性的通行系统互连参考模型&#xff0c;他是一个定义的非常好的协议规范&#xff0c;共包含七层协议。直接上图&#xff0c;这样更直观些&#xff1a; 1.1 协议配置 1.1.1 7层配置 这里我们举例…

UE5 PCG学习笔记

https://www.bilibili.com/video/BV1onUdY2Ei3/?spm_id_from333.337.search-card.all.click&vd_source707ec8983cc32e6e065d5496a7f79ee6 一、安装PCG 插件里选择以下进行安装 移动目录后&#xff0c;可以使用 Update Redirector References&#xff0c;更新下&#xff0…

《用MATLAB玩转游戏开发》打砖块:向量反射与实时物理模拟MATLAB教程

《用MATLAB玩转游戏开发&#xff1a;从零开始打造你的数字乐园》基础篇&#xff08;2D图形交互&#xff09;-《打砖块&#xff1a;向量反射与实时物理模拟》MATLAB教程 &#x1f3ae; 文章目录 《用MATLAB玩转游戏开发&#xff1a;从零开始打造你的数字乐园》基础篇&#xff08…

vue配置代理解决前端跨域的问题

文章目录 一、概述二、报错现象三、通过配置代理来解决修改request.js中的baseURL为/api在vite.config.js中增加代理配置 四、参考资料 一、概述 跨域是指由于浏览器的同源策略限制&#xff0c;向不同源(不同协议、不同域名、不同端口)发送ajax请求会失败 二、报错现象 三、…

java+vert.x实现内网穿透jrp-nat

用java vert.x开发一个内网穿透工具 内网穿透概述技术原理常见内网穿透工具用java vert.x开发内网穿透工具 jrp-nat为什么用java开发内网穿透工具&#xff1f;jrp-nat功能实现图解jrp-nat内网穿透工具介绍jrp-nat内网穿透工具特点jrp-nat软件架构jrp-nat安装教程jrp-nat程序下载…

【程序员AI入门:应用开发】8.LangChain的核心抽象

一、 LangChain 的三大核心抽象 1. ChatModel&#xff08;聊天模型&#xff09; 核心作用&#xff1a;与大模型&#xff08;如 GPT-4、Claude&#xff09;交互的入口&#xff0c;负责处理输入并生成输出。关键功能&#xff1a; 支持同步调用&#xff08;model.invoke&#xf…

每天五分钟机器学习:KTT条件

本文重点 在前面的课程中,我们学习了拉格朗日乘数法求解等式约束下函数极值,如果约束不是等式而是不等式呢?此时就需要KTT条件出手了,KTT条件是拉格朗日乘数法的推广。KTT条件不仅统一了等式约束与不等式约束的优化问题求解范式,KTT条件给出了这类问题取得极值的一阶必要…

Facebook的元宇宙新次元:社交互动如何改变?

科技的浪潮正将我们推向一个全新的时代——元宇宙时代。Facebook&#xff0c;这个全球最大的社交网络平台&#xff0c;已经宣布将公司名称更改为 Meta&#xff0c;全面拥抱元宇宙概念。那么&#xff0c;元宇宙究竟是什么&#xff1f;它将如何改变我们的社交互动方式呢&#xff…

概统期末复习--速成

随机事件及其概率 加法公式 推三个的时候ABC&#xff0c;夹逼准则 减法准则 除法公式 相互独立定义 两种分析 两个解法 古典概型求概率&#xff08;排列组合&#xff09; 分步相乘、分类相加 全概率公式和贝叶斯公式 两阶段问题 第一个小概率*A在小概率的概率。。。累计 …

n8n系列(1)初识n8n:工作流自动化平台概述

1. 引言 随着各类自动化工具的涌现,n8n作为一款开源的工作流自动化平台,凭借其灵活性、可扩展性和强大的集成能力,正在获得越来越多技术团队的青睐。 本文作为n8n系列的开篇,将带您全面了解这个强大的自动化平台,探索其起源、特性以及与其他工具的差异,帮助您判断n8n是否…

QT6 源(82):阅读与注释日历类型 QCalendar,本类并未完结,儒略历,格里高利历原来就是公历,

&#xff08;1&#xff09;本代码来自于头文件 qcalendar . h &#xff1a; #ifndef QCALENDAR_H #define QCALENDAR_H#include <limits>#include <QtCore/qglobal.h> #include <QtCore/qlocale.h> #include <QtCore/qstring.h> #include <QtCore/…

CVE体系若消亡将如何影响网络安全防御格局

CVE体系的核心价值与当前危机 由MITRE运营的通用漏洞披露&#xff08;CVE&#xff09;项目的重要性不容低估。25年来&#xff0c;它始终是网络安全专业人员理解和缓解安全漏洞的基准参照系。通过提供标准化的漏洞命名与分类方法&#xff0c;这套体系为防御者建立了理解、优先级…