nginx0.7.xphp5.2.9(fastcgi)搭建胜过apache十倍的web服务器

上传人:xiao****1972 文档编号:84085151 上传时间:2019-03-02 格式:DOC 页数:25 大小:241.35KB
返回 下载 相关 举报
nginx0.7.xphp5.2.9(fastcgi)搭建胜过apache十倍的web服务器_第1页
第1页 / 共25页
nginx0.7.xphp5.2.9(fastcgi)搭建胜过apache十倍的web服务器_第2页
第2页 / 共25页
nginx0.7.xphp5.2.9(fastcgi)搭建胜过apache十倍的web服务器_第3页
第3页 / 共25页
nginx0.7.xphp5.2.9(fastcgi)搭建胜过apache十倍的web服务器_第4页
第4页 / 共25页
nginx0.7.xphp5.2.9(fastcgi)搭建胜过apache十倍的web服务器_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《nginx0.7.xphp5.2.9(fastcgi)搭建胜过apache十倍的web服务器》由会员分享,可在线阅读,更多相关《nginx0.7.xphp5.2.9(fastcgi)搭建胜过apache十倍的web服务器(25页珍藏版)》请在金锄头文库上搜索。

1、Nginx 0.7.x + PHP 5.2.9(FastCGI)搭建胜过Apache十倍的Web服务器(第5版)前言:本文是我撰写的关于搭建“Nginx + PHP(FastCGI)”Web服务器的第5篇文章。本系列文章作为国内最早详细介绍 Nginx + PHP 安装、配置、使用的资料之一,为推动 Nginx 在国内的发展产生了积极的作用。这是一篇关于Nginx 0.7.x系列版本的文章,安装、配置方式与第4篇文章相差不大,但增加了MySQL安装配置的信息、PHP 5.2.10 的 php-fpm 补丁。Nginx 0.7.x系列版本虽然为开发版,但在很多大型网站的生产环境中已经使用。链接:

2、2007年9月的第1版、2007年12月的第2版、2008年6月的第3版、2008年8月的第4版Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,其中包括新浪博客、新浪播客、网易新闻等门户网站频道,六间房、等视频分享网站,Dis

3、cuz!官方论坛、水木社区等知名论坛,豆瓣、YUPOO相册、海内SNS、迅雷在线等新兴Web 2.0网站。Nginx 的官方中文维基:http:/wiki.nginx.org/NginxChs在高并发连接的情况下,Nginx是Apache服务器不错的替代品。Nginx同时也可以作为7层负载均衡服务器来使用。根据我的测试结果,Nginx 0.7.61 + PHP 5.2.10 (FastCGI) 可以承受3万以上的并发连接数,相当于同等环境下Apache的10倍。根据我的经验,4GB内存的服务器+Apache(prefork模式)一般只能处理3000个并发连接,因为它们将占用3GB以上的内存,还

4、得为系统预留1GB的内存。我曾经就有两台Apache服务器,因为在配置文件中设置的MaxClients为4000,当Apache并发连接数达到3800时,导致服务器内存和Swap空间用满而崩溃。而这台 Nginx 0.7.61 + PHP 5.2.10 (FastCGI) 服务器在3万并发连接下,开启的10个Nginx进程消耗150M内存(15M*10=150M),开启的64个php-cgi进程消耗1280M内存(20M*64=1280M),加上系统自身消耗的内存,总共消耗不到2GB内存。如果服务器内存较小,完全可以只开启25个php-cgi进程,这样php-cgi消耗的总内存数才500M。在

5、3万并发连接下,访问Nginx 0.7.61 + PHP 5.2.10 (FastCGI) 服务器的PHP程序,仍然速度飞快。下图为Nginx的状态监控页面,显示的活动连接数为28457(关于Nginx的监控页配置,会在本文接下来所给出的Nginx配置文件中写明):我生产环境下的两台Nginx + PHP5(FastCGI)服务器,跑多个一般复杂的纯PHP动态程序,单台Nginx + PHP5(FastCGI)服务器跑PHP动态程序的处理能力已经超过“700次请求/秒”,相当于每天可以承受6000万(700*60*60*24=60480000)的访问量(更多信息见此),而服务器的系统负载也不高

6、:下面是用100个并发连接分别去压生产环境中同一负载均衡器VIP下、提供相同服务的两台服务器,一台为Nginx,另一台为Apache,Nginx每秒处理的请求数是Apache的两倍多,Nginx服务器的系统负载、CPU使用率远低于Apache:你可以将连接数开到1000030000,去压Nginx和Apache上的phpinfo.php,这是用浏览器访问Nginx上的phpinfo.php一切正常,而访问Apache服务器的phpinfo.php,则是该页无法显示。4G内存的服务器,即使再优化,Apache也很难在“webbench -c 30000 -t 60 http:/xxx.xxx.x

7、xx.xxx/phpinfo.php”的压力情况下正常访问,而调整参数优化后的Nginx可以。webbench 下载地址:http:/ 做压力测试时,该软件自身也会消耗CPU和内存资源,为了测试准确,请将 webbench 安装在别的服务器上。测试结果:# Nginx + PHP #引用rootlocalhost webbench-1.5# webbench -c 100 -t 30 http:/192.168.1.21/phpinfo.phpWebbench - Simple Web Benchmark 1.5Copyright (c) Radim Kolar 1997-2004, GPL

8、Open Source Software.Benchmarking: GET http:/192.168.1.21/phpinfo.php100 clients, running 30 sec.Speed=102450 pages/min, 16490596 bytes/sec.Requests: 51225 susceed, 0 failed.top - 14:06:13 up 27 days,2:25,2 users,load average: 14.57, 9.89, 6.51Tasks: 287 total, 4 running, 283 sleeping, 0 stopped, 0

9、zombieCpu(s): 49.9% us,6.7% sy,0.0% ni, 41.4% id,1.1% wa,0.1% hi,0.8% siMem: 6230016k total,2959468k used,3270548k free, 635992k buffersSwap:2031608k total, 3696k used,2027912k free,1231444k cached测试结果:#Apache + PHP #引用rootlocalhost webbench-1.5# webbench -c 100 -t 30 http:/192.168.1.27/phpinfo.phpW

10、ebbench - Simple Web Benchmark 1.5Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.Benchmarking: GET http:/192.168.1.27/phpinfo.php100 clients, running 30 sec.Speed=42184 pages/min, 31512914 bytes/sec.Requests: 21092 susceed, 0 failed.top - 14:06:20 up 27 days,2:13,2 users,load average:

11、 62.15, 26.36, 13.42Tasks: 318 total, 7 running, 310 sleeping, 0 stopped, 1 zombieCpu(s): 80.4% us, 10.6% sy,0.0% ni,7.9% id,0.1% wa,0.1% hi,0.9% siMem: 6230016k total,3075948k used,3154068k free, 379896k buffersSwap:2031608k total,12592k used,2019016k free,1117868k cached为什么Nginx的性能要比Apache高得多?这得益于

12、Nginx使用了最新的epoll(Linux 2.6内核)和kqueue(freebsd)网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached都采用的是epoll网络I/O模型。处理大量的连接的读写,Apache所采用的select网络I/O模型非常低效。下面用一个比喻来解析Apache采用的select模型和Nginx采用的epoll模型进行之间的区别:假设你在大学读书,住的宿舍楼有很多间房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友挨个房间去找,直到找到你为止。而epoll版宿管大妈会先记下每位同

13、学的房间号,你的朋友来时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满大楼找人。如果来了10000个人,都要找自己住这栋楼的同学时,select版和epoll版宿管大妈,谁的效率更高,不言自明。同理,在高并发服务器中,轮询I/O是最耗时间的操作之一,select和epoll的性能谁的性能更高,同样十分明了。安装步骤:(系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 5.3,另在RedHat AS4上也安装成功)一、获取相关开源程序:1、【适用CentOS操作系统】利用CentOS Linux系统自带的yum命令安装、升级所需的程序库(RedHat等

14、其他Linux发行版可从安装光盘中找到这些程序库的RPM包,进行安装):sudo -sLANG=Cyum -y install gcc gcc-c+ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-

15、devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers2、【适用RedHat操作系统】RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包(事先可通过类似“rpm -qa | grep libjpeg”的命令查看所需的RPM包是否存在,通常是“xxx-devel”不存在,需要安装)。RedHat可以直接利用CentOS的RPM包安装,以下是RPM包下载网址:、RedHat AS4 & CentOS 4http:/

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号