nginx + php-fpm优化

本文详细介绍了Nginx HTTP服务器的特性、优势及其与PHP-FPM的优化方法,包括Nginx的事件驱动模式、稳定性、热部署功能以及性能指标。讲解了如何通过调整内核参数、编译选项和FastCGI缓存来提升性能,还涉及了PHP-FPM的配置优化,如修改`php-fpm.conf`文件以调整进程管理策略和限制。此外,文章还提到了内核参数如`tcp_max_tw_buckets`和`tcp_syncookies`的优化,以及通过ulimit命令增加最大打开文件数。
摘要由CSDN通过智能技术生成

nginx介绍

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发.

Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpdmod_proxy也有一些问题并且很久没有更新。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。

nginx做为HTTP服务器,有以下几项基本特性:

处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.

无缓存的反向代理加速,简单的负载均衡和容错.

FastCGI,简单的负载均衡和容错.

模块化的结构。包括gzipping, byte ranges, chunkedresponses,以及 SSI-filterfilter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。

Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率。它支持内核ePoll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。

Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就稳定性而言,nginxlighthttpd更胜一筹。

Nginx支持热部署。它的启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。

ab的使用

[root@localhostbin]# ab -n 10 -c 10 http://opslinux.com/

意思是这样的:

-n表示发送多少个请求,

-c表示一次发送多少个(实际上就是把-n分批发送),

后面跟地址,注意后的斜杠。

返回信息如下(红色部分为我的注释):

This isApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarkinghttp://www.yi1.com.cm/ (be patient)…..done
Server Software:        Apache/2.2.4
Server Hostname:        
http://opslinux.com/
Server Port:           80

DocumentPath:          /
Document Length:        31848 bytes

ConcurrencyLevel:      10
Time taken for tests:   1.722254 seconds/*
测试持续时间*/
Complete requests:      10/*
完成请求数量*/
Failed requests:        0/*
失败请求数量*/
Write errors:           0
Total transferred:      323490 bytes/*
总流量*/
HTML transferred:       318480 bytes/*HTML
传输量*/
Requests per second:    5.81 [#/sec] (mean)/*
每秒事务数*/
Time per request:       1722.254 [ms] (mean)/*
平均响应时间*/
Time per request:       172.225 [ms] (mean,across all concurrent requests)/*
每个请求响应时间(平均)*/
Transfer rate:          182.90[Kbytes/sec] received/*
传输效率*/

ConnectionTimes (ms)
min  mean[+/-sd] median   max
Connect:      165  166  1.2    167     168
Processing:  1300 1418  91.5   1427    1554
Waiting:      803  925 92.9    929    1064
Total:       1465 1585  92.2  1595    1721

Percentage ofthe requests served within a certain time (ms)
50%   1595/*50%
的请求响应时间小于1595*/
66%   1620/*66%
的请求响应时间小于1620*/
75%   1668
80%   1706
90%   1721
95%   1721
98%   1721
99%   1721
100%   1721 (longest request)/*
最长响应时间1721*/

 

编译安装过程优化

在编译Nginx时,默认以debug模式进行,而在debug模式下会插入很多跟踪和ASSERT之类的信息,编译完成后,一个Nginx要有好几兆字节。在编译前取消Nginxdebug模式,编译完成后Nginx只有几百千字节,因此可以在编译之前,修改相关源码,取消debug模式,具体方法如下:Nginx源码文件被解压后,找到源码目录下的auto/cc/gcc文件,在其中找到如下几行:

# debug

CFLAGS=”$CFLAGS -g”

注释掉或删除

为特定的CPU指定CPU类型编译优化

在编译Nginx时,默认的GCC编译参数是“-O”,要优化GCC编译,可以使用以下两个参数:

--with-cc-opt='-O3'

--with-cpu-opt=CPU  #为特定的 CPU 编译,有效的值包括:pentium,pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64

要确定CPU类型,可以通过如下命令:

[root@localhost home]#cat /proc/cpuinfo | grep "modelname"

利用TCMalloc优化Nginx的性能

TCMalloc的全称为Thread-Caching Malloc,是谷歌开发的开源工具“google-perftools”中的一个成员。与标准的glibc库的malloc相比,TCMalloc库在内存分配效率和速度上要高很多,这在很大程度上提高了服务器在高并发情况下的性能,从而降低系统负载。下面简单介绍如何为Nginx添加TCMalloc库支持。要安装TCMalloc库,需要安装libunwind32位操作系统不需要安装)和google-perftools两个软件包,libunwind库为基于64CPU和操作系统的程序提供了基本函数调用链和函数调用寄存器功能。下面介绍利用TCMalloc优化Nginx的具体操作过程:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值