Nginx性能优化

注册 Vultr VPS 送你10美金 免费玩4个月

Nginx性能优化可分为对操作系统的优化和队Nginx本身的优化两部分。

针对Nginx对Linux系统的优化

1、关闭不必要的服务
根据自己Linux服务器部署的项目需求,进行相应的关闭不必要的服务或进程。

2、优化写磁盘操作
我们指导,Nginx每次访问一个文件的时候,Linux系统将会对他的“Access”,即访问时间进行修改对于查看一个文件被修改的时间,可以使用stat 文件名 的方式进行查看,例如:

[[email protected] conf]# stat nginx.conf 
  File: "nginx.conf"
  Size: 2656        Blocks: 8          IO Block: 4096   普通文件
Device: ca01h/51713d    Inode: 660555      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1001/ UNKNOWN)   Gid: ( 1001/ UNKNOWN)
Access: 2015-11-18 16:31:05.221629056 +0800
Modify: 2015-04-21 22:11:59.000000000 +0800
Change: 2015-11-18 10:30:10.421498579 +0800
[[email protected] conf]# 

列出了访问的时间,所以对于一个高并发的访问系统中,这些磁盘写操作对系统的影响还是挺大的,因此要关闭该功能。

/dev/sdb1  /dataext3  defaults 0  0 

修改为如下配置:

/dev/sdb1  /dataext3  defaults,noatime,nodiratime  0  0 

然后重新启动系统,使之生效。

或者不重启系统的话可以使用remount选项来重新挂载:

-->mount  -o  defaults,noatime,nodiratime  -o  remount  /dev/sdb1  /sdb
-->mount  |  grep  sdb1

/dev/sdb1  on  /sdb   type  ext3 (rw,noatime,nodiratime)

如果是单独挂载的分区或者磁盘,可以直接执行命令:

-->mount  -o  defaults,noatime,nodiratime  /dev/sdb1  /sdb
-->mount  |  grep  sdb1

/dev/sdb1  on  /sdb   type  ext3 (rw,noatime,nodiratime)

3、优化资源限制
Linux有一条命令为ulimit:用于控制shell程序的资源,用于shell启动进程所占用的资源,其语法为:

ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]

参数为:

   -a  显示目前资源限制的设定。 
   -c <core文件上限>  设定core文件的最大值,单位为区块。 
   -d <数据节区大小>  程序数据节区的最大值,单位为KB   -f <文件大小>  shell所能建立的最大文件,单位为区块。 
   -H  设定资源的硬性限制,也就是管理员所设下的限制。 
   -m <内存大小>  指定可使用内存的上限,单位为KB   -n <文件数目>  指定同一时间最多可开启的文件数。 
   -p <缓冲区大小>  指定管道缓冲区的大小,单位512字节。 
   -s <堆叠大小>  指定堆叠的上限,单位为KB   -S  设定资源的弹性限制。 
   -t <CPU时间>  指定CPU使用时间的上限,单位为秒。 
   -u <程序数目>  用户最多可开启的程序数目。 
   -v <虚拟内存大小>  指定可使用的虚拟内存上限,单位为KB

根据参数的功能,可以使用ulimit -a 来列举资源的限制信息:

[root@iZ94sni08orZ ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 3870
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 3870
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
[root@iZ94sni08orZ ~]# 

上图是我的CentOS7.0的信息,然后使用命令,对系统针对Nginx进行优化,可以使用下边的命令对-n所对应的资源进行无限制,也就是系统所支持最大的值:ulimit -n unlimited 或者ulimit -n 数目 来修改。

也可以通过修改配置文件的方式进行修改:

vim /etc/security/limits.conf

该文件只有两行,其他的都为注释内容:

* soft nofile 65535
* hard nofile 65535

将其修改为:

/dev/sdb1  /dataext3  defaults 0  0 

0

上述修改之后需后需要重新启动菜而已生效。

4、优化内核TCP选项

修改一下内核参数,该文件在/etc/sysctl.conf,包含内容注释,都可以看懂,默认内容为:

/dev/sdb1  /dataext3  defaults 0  0 

1

将对应的属性设置下列值,有的修改,没有的加上去:

/dev/sdb1  /dataext3  defaults 0  0 

2

优化Nginx服务器

1、关闭访问日志
根据相应的需要,进行相应模块的日志记录,如在http、server、location这些单独的区段中配置日志记录。

2、Nginx服务器配置优化

在server模块的配置文件中设置:

/dev/sdb1  /dataext3  defaults 0  0 

3

当然还有很多对Nginx的优化,上边简单的学习记录,希望对大家有帮助。

注册 Vultr VPS 送你10美金 免费玩4个月