当前位置:首页 > 技术文章 > 正文内容

影响Nginx高性能的7大配置(nginx 高性能原理)

arlanguage3个月前 (01-23)技术文章22

7大部分:workers、磁盘I/O、网络活动、Buffers、压缩、缓存、超时

Workers 部分

通过配置Workers,能够有效的处理来自客户端的连接



  • worker_processes 设置Nginx中worker的数量;设置为auto时,表示允许Nginx确定可用的内核数量、磁盘、服务器负载等资源。
  • worker_connections 控制worker可以同时打开的连接数;默认512个。
  • worker_rlimit_nofile 与上一个参数相关,为了能够处理"大并发连接",这个值通常要设置大一些。
  • multi_accept 允许worker一次接受"等待处理的数据对象"队列中的多个连接。
  • mutex_accept 默认关闭;由于我们配置了 "允许worker一次接受多个连接" 就要打开此参数。
  • mutex_accept_delay 指定worker在接受新连接之前,等待多少时间。一旦启用了"mutex_accept",就会在指定时间内为worker分配一个互斥锁,时间结束后,worker就可以接收新的连接。
  • use 指定客户端的连接方式,epoll是目前linux平台上最高效的方法。
  • epoll_events 指定Nginx将事件传输到内核的数量


磁盘I/O部分

配置异步的I/O,使Nginx能够有效执行数据并提高缓存效率


  • sendfile 要利用操作系统的资源,必须打开该参数;此指令用于小文件的优化。
  • aio 对于读写操作,启用多线程(异步I/O)。
  • directio 允许将读写直接发送到应用程序,从而提高缓存效率;用于大文件的优化,如视频。
  • directio_alignment 为数据传输分配块大小值


网络部分

通常当数据包"分片"传输时,它们往往会使高负载的网络饱和,我们将使用2个参数来防止小数据包在发送前等待大约200ms的时间



  • tcp_nopush 开启此参数后,将会合并多个小数据包一次性发送。
  • tcp_nodelay 默认关闭;开启后允许发送数据时不再等待200ms。


Buffers 缓冲区部分


  • client_body_buffer_size 设置请求缓冲区的大小,32位操作系统设置8k,64位操作系统应设置16k。
  • client_max_body_size 如果要处理大型文件上传,至少设置2M以上;默认1M。
  • client_body_in_single_buffer 不是所有请求都存储在缓冲区内,部分会保存在临时文件中;开启此参数,整个请求缓冲区都会保存在单个缓冲区中。
  • client_header_buffer_size 为请求头设置缓冲区。
  • large_client_header_buffers 设置读取大请求头的数量和大小。


压缩部分

压缩数据也是保证web服务器高性能的一种方式



  • gzip 开启压缩;默认关闭。
  • gzip_comp_level 压缩级别,范围1-9。级别越高,越吃CPU性能。
  • gzip_min_length 最小压缩长度,建议设置20字节以上
  • gzip_types 要压缩的类型,默认值为"text/html"
  • gzip_http_version 最低支持的http版本;默认1.1
  • gzip_vary 压缩时,添加Vary:Accept字段到响应中
  • gzip_disable 某些浏览器不支持gzip;通过User-Agent来禁用某些浏览器的压缩功能


Cache缓存部分

利用缓存,可以减少多次加载相同数据的次数;以下内容可以放在http,server,location区段中。


  • open_file_cache 默认禁用;打开后缓存请求文件和目录的元数据
  • open_file_cache_valid 设置缓存的有效期
  • open_file_cache_min_uses 缓存的最小访问次数,在有效期内不满足最小访问次数,则会清空缓存信息
  • open_file_cache_errors 缓存错误信息,如"权限被拒绝","无法访问此文件"等,当用户因没有权限访问某个资源时,Nginx会显示相同的错误信息。


Timeout 超时部分

用于防止长时间等待连接而造成的资源浪费


  • keepalive_timeout 设置保持连接30秒;默认为75秒。
  • keepalive_requests 保持活动连接的数量。
  • send_timeout 向客户端发送数据的超时时间

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1056.html

分享给朋友:

“影响Nginx高性能的7大配置(nginx 高性能原理)” 的相关文章

Nginx配置最全详解(万字图文总结)

[TOC]Nginx 也是我们比较常见的“玩具”了,不过有的小伙伴对 Nginx 配置不熟悉,每次使用的时候都要搜索,松哥在本文中给出一些常见的配置案例,小伙伴们可以收藏备用。一 什么是 NginxNginx(发音为“Engine-X”)是一个开源的高性能 HTTP 和反向代理服务器,同时也是一个...

nginx 常见错误

1.启动报错报错内容:sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory32位系统 [root@sever...

阿里架构师讲面试:Nginx 配置 HTTPS 完整过程,细致入微全是精华

配置站点使用 https,并且将 http 重定向至 https。1. nginx 的 ssl 模块安装查看 nginx 是否安装 http_ssl_module 模块。$ /usr/local/nginx/sbin/nginx -V如果出现 configure arguments: --with-...

windows下的nginx安装和使用

.1 去官网下载相应的安装包:http://nginx.org/en/download.html1.2 解压后进入PowerShell(按住“shift”+“鼠标右键”)窗口,进入到nginx目录,输入start nginx.exe 进行nginx的安装安装成功后,在“任务管理器”中会显示“ngin...

高端Linux 脚本很有用,赶紧学起来!

Linux 脚本?准确的说叫 Linux Shell 脚本,Shell 脚本是一种被设计用来运行命令行解释器,他是 Linux 系统的一大特色之一。命令行是 Linux 系统中一种非常重要的交互方式,而它的实现基于 Linux 内核和 Shell 程序,为用户提供了强大和灵活的操作方式。使用 Lin...

Nginx系列:图片过滤处理

http_image_filter_module是Nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高;磁盘有限不想生成多余的图片文件的前提下,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息,由于是实时计算的结果,所以网站...