Nginx 性能优化

这篇具有很好参考价值的文章主要介绍了Nginx 性能优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、资源压缩

如果一个静态资源的过大,传输起来肯定越慢,并且会占用大量带宽,因此在项目部署时可以通过Nginx对于静态资源实现压缩传输。Nginx 提供了三个支持资源压缩的模块ngx_http_gzip_module、ngx_http_gzip_static_module、ngx_http_gunzip_module,其中ngx_http_gzip_module属于内置模块。

开启资源压缩:

http{
    # 开启压缩机制
    gzip on;
    # 指定会被压缩的文件类型(也可自己配置其他类型)
    gzip_types text/plain application/javascript text/css application/xml text/javascript image/jpeg image/gif image/png;
    # 设置压缩级别,越高资源消耗越大,但压缩效果越好
    gzip_comp_level 5;
    # 在头部中添加Vary: Accept-Encoding(建议开启)
    gzip_vary on;
    # 处理压缩请求的缓冲区数量和大小
    gzip_buffers 16 8k;
    # 对于不支持压缩功能的客户端请求不开启压缩机制
    gzip_disable "MSIE [1-6]\."; # 低版本的IE浏览器不支持压缩
    # 设置压缩响应所支持的HTTP最低版本
    gzip_http_version 1.1;
    # 设置触发压缩的最小阈值
    gzip_min_length 2k;
    # 关闭对后端服务器的响应结果进行压缩
    gzip_proxied off;
}

二、使用epoll网络模型

Nginx 是基于多路复用模型实现的,但默认的多路复用模型 select/poll 最大只能监听1024个连接,而epoll则属于 select/poll 接口的增强版,因此切换为epoll 模式能够大程度上提升单个Worker的性能:

events {  
    # 使用epoll网络模型  
    use epoll;  
    # 调整每个Worker能够处理的连接数上限  
    worker_connections  10240;  
}  

三、开启CPU亲和机制

在实际项目中进程或线程数往往都会远超出系统CPU的核心数,操作系统执行原理本质上是采用时间片切换机制,也就是一个CPU核心会在多个进程之间不断频繁切换,造成很大的性能损耗。而CPU亲和机制则是指将每个Nginx的工作进程,绑定在固定的CPU核心上,从而减小CPU切换带来的时间开销和资源损耗:

worker_cpu_affinity auto;  

四、调整Worker工作进程

Nginx启动后默认只会开启一个Worker工作进程处理客户端请求,而我们可以根据机器的CPU核数开启对应数量的工作进程,以此来提升整体的并发量:

worker_processes auto;  # 自动根据CPU核心数调整Worker进程数量  

同时也调整每个工作进程能够打开的文件句柄数:

worker_rlimit_nofile 20000;  # 每个Worker能打开的文件描述符,最少调整至1W以上,负荷较高建议2-3W  

五、长连接配置

建议开启HTTP长连接,用户减少握手的次数,降低服务器损耗:

upstream xxx {  
    # 长连接数  
    keepalive 32;  
    # 每个长连接提供的最大请求数  
    keepalived_requests 100;  
    # 每个长连接没有新的请求时,保持的最长时间  
    keepalive_timeout 60s;  
}  

六、使用零拷贝技术

零拷贝读取机制与传统资源读取机制的区别:文章来源地址https://www.toymoban.com/news/detail-405319.html

  • 传统方式:硬件–>内核–>用户空间–>程序空间–>程序内核空间–>网络套接字
  • 零拷贝方式:硬件–>内核–>程序内核空间–>网络套接字
sendfile on; # 开启零拷贝机制  

到了这里,关于Nginx 性能优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx上web服务的基本安全优化、服务性能优化、访问日志优化、目录资源优化和防盗链配置简介

    目录 一.基本安全优化 1.隐藏nginx软件版本信息 2.更改源码来隐藏软件名和版本 (1)修改第一个文件(核心头文件),在nginx安装目录下找到这个文件并修改 (2)第二个文件 (3)第三个文件,内置响应信息页面 (4)第四个文件 (5)重新编译安装并重启 3.更改nginx服务的默

    2024年02月13日
    浏览(45)
  • 分布式 - 服务器Nginx:基础系列之Nginx静态资源配置优化sendfile | tcp_nopush | tcp_nodelay

    1. sendfile 指令 请求静态资源的过程:客户端通过网络接口向服务端发送请求,操作系统将这些客户端的请求传递给服务器端应用程序,服务器端应用程序会处理这些请求,请求处理完成以后,操作系统还需要将处理得到的结果通过网络适配器传递回去。 sendfile 指令是用于将

    2024年02月09日
    浏览(38)
  • 成功解决 Nginx更新静态资源无效 ,Nginx静态资源更新不及时,Nginx清除缓存

    使用 nginx做动静分离,在将服务器中的静态资源修改后,访问页面,发现页面没有及时更新。 我这里是清除了浏览器缓存。 有关nginx禁止走缓存、直接走服务器请参考以下文章。 资料参考:Nginx更新静态资源不生效 我更新了静态资源下的一个文件。然后正常情况应该是在点

    2024年02月16日
    浏览(34)
  • 记录使用nginx部署静态资源流程,以及遇到的访问静态资源404问题

    将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署实现 动静分离 ,提高用户访问静态代码的速度,降低对后台应用访问,减轻后台服务器的压力。 这里我选择放在了 html文件夹 下,(也可以放在和html文件夹同级,或其它位置 打开 conf文件夹 打开总配置文

    2024年02月08日
    浏览(64)
  • 【Nginx】静态资源部署(上)

    上网去搜索访问资源对于我们来说并不陌生,通过浏览器发送一个HTTP请求实现从客户端发送请求到服务器端获取所需要内容后并把内容回显展示在页面的一个过程。这个时候,我们所请求的内容就分为两种类型: 静态资源、 动态资源 静态资源即指在服务器端真实存在并且能

    2024年01月21日
    浏览(49)
  • Nginx(2)静态资源部署

    上网搜索访问资源是通过浏览器发送一个HTTP请求实现从客户端发送请求到服务器端获取所需要内容后并把内容回显展示在页面。这时所请求的内容就分为两种类型,一类是静态资源、一类是动态资源。 静态资源: 指在服务器端真实存在并且能直接拿来展示的一些文件,比如

    2024年02月07日
    浏览(46)
  • nginx访问静态资源

    nginx访问静态资源 打开nginx配置文件 只需修改成或者添加一个location,就可以访问 html路径下所有文件了 如果只需要访问html特定文件夹内容,需要指定 效果

    2024年02月13日
    浏览(43)
  • Nginx访问静态资源配置

    关于 alias和root配置的说明: 一般情况下,在nginx配置中的良好习惯是: 1)在location /中,即路径为“ / ”时, 配置root目录; 2)在location /path中,即路径包含指定内容,如“ localtion /imgs ”时, 配置alias虚拟目录。

    2024年02月09日
    浏览(42)
  • webpack无损压缩本地静态资源图片image-minimizer-webpack-plugin

    开发如果项目中引用了较多图片,那么图片体积会比较大,将来请求速度比较慢。 我们可以对图片进行压缩,减少图片体积。 一、image-minimizer-webpack-plugin介绍 Image-minimizer-webpack-plugin 是一个用于 优化和压缩图片 的 Webpack 插件。它使用多个优化器和压缩器来减小图片文件的大

    2024年02月09日
    浏览(87)
  • 如何在nginx中配置静态资源

    ​ 在nginx中配置静态资源首先要保证你的项目是通过nginx来访问网关请求请求的!,因为静态资源是保存在nginx中的,可以大大的减少运行速度! ​ 首先,我们需要将静态资源导入到nginx中 譬如:你现在有一个静态资源的文件夹!包含你项目的所有静态资源,将其放入到ngi

    2024年02月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包