欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > Nginx性能调优与深度监控

Nginx性能调优与深度监控

2025/5/23 7:28:15 来源:https://blog.csdn.net/2302_79420346/article/details/147758012  浏览:    关键词:Nginx性能调优与深度监控

目录

进程数

连接数

静态缓存功能设置

设置连接超时

日志切割

配置网页压缩

nginx的深度监控

GoAccess简介

GoAccess安装

配置中文环境

GoAccess生成中文报告

测试访问

nginx vts简介

nginx vts安装

nginx配置开启vts

测试访问


进程数

在高并发环境中,需要启动更多的Nginx进程以保证快速响应,用以处理用户
的请求,避免造成阻塞。使用psaux命令查看Nginx运行进程的个数。从命
令执行结果可以看出masterprocess是Nginx的主进程,开启1个;worker
process是子进程,子进程也是开启了1个。修改Nginx的配置文件的work
er_processes参数,一般设为CPU的个数或者核数,在高并发的情况下可设置
为CPU个数或者核数的2倍,可以查看CPU的核数以确定参数
进程数是指在计算机系统中正在运行的进程的数量。以下从进程的定义、进程数的统计范围和意义等方面详细解释进程数的概念进程的定义进程数的统计范围进程数的意义

[root@localhost ~]# nproc
4

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

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.coonf
worker_processes 4;

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

[root@localhost ~]# ps -ef | grep nginx
root    16252   1 0 13:56 ? 00:00:00 nginx: master pro
cess /usr/local/sbin/nginx
nginx   16253 16252 0 13:56 ? 00:00:00 nginx: worker pro

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

[root@localhost ^]# vim /usr/local/nginx/conf/nginx.coonf
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;

静态缓存功能设置

静态缓存功能设置

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

[root@localhost ^]#vim /usr/local/nginx/conf/nginx.conf
location ~\.(gif|jpg|jepg|png|bmp|ico)${
root html;
expires ld;
}
[root@localhost ~]#nginx -t
[root@localhost ~]#nginx -s reload

连接数

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

[root@localhost^]# vim /usr/local/nginx/conf/nginx.conf
events {
worker_connections 1024;
}

设置连接超时

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

[root@localhost ^]#vim /usr/local/nginx/conf/nginx.coonf
http
#keepalive_timeout_0;
keepalive timeout 65 180;

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

日志切割

目的和作用

方便管理:大型日志文件可能会占用大量的磁盘空间,而且在查找特定信息时效率低下。通过日志切割,可以将日志文件分成多个较小的部分,便于存储、备份和管理。

提高性能:对于一些日志分析工具或系统,处理较小的日志文件通常比处理大型文件更加高效,可以提高日志分析的速度和系统的整体性能。

便于归档:按照一定的时间或大小等规则进行切割后,不同时间段或不同规模的日志可以分别归档,方便根据需要进行检索和查看

切割方式

按时间切割:这是最常见的方式之一。可以按照天、周、月等时间周期对日志进行切割。例如,每天生成一个新的日志文件,这样可以方便地查看特定日期的日志信息。按大小切割:当日志文件达到一定的大小阈值时,进行切割。比如,当日志文件大小达到 1GB 时,将其切割成多个 1GB 以下的文件,以避免单个文件过大。按特定条件切割:根据日志中的特定内容或条件进行切割。例如,根据不同的日志级别(如错误、警告、信息等)将日志切割到不同的文件中,以便于重点关注特定类型的日志信息

假设我们有一个名为 app.log 的日志文件,以下是一个简单的 logrotate 配置示例,用于按天切割日志,并保留最近 7 天的日志文件

/var/log/app.log {dailyrotate 7compressdelaycompressmissingoknotifempty
}

配置网页压缩

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

安装和配置 gzip

Nginx 服务器首先确保 Nginx 服务器已安装 gzip 模块。如果在安装 Nginx 时没有启用 gzip 模块,需要重新编译 Nginx 并添加 gzip 模块支持。打开 Nginx 的配置文件(通常位于/etc/nginx/nginx.conf/usr/local/nginx/conf/nginx.conf),在http块中添加以下配置

http {gzip on;gzip_disable "msie6";gzip_vary on;gzip_proxied any;gzip_comp_level 6;gzip_buffers 16 8k;gzip_http_version 1.1;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}

 Apache 服务器

确保 Apache 服务器安装了mod_deflate模块。如果未安装,可以通过包管理工具进行安装,如在 CentOS 上使用yum install mod_deflate命令安装。打开 Apache 的配置文件(通常位于/etc/httpd/conf/httpd.conf/usr/local/apache/conf/httpd.conf),添加以下配置

<IfModule mod_deflate.c>AddOutputFilterByType DEFLATE text/plainAddOutputFilterByType DEFLATE text/htmlAddOutputFilterByType DEFLATE text/cssAddOutputFilterByType DEFLATE application/jsonAddOutputFilterByType DEFLATE application/javascriptAddOutputFilterByType DEFLATE text/xmlAddOutputFilterByType DEFLATE application/xmlAddOutputFilterByType DEFLATE application/xml+rssAddOutputFilterByType DEFLATE text/javascript
</IfModule>

重启服务器

配置完成后,需要重启 Nginx 或 Apache 服务器,使配置生效。

对于 Nginx 服务器,可以使用命令systemctl restart nginx来重启;对于 Apache 服务器,使用命令systemctl restart httpd来重启

nginx的深度监控

GoAccess简介

特点

实时分析:能够实时处理服务器日志,让用户即时了解网站的访问情况,无需等待长时间的日志处理过程。

多平台支持:可在多种操作系统上运行,包括 Linux、Mac OS 等,具有良好的跨平台性。

轻量级:资源占用少,运行效率高,即使在处理大量日志数据时也能保持稳定的性能。

命令行界面:通过命令行操作,方便在服务器终端直接使用,对于熟悉命令行的用户来说,操作简洁高效

功能

日志格式支持广泛:能解析多种常见的 Web 服务器日志格式,如 Apache、Nginx 等,还支持自定义日志格式,适应性强。

实时统计信息:可以实时生成各种统计信息,如请求总数、唯一访客数、热门页面、热门文件、访问量随时间的变化趋势等。这些信息以直观的文本界面呈现,让用户快速了解网站的访问模式和流量分布。

地理信息分析:借助 MaxMind 的 GeoIP 数据库,GoAccess 能够分析访客的地理位置信息,包括国家、城市等,帮助用户了解网站的受众分布情况。

访问者信息追踪:可以跟踪单个访问者的活动,包括他们访问的页面、停留时间、访问来源等,有助于分析用户行为和用户体验。

数据导出:支持将分析结果导出为多种格式,如 CSV、JSON、HTML 等,方便与其他工具或系统进行集成,进一步处理和分析数据。

GoAccess安装

安装编译依赖


[root@localhost]#dnf install -y gcc make ncurses-devel openssl-dlev
el gettext-devel

             安装中文字体支持 

[root@localhost ~]# dnf install -y wqy-microhei-fontos

源码编译安装GoAccess 

[root@localhost `]# tar -xzvf goaccess-1.7.2.tar.gz
[root@localhost ^]# cd goaccess-1.7.2
[root@localhost ^]# ./configure --enable-utf8 --with-opensssl
make && make install 

                 设置中文环境

                 系统设置Locale

[root@localhost ~]#dnf install -y glibc-langpack-zh
[root@localhost ~]# localectl set-locale_LANG=zh_CN. UTF-8

                  验证Locale

[root@localhost ^]# locale
LANG=zh CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"

GoAccess生成中文报告

[root@localhost~]# goaccess --log-format=COMBINED --output=/usr/local
/nginx/html/report.html --real-time-html/usr/local//nginx/logs/access.
log
[PARSING /usr/local/nginx/logs/access.log] {0} @ 
{0/s}
WebSocket服务器已准备接收来自客户的连接

测试访问

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

nginx vts简介

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

nginx vts安装

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


[root@localhost `]# tar xzf nginx-1.26.3.tar.gz
[root@localhost `]# unzip nginx-module-vts-master.zip
[root@localhost ^]# cd nginx-1.26.3
./configure   --prefix=/usr/local/nginx    --user=nginx   --group=nginx   --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

nginx配置开启vts

修改nginx配置文件

[root@localhost `]# vi /usr/local/nginx/conf/nginx.conf
http {
vhost_traffic_status_zone;
Server
location /vts {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
access_log off;
}
}

 

[root@localhost ^]#/usr/local/nginx/sbin/nginx-t
[root@localhost ^]#/usr/local/nginx/sbin/nginx

测试访问

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词