JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

影响Nginx高性能的7大配置

wys521 2024-09-18 02:42:26 精选教程 31 ℃ 0 评论

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 向客户端发送数据的超时时间

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表