nginx 调优 (摘自 美团)

Nginx性能优化

作者:hanjilong

返回首页

简介

在大多数情况下,一个常规安装的Nginx对网站来说已经能很好地工作了。然而如果想挤压出Nginx的性能,就需要了解哪些指令会影响Nginx性能,在本文中将解释Nginx的哪些设置可以微调。需要注意一点,这是一个简单的预览——那些可以通过微调来提高性能设置的概述,不同的环境可能情况不太一样。

对于Nginx的调优,可以大致从如下指令着手:

1. worker_processes
2. worker_connections
3. Buffers
4. Timeouts
5. Gzip Compression
6. Static File Caching
7. logging

1. worker_processes

worker_processes表示工作进程的数量,一般情况设置成CPU核的数量即可,一个cpu配置多于一个worker数,对Nginx而言没有任何益处,另外不要忘了设置worker_cpu_affinity,这个配置用于将worker process与指定cpu核绑定,降低由于多CPU核切换造成的寄存器等现场重建带来的性能损耗。 grep processor /proc/cpuinfo | wc -l这个命令会告诉你当前机器是多少核,输出为2即表示2核。

2. worker_connections

worker_connections配置表示每个工作进程的并发连接数,默认设置为1024。

可以更新如下配置文件来修改该值: sudo vim /etc/nginx/nginx.conf

worker_processes 1;
worker_connections 1024;

3. Buffers

Buffers:另一个很重要的参数为buffer,如果buffer太小,Nginx会不停的写一些临时文件,这样会导致磁盘不停的去读写,现在我们先了解设置buffer的一些相关参数: client_body_buffer_size:允许客户端请求的最大单个文件字节数client_header_buffer_size:用于设置客户端请求的Header头缓冲区大小,大部分情况1KB大小足够 client_max_body_size:设置客户端能够上传的文件大小,默认为1m large_client_header_buffers:该指令用于设置客户端请求的Header头缓冲区大小

具体可参考配置如下:

client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 2 1k;

4. Timeouts

client_header_timeoutclient_body_timeout设置请求头和请求体(各自)的超时时间,如果没有发送请求头和请求体,Nginx服务器会返回408错误或者request time out。 keepalive_timeout给客户端分配keep-alive链接超时时间。服务器将在这个超时时间过后关闭链接,我们将它设置低些可以让Nginx持续工作的时间更长。 send_timeout 指定客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,Nginx就会关闭连接。

具体可参考配置如下:

client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;

5. Gzip Compression

开启Gzip,gzip可以帮助Nginx减少大量的网络传输工作,另外要注意gzip_comp_level的设置,太高的话,Nginx服务会浪费CPU的执行周期。

具体可参考配置如下:

gzip             on;
gzip_comp_level  2;
gzip_min_length  1000;
gzip_proxied     expired no-cache no-store private auth;
gzip_types       text/plain application/x-javascript text/xml text/css application/xml;

6. Static File Caching

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
    expires 365d;
}

以上的文件类型可以根据Nginx服务器匹配增加或减少。

7. logging

access_log设置Nginx是否将存储访问日志。关闭这个选项可以让读取磁盘IO操作更快。 可以修改配置文件将该功能关闭:

access_log off;

然后重启Nginx服务:

sudo service nginx restart

tag : Nginx Linux

时间: 2024-08-05 19:01:16

nginx 调优 (摘自 美团)的相关文章

linux下安装nginx与nginx调优

linux系统为rhel5.6,nginx版本为nginx-1.1.6.tar.gz,可以到网上下载最新的安装,由于nginx是基于很多模块实现强大的功能,所以要安装并编译其他模块软件包,这里安装的模块软件包有:agentzh-encrypted-session-nginx-module-v0.02-0-gc752861.tar.gz.chunkin-nginx-module-0.23rc2.tar.gz.google-perftools-1.8.3.tar.gz.libunwind-0.99.

CentOS7.4—最新版本nginx调优

Nginx调优目录第一部分 优化版本信息第二部分 保持连接第三部分 优化进程数第四部分 日志分割第五部分 网页压缩 Nginx安装过程不再这里展示,请参照http://blog.51cto.com/12227558,下面直接进入调优 第一部分 优化版本信息----------隐藏版本信息----------第一步:查看版本信息方法一:[[email protected] ~]# curl -I 192.168.80.40 方法二:Wireshark抓包Win7访问http://192.168.8

nginx调优

nginx安装 1.安装依赖库 yum -y install make gcc gcc-c++ glibc glibc-devel lsof   pcre pcre-devel  zlib zlib-devel  openssl openssl--devel yum install pcre-devel pcre  zlib-devel zlib openssl-devel -y(也可以用这个依赖库) 2.下载源码包 3.解压  编译 安装 4. 启动 为什么要屏蔽nginx版本信息? 答:因为

nginx调优并发测试

如图显示了基本的优化思路,能够更多的socket连接和能打开更多的文件. 1.从打开文件的角度 系统层面: 先用ulimit -n看下默认一个进程能够打开的文件数默认是128,ulimit -n 50000更改打开文件数为50000 nginx层面: 在nginx中配置worker_rlimit_nofile(图中参数有些问题) worker_rlimit_nofile 20000 2.从建立sorket连接角度 系统层面: a.更改最大连接数:echo 20000 > /proc/sys/ne

Nginx 调优

隐藏 Nginx 版本号 隐藏 Nginx 软件名 更改 Nginx 服务的默认用户 优化 Nginx 服务的 worker 进程数

centos中将nginx和php整合,nginx调优

首先yum安装插件,需花去根目录/大概2.2G的大小#yum install gcc make pcre* openssl gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel freetype-devel.x86_64 autoconf automake imake libxml2-devel expat-devel cmake gcc-c++ libaio libaio-devel bzr bi

Nginx下载服务生产服务器调优

一.内存调优 内核关于内存的选项都在/proc/sys/vm目录下. 1.pdflush,用于回写内存中的脏数据到硬盘.可以通过 /proc/sys/vm/vm.dirty_background_ratio调整. 首先查看这个值默认应该是10. [[email protected] ~]# cat /proc/sys/vm/dirty_background_ratio 10 这个值是一个阀值,说明如果内存中的脏数据达到系统总内存的10%时,那么pdflush进程就会启动,将内存中的脏数据写回硬盘

nginx安装以及调优

目录: 1.安装nginx 2.配置nginx 3.调优nginx 4.性能测试 ps:为了方便,文档使用docker容器来操作的. 1.安装nginx 1.1 启动容器.download nginx 以及编译前的修改 启动容器 1 liwangdeMacBook-Air:~ liwang$ docker run -i -t --name nginx_server_01 -v /Users/liwang/docker/nginx_data:/data -p 80:80 centos /bin/b

Nginx安装配置及调优

Nginx安装配置及调优 ? 一.安装Nginx ? 1.安装环境 [[email protected] ~]# yum –y install gcc pcre-devel openssl-devel 2.创建一个用户启动nginx [[email protected] ~]# useradd –s /sbin/nologin nginx 3.安装(不用的装模块不装) [[email protected] nginx-1.12.2]# ./configure \--prefix=/usr/loc